关于CAN过滤器掩码模式与屏蔽位模式的疑问

2019-07-20 08:08发布

  • CAN过滤器标识符掩码模式,我们希望收到的映像为什么是(STID+EXTID+IDE+RTR)?而不是将STID移到[31..21]| EXID移到[20..4] | IDE移到[3]| ITE移到[2] | RTR移到[1] | 0 ?
  • 关于标识符列表模式能不能举个例子?《在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符相同》因为使用2个标识符寄存器,而我们收到的映像(STID+EXTID+IDE+RTR)是跟ID1(CAN_FxR1)还是是跟ID2(CAN_FxR2)比较?或者怎么跟ID1/ID2同时比较?



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
吹水唔抹嘴
2019-07-20 16:45
本帖最后由 吹水唔抹嘴 于 2018-5-18 10:59 编辑

花了一天调通CAN 通信,只不过当时不明白掩码模式与标识符列表模式的原理,就不知道究竟标准ID StdID,扩展ID ExtId,如何设置才合理。然后再花了一天半的时间去尝试验证自己理解的标准ID StdID,扩展ID ExtId的设置方法究竟对不对?而原子库函数开发指南一书中:标识符掩码模式举的例子,期望ID的计算方法=(STDID+EXTID+IDE+ RTR+````)描述得不太对,容易让人误入歧途。标识符列表模式没有举例,也不太理解。最终仔细地看了CAN_Transmit函数的定义才终于理解,并得出下面这么一张图。如有不对,还请指正。这图只是针对32位的,16位的还是未能理解·········

一周热门 更多>