在使用MCP2518FD时,需要多个标准帧接收,但是需要用到屏蔽器和过滤器,否则庞大的数据量会导致设备接收处理不过来。若使用接收中断(中断或查询方式),会导致设备工作异常。
程序处理环境:
1、需要接收多个id
2、自动计算屏蔽器赋值
---------------------------------------------------------------
原理讲解
MCP2518FD的(大多数的CAN芯片或者芯片内的CAN接收)接收数据,需要用到接收屏蔽和过滤器。
过滤器对象寄存器简而言之就是需要接收到的id。
屏蔽寄存器简而言之就是对过滤器对象寄存器哪些位必须对应,哪些无所谓。
例如1:
需要接收1个id - 0x50D
那么:
过滤对象寄存器 = 0x50D = 101 0000 1101
屏蔽寄存器 = 7FF = 111 1111 1111
得到的接收id的结果即为0x50D(两个寄存器配合接收id的规则为:屏蔽对象寄存器为1,则接收的id对应bit必须和过滤对象寄存器bit相同)。
上面屏蔽寄存器bit都为1,所以接收的id必须 = 过滤对象寄存器的值。
解释:
| 分析1 | ||
| 二进制 | ||
| 过滤对象寄存器 | 0x0000050D | 0000 0000 0000 0000 0000 0101 0000 1101 |
| 屏蔽寄存器 | 0x400007FF | 0100 0000 0000 0000 0000 0111 1111 1111 |
| 只看后11bit(后面的11bit为标准帧id) | ||
| 接收的id | 0x50D | 101 0000 1101 |
例如2:
根据上面规则,若是有多个id需要接收。
| 分析2 |

最低0.47元/天 解锁文章
3598

被折叠的 条评论
为什么被折叠?



