STM32 CAN过滤器设计与实现的学习记录
发布时间
阅读量:
阅读量
最近查阅了STM32 CAN通讯中标识符过滤器的配置,发现其中存在诸多需要注意的细节。尤其是在使用ST库函数时,若过滤器处于屏蔽模式,并将屏蔽位设置为1,意味着对应标识符的每一位都必须完全匹配才能通过,这一点需要格外谨慎。
以一个实例来说明:假设过滤器长度为32位,工作模式为屏蔽模式,若要发送的标识符为0x1314,则其二进制表示为:0000 0000 0000 0000 0001 0011 0001 0100。
一、当过滤器完全无效时,所有接收到的标识符均可通过。
CAN_Filter寄存器内容:xxxx xxxx xxxxxxxx xxxx xxxx xxxx xxxx
CAN_FilterMask寄存器内容:0000 0000 0000 0011 1111 1111 1111 111
由于此时CAN_FilterMask寄存器的所有位均为零,表示对所有位都不关心。因此接收的数据ID(即标识符)无需与CAN_Filter寄存器中的任何一位进行匹配。
二、当过滤器完全有效时,则需根据MASK寄存器中指定的位进行比较。
部分匹配情况:
CAN_Filter寄存器内容:xxxx xxxx xxxxxxxx xxxx xxxxxxxx xxxx
CAN_FilterMask寄存器内容:xxx x x x x x x x x xx xx xx xx xx xx
全部评论 (0)
还没有任何评论哟~
