OpenEdv-开源电子网

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

有关CAN的ID配置有关问题,有配置清楚的请指点下,谢谢啊!!

[复制链接]

28

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2014-1-14
在线时间
3 小时
发表于 2014-2-17 13:49:43 | 显示全部楼层 |阅读模式
        

 U16 std_id =0x7e9;  //标准ID

    U32 ext_id =0x1800f001; //扩展ID
    u16 mask=0;
    mask =(std_id<<18);

 mask ^=ext_id;//将对齐后的标准CAN与扩展CAN异或后取反  

mask =~mask;  

 mask <<=3;//再整体左移3  

 mask |=0x02; //只接收数据帧,不接收远程帧  

        CAN_FilterInitStructure.CAN_FilterIdHigh=(ext_id<<3) >>16) &0xffff;                 //32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=(U16)(ext_id<<3) | CAN_ID_EXT;;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=(mask>>16)&0xffff;
CAN_FilterInitStructure.CAN_FilterMaskIdLow=mask&0xffff;   
如下疑问:
                   1,CAN的ID设置根据什么有关,为何可以设置为
0x7e9,0x1800f001(网上查找的别人的设置)。
           2,CAN的标识符屏蔽位设置,有理解的比较清楚地吗?望能指点一二。
还有我看例程上的设置如下
        CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;                 //32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000; 

两者的区别有大神了解吗?请指点。




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

使用道具 举报

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
发表于 2014-2-17 14:46:57 | 显示全部楼层
回复【楼主位】玉落彼岸:
---------------------------------
我也看过can通信,看网上的例程都是设置为0,也就是完全无条件过去,你只需在接收机那里验证一下你接收到的信息对不对就可以了
回复 支持 反对

使用道具 举报

28

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2014-1-14
在线时间
3 小时
 楼主| 发表于 2014-2-17 14:53:11 | 显示全部楼层
回复【2楼】雪雪:
---------------------------------
谢谢指点!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-5 14:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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