ZHCAF59 March   2025 MSPM0G3507

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 CAN 和 UART 之间的桥接器
  5. 2实施
    1. 2.1 原理
    2. 2.2 结构
  6. 3软件说明
    1. 3.1 软件功能
    2. 3.2 可配置参数
    3. 3.3 定制元素结构
    4. 3.4 FIFO 的结构
    5. 3.5 UART 接收和传输(透明传输)
    6. 3.6 UART 接收和传输(协议传输)
    7. 3.7 CAN 接收和传输
    8. 3.8 应用集成
  7. 4硬件
  8. 5应用程序方面
    1. 5.1 灵活的结构
    2. 5.2 CAN 的可选配置
    3. 5.3 CAN 总线多节点通信示例
  9. 6总结
  10. 7参考资料

可配置参数

所有可配置参数都在 user_define.h 中定义,这些参数在可配置参数中列出。

对于 UART,此示例同时支持透明传输和协议传输。可以通过定义 UART_TRANSPARENT 或 UART_PROTOCOL 来切换这些函数。

在透明传输中,用户可以配置超时来检测一条 UART 消息接收是否完成。

在协议传输中,用户可以为不同格式配置 ID 长度。请注意,有一个固定的 2 字节报头 (0×55 0×AA) 和 1 字节数据长度。若要更详细地修改格式,用户可能需要直接修改代码。

#define UART_TRANSPARENT
#ifdef UART_TRANSPARENT
/* The format of Uart:
     * Transparent transmission - Data1 Data2 ...*/
#define UART_TIMEOUT  (0x4000)      //timeout 250ms
#else
#define UART_PROTOCOL
/* The format of Uart:
     * if UART_ID_LENGTH = 4, format is 55 AA ID1 ID2 ID3 ID4 Length Data1 Data2 ...
     * if UART_ID_LENGTH = 1, format is 55 AA ID Length Data1 Data2 ...
     * if UART_ID_LENGTH = 0, format is 55 AA Length Data1 Data2 ...*/
//#define UART_ID_LENGTH  (0)
//#define UART_ID_LENGTH  (1)
#define UART_ID_LENGTH  (4)
#endif

对于 CAN,ID 和数据长度包含在 CAN 帧中。用户可以通过更改 CAN_ID_LENGTH 在数据区域中添加另一个 ID。(默认值为 0)。

/* The format of CAN:
     * if CAN_ID_LENGTH = 4, format is ID1 ID2 ID3 ID4 Data1 Data2 ...
     * if CAN_ID_LENGTH = 1, format is ID Data1 Data2 ...
     * if CAN_ID_LENGTH = 0, format is Data1 Data2 ...*/
#define CAN_ID_LENGTH  (0)
//#define CAN_ID_LENGTH  (1)
//#define CAN_ID_LENGTH  (4)

表 3-2 可配置参数
参数 可选值 说明
#define UART_TRANSPARENT 定义/未定义 启用 UART 透明传输。
#define UART_PROTOCOL 定义/未定义 启用 UART 协议传输。
#define UART_TIMEOUT (0x4000) 超时 = UART_TIMEOUT/32768s 超时表示一条 UART 消息接收完成。仅在定义了 UART_TRANSPARENT 时可用。在本例中,默认值为 250ms。
#define UART_ID_LENGTH (4) 0/1/4 可选 UART ID 长度,与协议中的 ID 区域相关。仅在定义了 UART_PROTOCOL 时可用。在本例中,默认值为四字节。
#define CAN_ID_LENGTH (0) 0/1/4 可选 CAN ID 长度,与协议中的 ID 区域相关。在本例中,默认值为 0 字节。
#define TRANSMIT_DATA_LENGTH (12) <=64 数据区域的大小。如果接收到的消息包含的数据多于此值,可能会发生数据丢失。
#define C2U_FIFO_SIZE (8) CAN 到 Uart 的 FIFO 大小。请注意 SRAM 的用法。
#define U2C_FIFO_SIZE (8) Uart 到 CAN 的 FIFO 大小。请注意 SRAM 的用法。
#define DEFAULT_UART_ORIGIN_ID (0x00) UART 原始 ID 的默认值
#define DEFAULT_UART_DESTINATION_ID (0x00) UART 目标 ID 的默认值
#define DEFAULT_CAN_ORIGIN_ID (0x00) CAN 原始 ID 的默认值
#define DEFAULT_CAN_DESTINATION_ID (0x00) CAN 目标 ID 的默认值