Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagecpp
linenumberstrue
#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
languagecpp
linenumberstrue
#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:

...