初级会员
- 积分
- 189
- 金钱
- 189
- 注册时间
- 2015-3-14
- 在线时间
- 33 小时
|
如大家所知:CAN2.0B 中规定了标准格式和扩展格式两种帧类型,
typedef struct
{
uint32_t tx_sfid; /*!< standard format frame identifier */
uint32_t tx_efid; /*!< extended format frame identifier */
uint8_t tx_ff; /*!< format of frame, standard or extended format */
uint8_t tx_ft; /*!< type of frame, data or remote */
uint8_t tx_dlen; /*!< data length */
uint8_t tx_data[8]; /*!< transmit data */
}can_trasnmit_message_struct;
CAN 结构体中分别定义了标准格式和扩展格式,而且网上很多CAN例程都是像下面:
can_struct_para_init(CAN_TX_MESSAGE_STRUCT, &transmit_message); // 初始化发送信息
transmit_message.tx_sfid = 0x321;
transmit_message.tx_efid = 0x01;
transmit_message.tx_ft = CAN_FT_DATA;
transmit_message.tx_ff = CAN_FF_STANDARD;//标准帧
transmit_message.tx_dlen = 1;
memcpy(transmit_message.tx_data,Test_data,1); // 把接收数据拷贝到发送结构体 赋值
采用的标准格式,但把标准ID和扩展ID都赋值了, 我就有点疑惑,如果我采用扩展格式,比如:我的ID的29bit,采用扩展格式,是否需要手动把这个29bit拆分成一个11bit的标准ID,一个18bit的扩展ID,同时给参数赋值? 然后接受端分布把标准ID和扩展ID,按照需要格式合并到一起?谢谢
|
|