SLAAEN4 March   2025 MSPM0G1106 , MSPM0G1107 , MSPM0G1506 , MSPM0G1507 , MSPM0G1518 , MSPM0G1519 , MSPM0G3106 , MSPM0G3106-Q1 , MSPM0G3107 , MSPM0G3107-Q1 , MSPM0G3506 , MSPM0G3506-Q1 , MSPM0G3507 , MSPM0G3507-Q1 , MSPM0G3518 , MSPM0G3518-Q1 , MSPM0G3519 , MSPM0G3519-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Bridge Between CAN and UART
  5. 2Implementation
    1. 2.1 Principle
    2. 2.2 Structure
  6. 3Software Description
    1. 3.1 Software Functionality
    2. 3.2 Configurable Parameters
    3. 3.3 Structure of Custom Element
    4. 3.4 Structure of FIFO
    5. 3.5 UART Receive and Transmit (Transparent Transmission)
    6. 3.6 UART Receive and Transmit (Protocol Transmission)
    7. 3.7 CAN Receive and Transmit
    8. 3.8 Application Integration
  7. 4Hardware
  8. 5Application Aspects
    1. 5.1 Flexible structure
    2. 5.2 Optional Configuration for CAN
    3. 5.3 CAN Bus Multi-Node Communication Example
  9. 6Summary
  10. 7References

Structure of FIFO

Custom_FIFO is the structure defined in user_define.h. This is also shown in Figure 2-5.

typedef struct {
    uint16_t fifo_in;
    uint16_t fifo_out;
    uint16_t fifo_count;
    Custom_Element *fifo_pointer;
} Custom_FIFO;

gCan2Uart_FIFO and gUart2Can_FIFO are defined in main.c. Please note the usage of SRAM, which is related to C2U_FIFO_SIZE, U2C_FIFO_SIZE and the size for Custom_Element.

/* Variables for C2U_FIFO
 * C2U_FIFO is used to temporarily store message from CAN to UART */
Custom_Element gC2U_FIFO[C2U_FIFO_SIZE];
Custom_FIFO gCan2Uart_FIFO = {0, 0, 0, gC2U_FIFO};

/* Variables for U2C_FIFO
 * U2C_FIFO is used to temporarily store message from UART to CAN */
Custom_Element gU2C_FIFO[U2C_FIFO_SIZE];
Custom_FIFO gUart2Can_FIFO = {0, 0, 0, gU2C_FIFO};