OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5748|回复: 0

CAN通信中标准ID和扩展ID的设置

[复制链接]

7

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2015-3-14
在线时间
33 小时
发表于 2023-2-12 00:55:02 | 显示全部楼层 |阅读模式
如大家所知: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,按照需要格式合并到一起?谢谢


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 16:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表