一个CAN节点接入总线后,滤波不使能的情况下,总线上所有CAN数据帧都能被接收。若仅需接收一个固定范围ID的数据帧,可以通过配置屏蔽码和验收码,从而对数据帧进行过滤处理。数据帧在CAN总线上传输时,CAN节点通过验收滤波器来对比总线上的数据帧的ID与本节点的ID是否一致,若ID一致,CAN控制器才允许将已接收信息存入对应的寄存器中;ID不一致,该数据帧会被丢弃以此减轻CAN控制器的工作量。验收滤波器是由验收代码寄存器(ACR)和验收屏蔽寄存器 (AMR)共同组成。用户通过配置验收屏蔽寄存器和验收代码寄存器,进而得出对应的屏蔽码和验收码对CAN数据帧进行过滤处理。本文以SJA1000为例进行说明,其滤波方式分为单滤波和双滤波两种。由模式寄存器AFM位控制,AFM=1时为单滤波;AFM=0时为双滤波。
双滤波双滤波模式下,定义了两个验收滤波器,接收的数据帧只要通过其中一个验收滤波器,就被认定为有效帧,即能被正常接收并存入寄存器中。ACR0、ACR1和AMR0、AMR1组成第一个验收滤波器,ACR2、ACR3和AMR2、AMR3组成第二个验收滤波器。以接收CAN拓展帧为例,该数据帧的ID段的前两个字节,即29位ID中的高16位参与滤波。ACR0和ACR1控制ID位为No.13-No.28,ACR2和ACR3也控制ID位为No.13-No.28,如表1所示。这意味着该CAN拓展帧ID位No.13-No.28这16位要与这两组验收代码中的其中一组一致才能被该节点正常接收并存入接收缓存区;否则该数据帧会被丢弃,这样达到了两次滤波的效果。表1 AMR、ACR和控制ID位对应表 单滤波
单滤波模式下,所有AMR为“0”的位所对应的ACR位和参与单滤波数据对应的位需要一致才能被认定为验收滤波通过,如表2所示。接收CAN标准帧时,11位ID、RTR位和DATA段前16位都参与滤波;接收CAN拓展帧时,29位ID和RTR位参与滤波,如图1所示。表2 AMR、ACR和滤波ID对应表
图1 CAN标准帧和CAN拓展帧的帧格式示意图
CSM330A
我司的隔离SPI/UART转CAN芯片CSM330A并未采用单滤波或者双滤波的方式进行接收滤波。CSM330A的验收滤波器是由1个验收屏蔽寄存器和6个验收代码寄存器组成,用户可以通过配置一组屏蔽码“管理”6组验收码。当屏蔽码某位值为 1 时,则该位对应的验收码会被“使能”,被“使能”的“验收码”和产品要接收的 CAN 帧的“帧 ID”相同,该 CAN 帧才会被接收到接收缓冲区。当“屏蔽码”的位值为 0 时,验收码不起作用,相应位的帧标识为任何值都可被接收,如表3所示。
表3 滤波、屏蔽码真值表
产品应用
CSM330A适用于工业通讯、电池检测、充电桩、轨道交通、楼宇自动化等领域。CSM330A协议转换芯片应用在智能汽车司机行为监测的应用方案,如图2所示。ZLG面向DMS行业客户主要提供主控、供电、通讯防护等的模块化方案。主控方面为Cortex-A35 M1808 AI核心板,搭载自研图像传感技术搭配出车载行为检测系统解决方案。可实现驾驶员身份识别,对司机异常操作发出警报和提醒等功能。图2 司机行为检测应用方案
全部0条评论
快来发表一下你的评论吧 !