...
The Message Configuration below uses CAN Signals. Before CAN Messages can be used, each CAN signal must be configured accordingly. Signals allow the user to not worry about where a given signal if found within a CAN Frame, while containing different types of data. For more information about CAN Signals click Here.
Note:
- A CAN Signal can be defined without any CAN communication knowledge. No information about sending or receiving information is needed during configuration.
Code Block | ||||
---|---|---|---|---|
| ||||
#include "can_sig.h"
enum { [1] /* ---------------- SIGNAL ENUMERATIONS --------------- */
S_NODESTATUS = 0,
S_CPULOAD,
S_MAX,
};
const CANSIG_PARA CanSig[CANSIG_N] = { [2]
/* ---------------- SIGNAL NODESTATUS ----------------- */
{CANSIG_UNCHANGED, [3A] /* Initial Status */
1, [B] /* Width in Bytes */
0, [C] /* Initial Value */
#if (CANSIG_CALLBACK_EN > 0)
StatusChange}, [D] /* Callback Function: User Defined */
#else
},
#endif
/* ----------------- SIGNAL CPULOAD ------------------- */
{CANSIG_UNCHANGED, [3A] /* Initial Status */
1, [B] /* Width in Bytes */
0, [C] /* Initial Value */
#if (CANSIG_CALLBACK_EN > 0)
0} [D] /* No Callback */
#else
},
#endif
}; |
Message Configuration
The Message Configuration can be found in can_cfg.c
. However, the "Message Enumerations" are typically found in can_cfg.h
. Please note that CAN Signals must be configured prior to be used in CAN Messages. For more information on CAN Messages click Here.information on CAN Messages click Here.
Note:
- A CAN Message can be defined without any knowledge of the information generated and/or the usage of the payload. Only the mapping of the payload (and it's respective parts) must be known.
Code Block | ||||
---|---|---|---|---|
| ||||
#include "can_msg.h" enum { [1] /* --------------- MESSAGE ENUMERATIONS --------------- */ M_STATUS = 0, M_COMMAND, M_MAX }; const CANMSG_PARA CanMsg[CANMSG_N] = [2] { /* ------------------ MESSAGE STATUS ------------------ */ { 0x123L, [3A] /* CAN-Identifier */ CANMSG_TX, [B] /* Message Type */ 2, [C] /* DLC of Message */ 2, /* No. of Links */ { { S_NODESTATUS, [D] /* Signal ID */ 0 }, [E] /* Byte Position */ { S_CPULOAD, /* Signal ID */ 2 } /* Byte Position */ }, }, /* ----------------- MESSAGE COMMAND ------------------ */ { 0x122L, [4A] /* CAN-Identifier */ CANMSG_RX, [B] /* Message Type */ 1, [C] /* DLC of Message */ 1, /* No. of Links */ { { S_NODESTATUS, [D] /* Signal ID */ 0 } [E] /* Byte Position */ } } }; |
Notes:
...
Example
The information Nodestatus and CPU-Load shall be sent in a CAN frame called Status with the following definition:
...