文档库 最新最全的文档下载
当前位置:文档库 › CAN数据帧验收屏蔽码设置(最终版本)

CAN数据帧验收屏蔽码设置(最终版本)

CAN数据帧验收屏蔽码设置(最终版本)

CAN数据帧验收屏蔽码设置

1.滤波原理

SJA1000滤波器由4个验收代码寄存器和4个屏蔽代码寄存器组成,分别为ACR0,ACR1,ACR2, ACR3,AMR0, AMR1,AMR2,AMR3。其中每个寄存器都为一个字节。

单滤波是指只有一个由4个验收码寄存器和4个验收屏蔽码寄存器组成的验收滤波器,总线上的信息只有通过了它的验收滤波,才予以接收。对于单滤波情况下的标准帧而言,验收屏蔽寄存器的设置如下图所示:ACR0与AMR0对应ID.10~ ID.3,ACR1与AMR1中的高四位对应ID.2、ID.0、ID.0、RTR位。数据帧中RTR 为0。ACR1与AMR1中的低四位未使用,即均为零。

ACR2、ACR3与AMR2、AMR3对应数据区域的前两个字节,由于本程序中不需要将数据区域的数据进行滤波,将AMR2、AMR3均设为1即可。

图2 标准帧报文的单滤波器设置

验收规则如下:

((ID.10~ID.0)同或(ACR.10~ACR.0))或(AMR.10~AMR.0)=11111111111B。

注意实际上ID后面还有RTR位参与滤波,两个数据字节由于AMR2、AMR3的设置被屏蔽掉。

例如:

如上表所示,验收码高11位与ID各对应位相同,才能接收到此ID数据帧。如ID号为00010110000,则验收码ACR0和ACR1的高三位也为00010110000。ACR1和A M R1的低四位为保留位,均为0。注意RTR位为0,表示数据帧。这样,验收码在二进制形式下为0001 0110 0000 0000 0000 0000 0000 0000。

屏蔽码的后两个字节共16均为1,即可屏蔽掉数据区域DB1,DB2滤波。验收码在十六进制下为0x16000000,屏蔽码为0x0000ffff,ID为0x0b0。

相关文档