ZHCAF63 June 2024 MSPM0G3507
所有可配置参数都在 user_define.h 中定义,如 表 3-3 中所列。
对于 I2C,此示例中同时支持透明传输和协议传输,通过定义 I2C_TRANSPARENT 或 I2C_PROTOCOL 进行切换。
在透明传输中,用户可以为从 I2C 从机传输到 I2C 主机的消息配置默认数据长度 (I2C_TRANSPARENT_LENGTH)。表 3-2 列出了在不同模式下接收或发送的字节数。
在协议传输中,用户可以为不同格式配置 ID 长度。请注意,有一个固定的 2 字节标头 (0x55 0xAA) 和 1 个字节的数据长度。若要更详细地修改格式,用户可以直接修改代码。
#define I2C_TRANSPARENT
#ifdef I2C_TRANSPARENT
/* The format of I2C:
* Transparent transmission - Data1 Data2 ...*/
/* data length for I2C master receiving or I2C slave transmitting*/
#define I2C_TRANSPARENT_LENGTH (8)
#else
/* The format of I2C:
* if I2C_ID_LENGTH = 4, format is 55 AA ID1 ID2 ID3 ID4 Length Data1 Data2 ...
* if I2C_ID_LENGTH = 1, format is 55 AA ID Length Data1 Data2 ...
* if I2C_ID_LENGTH = 0, format is 55 AA Length Data1 Data2 ...*/
//#define I2C_ID_LENGTH (0)
//#define I2C_ID_LENGTH (1)
#define I2C_ID_LENGTH (4)
#endif
/* default address for I2C master receiving */
#define I2C_TARGET_ADDRESS (0x48)
| 参数 | I2C 接口:主机 | I2C 接口:从器件 | ||
|---|---|---|---|---|
| 接收到多少字节? | 发送了多少字节? | 接收到多少字节? | 发送了多少字节? | |
| 协议传输 | (2+I2C_ID_LENGT+1+Length) 字节 | (2+I2C_ID_LENGT+1+Length) 字节 | (2+I2C_ID_LENGT+1+Length) 字节 | (2+I2C_ID_LENGT+1+Length) 字节 |
| 透明传输 | (I2C_TRANSPARENT_LENGTH) 字节 | (Length) 字节 | I2C 停止中断标识消息结束 | (I2C_TRANSPARENT_LENGTH) 字节 |
对于 CAN,CAN 帧中包含 ID 或数据长度。用户可以通过更改 CAN_ID_LENGTH(默认值为 1)来在数据区域中添加另一个 ID。在本示例中,我们为 I2C 地址添加了一个单字节 ID。
/* 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)
| 参数 | 可选值 | 说明 |
|---|---|---|
| #define I2C_TRANSPARENT | 定义/未定义 | 启用 I2C 透明传输。 |
| #define I2C_PROTOCOL | 定义/未定义 | 启用 I2C 协议传输。 |
| #defineI2C_TRANSPARENT_LENGTH (8) | 从 I2C 从机传输到 I2C 主机之消息的默认数据长度。仅在定义了 I2C_TRANSPARENT 时可用。在本例中,默认值为八个字节。 | |
| #define I2C_TARGET_ADDRESS (0x48) | 从 I2C 从机传输到 I2C 主机之消息的默认 I2C 从机地址。在本例中,默认值为 0x48 | |
| #define I2C_ID_LENGTH (4) | 0/1/4 | 可选 I2C ID 长度,与协议中的 ID 区域相关。仅在定义了 I2C_PROTOCOL 时可用。在本例中,默认值为四个字节。 |
| #define CAN_ID_LENGTH (0) | 0/1/4 | 可选 CAN ID 长度,与协议中的 ID 区域相关。在本例中,默认值为一个字节 |
| #define TRANSMIT_DATA_LENGTH (12) | <=64 | 数据区域的大小。如果接收到的消息包含的数据多于此值,会导致数据丢失 |
| #define C2I_FIFO_SIZE (8) | CAN 到 I2C FIFO 的大小。请注意 SRAM 的使用量。 | |
| #define ItoC_FIFO_SIZE (8) | I2C 到 CAN FIFO 的大小。请注意 SRAM 的使用量。 | |
| #define DEFAULT_I2C_ORIGIN_ID (0x00) | I2C 源 ID 的默认值 | |
| #define DEFAULT_I2C_DESTINATION_ID (0x00) | I2C 目标 ID 的默认值 | |
| #define DEFAULT_CAN_ORIGIN_ID (0x00) | CAN 源 ID 的默认值 | |
| #define DEFAULT_CAN_DESTINATION_ID (0x48) | CAN 目标 ID 的默认值 |