关于CAN总线节点接收过滤码的问题

2019-03-24 13:09发布

在配置CAN报文对象时会有关于节点接收过滤的设置
g_MsgObject.ulMsgID
g_MsgObject.ulMsgIDMask
g_MsgObject.ulFlags

对于11位的id, 例如从0x3F8 到0x3FF, 设置IDMask为0x3F8就可以实现过滤接收0x3F8 到0x3FF的id
 
可是问题是如何设置ulMsgID和ulMsgIDMask使CAN控制器只接收一组29位的ulMsgID(例如只接收从0x0f800000 到 0x0f87ffff的id)?

我试过用0x1fffffff做IDMask, 还是不能成功接收。

请大家赐教啊!  谢谢



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
永远的不知
2019-03-24 15:19
可以这样理解,ID掩码相应的位为1的情况下,该位就会参与仲裁,否则不参与仲裁。也就是说,如果配置时报文对象的ID掩码为1的位,接收到的报文的ID就会和你配置的报文对象存储器的ID比较如果ID掩码设置为0则不会关心。根据这个原则来配置你的接收报文的报文对象存储器的属性,相信你很容易就配置成功了。
还有一点就是如果CAN接收到一个报文,如果没有计算好ID和掩码,你想用2#报文对象存储器接收一个报文,但是1#报文对象存储器也能验证通过,这样2#报文对象存储器就不会收到报文了。

一周热门 更多>

相关问题

    相关文章