Custom_Element 结构在 user_define.h 中定义,图 2-5 所示就是此结构。
源标识符用于指示消息的来源。以下是示例 (CAN_ID_LENGTH =1, I2C_ID_LENGTH =4)。
- 示例 1 - CAN 接口接收和传输
- 当 CAN-I2C 桥接器接收到 CAN 消息时,来自 CAN 帧的 ID 是源标识符,指示消息来自何处。
- 当 CAN-I2C 桥接器传输 CAN 消息时,源标识符是 CAN 中的 1 字节 ID(CAN_ID_LENGTH 默认设置为 1),指示消息来自何处。
- 示例 2 - I2C 接口接收和传输(I2C 协议传输)
- 当 CAN-I2C 桥接器接收到 I2C 消息(I2C 协议传输)时,如果 I2C 用作主机,则 I2C_TARGET_ADDRESS 是源标识符,指示消息来自何处。如果 I2C 用作从机,而 I2C 主机没有地址,则 DEFAULT_I2C_ORIGIN_ID 为源标识符。
- 当 CAN-I2C 桥接器传输 I2C 消息(I2C 协议传输)时,源标识符是 I2C 数据中的 4 字节 ID(I2C _ID_LENGTH 默认设置为 4),指示消息来自何处。
- 示例 3 - I2C 接口接收和传输(I2C 透明传输)
- 当 CAN-I2C 桥接器接收到 I2C 消息(I2C 透明传输)时,如果 I2C 用作主机,则 I2C_TARGET_ADDRESS 是源标识符,指示消息来自何处。如果 I2C 用作从机,并且 I2C 主机没有地址,则 DEFAULT_I2C_ORIGIN_ID 为源标识符。
- 当 CAN-I2C 桥接器传输 I2C 消息(I2C 透明传输)时,源标识符将被忽略(透明传输没有 ID 区域)。
目标标识符指示消息的目标地址。以下是示例 (CAN_ID_LENGTH =1, I2C_ID_LENGTH =4)。
- 示例 1 - CAN 接口接收和传输
- 当 CAN-I2C 桥接器接收到 CAN 消息时,来自 CAN 数据区域的 1 字节 ID(CAN_ID_LENGTH 默认设置为 1)是目标标识符,指示消息的目标地址(I2C 地址)。
- 当 CAN-I2C 桥接器传输 CAN 消息时,目标标识符是 CAN 帧中的 CAN ID。在此示例中,11 位和 29 位均受支持。
- 示例 2 - I2C 接口接收和传输(I2C 协议传输)
- 当 CAN-I2C 桥接器接收到 I2C 消息(I2C 协议传输)时,来自 I2C 数据的 4 字节 ID 是目标标识符(I2C_ID_LENGTH 默认设置为 4)。CAN 传输需要 ID 信息。
- 当 CAN-I2C 桥接器传输 I2C 消息(I2C 协议传输)时,如果 I2C 用作主机,则目标标识符是 I2C 地址。如果 I2C 用作从机,则目标标识符将被忽略。(使用 IO 触发主机来生成消息。)
- 示例 3 - I2C 接口接收和传输(I2C 透明传输)
- 当 CAN-I2C 桥接器接收到 I2C 消息(I2C 透明传输)时,DEFAULT_I2C_DESTINATION_ID 是目标标识符。(透明传输没有 ID 区域)。CAN 传输需要 ID 信息。
- 当 CAN-I2C 桥接器传输 I2C 消息(I2C 透明传输)时,如果 I2C 用作主机,则目标标识符是 I2C 地址。如果 I2C 用作从机,则目标标识符将被忽略(使用 IO 触发主机来传输消息)。
/*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;