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参考资料

定制元素结构

Custom_Element 结构在 user_define.h 中定义。Custom_Element 也显示在 图 2-5 中。

来源标识符指示消息的来源。以下是示例(CAN_ID_LENGTH =0,UART_ID_LENGTH =4)。

  • 示例 1 - CAN 接口接收和传输
    • 当 CAN-UART 桥接器接收到 CAN 消息时,CAN 帧的 ID 是来源标识符,其指示消息的来源。
    • 当 CAN-UART 桥接器传输 CAN 消息时,将忽略来源标识符(CAN_ID_LENGTH 默认设置为 0)。
  • 示例 2 - UART 接口接收和传输(UART 协议传输)
    • 当 CAN-UART 桥接器接收到 UART 消息(UART 协议传输)时,由于 UART 没有 ID,DEFAULT_UART_ORIGIN_ID来源标识符
    • 当 CAN-UART 桥接器传输 UART 消息(UART 协议传输)时,UART 数据中的来源标识符 将是 4 字节 ID(UART_ID_LENGTH 默认设置为 4),其指示消息来源。
  • 示例 3 - UART 接口接收和传输(UART 透明传输)
    • 当 CAN-UART 桥接器接收到 UART 消息(UART 透明传输)时,由于 UART 没有 ID,DEFAULT_UART_ORIGIN_ID来源标识符
    • 当 CAN-UART 桥接器传输 UART 消息(UART 透明传输)时,将忽略来源标识符(透明传输没有 ID 区域)。

目标标识符 指示消息的目标。以下是示例(CAN_ID_LENGTH =0,UART_ID_LENGTH =4)。

  • 示例 1 - CAN 接口接收和传输
    • 当 CAN-UART 桥接器接收 CAN 消息时,由于 CAN_ID_LENGTH 默认设置为 0,DEFAULT_CAN_DESTINATION_ID 是目标标识符。UART 传输不需要 ID。
    • 当 CAN-UART 桥接器传输 CAN 消息时,目标标识符 将是 CAN 帧中的 CAN ID。在此示例中,11 位和 29 位均受支持。
  • 示例 2 - UART 接口接收和传输(UART 协议传输)
    • 当 CAN-UART 桥接器接收到 UART 消息(UART 协议传输)时,来自 UART 数据的 4 字节 ID 是目标标识符(UART_ID_LENGTH 默认设置为 4)。CAN 传输需要 ID 信息。
    • 当 CAN-UART 桥接器传输 UART 消息(UART 协议传输)时,由于 UART 传输不需要 ID,将忽略目标标识符
  • 示例 3 - UART 接口接收和传输(UART 透明传输)
    • 当 CAN-UART 桥接器接收 UART 消息(UART 透明传输)时,DEFAULT_UART_DESTINATION_ID 是目标标识符。(透明传输没有 ID 区域)。CAN 传输需要 ID 信息。
    • 当 CAN-UART 桥接器传输 UART 消息(UART 透明传输)时,由于 UART 传输不需要 ID,将忽略目标标识符
/*user-defined information storage structure */
typedef struct {
    /*! Origin Identifier, indicating the origin of the message */
    uint32_t origin_id;
    /*! Destination Identifier, indicating the destination of the message */
    uint32_t destination_id;
    /*! Data Length Code */
    uint8_t dlc;
    /*! Data bytes */
    uint8_t data[TRANSMIT_DATA_LENGTH];
} Custom_Element;