CANID-MCP2518FD屏蔽寄存器赋值(11bit,CAN2.0标准帧)

在使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值