CAN总线验收滤波器设置方法研究
2012-08-22董庭琼刘志浩邵亚军
董庭琼 刘志浩 邵亚军
(中国人民解放军第二炮兵工程大学 陕西 西安 710025)
0 引言
CAN-bus(Controller Area Network)即控制器局域网是由德国Bosch公司为汽车应用而开发的多主机局部网络,主要应用于汽车的监测和控制。德国Bosch公司开发CAN总线的最初目的是为了解决汽车上数量众多的电子设备之间的通信问题,减少电子设备之间繁多的信号线。于是设计了一个单一的网络总线,使所有的外围器件可以被挂接在该总线上。作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,已被广泛应用到各个领域中。基于CAN总线的优越性和广泛应用,许多著名的芯片生产商都推出了独立的CAN控制器芯片,或者带有CAN控制器的MCU芯片。
图1 CAN控制器结构图
在CAN总线网络的设计过程中,滤波器的设置起着非常重要的作用,滤波器设置的好坏将直接影响整个系统的实时性和可靠性,所以本文针对CAN控制器中的滤波器的设置方法进行研究探讨,并根据自己的经验总结出一套滤波器设置的方法。
1 CAN控制器介绍
1.1 CAN控制工作原理
CAN控制器用于将欲收发的信息报文转换为符合CAN规范的CAN帧,通过CAN收发器在CAN总线上交换信息。CAN控制器主要包括接口管理逻辑、CAN核心模块、发送缓冲器、验收滤波器、接收FIFO等部分组成,如图1所示。
(1)接口管理逻辑
接口管理逻辑用于连接外部主控制器,解释来自主控制器的命令,控制CAN控制器寄存器的寻址,并向主控制器提供中断信息和状态信息。
(2)核心模块
核心模块在收到一个报文时会根据CAN规范将串行位流转换成用于接收的并行数据,发送一个报文时则相反。
(3)发送缓冲器
发送缓冲器用于存储一个完整的报文,当CAN控制器发送初始化时,接口管理逻辑会使CAN核心模块从发送缓冲器读CAN报文。
(4)验收滤波器
验收滤波器可以根据用户的编程设置,过滤掉无须接收的报文。
(5)接收 FIFO
接收FIFO是验收滤波器和主控制器之间的接口,用于存储从CAN总线上接收的所有报文。
(6)工作模式
CAN控制器可以有两种工作模式 (BasicCAN和Peli-CAN)。BasicCAN仅支持标准模式,PeliCAN支持CAN2.0B的标准模式和扩展模式。在SJA1000复位模式下,设置寄存器CDR.7为“0”,即设置CAN控制器SJA1000工作于BasicCAN模式;设置寄存器CDR.7为“1”,即设置CAN控制器SJA1000工作于PeliCAN模式,相比较而言,PeliCAN功能更强大一些。
1.2 CAN控制器分类
市场上有许多CAN控制器,大致可以分为两类:一类是独立的控制器芯片,如SAJ1000;另一类是和微控制器做在一起,如NXP半导体公司的Cortex-M0内核LPC11Cxx系列微控制器、LPC2000系列32位ARM微控制器。CAN控制器的大致分类及相应的产品如表4.1所示。
表1 CAN控制器分类及相应产品型号
PLILIPS公司的独立CAN处理器SJA1000是一种比较理想的选择,它是市场上比较受欢迎的一款芯片,SJA1000不仅与传统的CAN控制器PCA82C250硬件兼容,同时也实现了新的运行方式,支持具有新功能的CAN2.0B协议。另外,SJA1000T扩展出了64个字节的FIFO接收缓冲器,可以接收两个以上的报文,SJA1000T还为增强错误处理功能增强了一些新的特殊功能寄存器,包括:可读/写访问的错误计数器,可编程的错误告警极限,前次错误码寄存器,每次CAN总线错误均引起错误中断及借助位置细分的仲裁丢失中断。所有这些优点使得SJA1000成为了当前CAN总线应用中的主流器件。论文将以SJA1000作为研究对象进行分析总结。
2 滤波器的工作原理
CAN系统中,验收滤波器的设置非常重要,在CAN总线上,CAN帧信息由一个节点发送,其他节点同时接收,每当总线上有帧信息,节点都会把滤波器的设置和接收到得帧信息的标识码相比较,节点只接收符合一定条件的信息,对不符合条件的CAN帧不予接收。所以滤波器的设置如果设置合适,便可以提高整个系统的效率,减轻CAN控制器的信息处理量,否则便会影响系统。在SJA1000中,滤波器的设置主要是由4个验收码寄存器ACR0、ACR1、ACR2、ACR3和4个AMR0、AMR1、AMR2、AMR3 来实现的, 滤波方式有两种:单滤波器模式(AFM位是1)和双滤波器模式(AFM位是0)。
滤波的规则是:每一位验收屏蔽分别对应每一位验收代码,当该位验收屏蔽位为“1”的时候(即设为无关),接收的相应帧ID位无论是否和相应的验收代码位相同均会表示为接收;当验收屏蔽位为“0”的时候(即设为相关),只有相应的帧ID位和相应的验收代码位值相同的情况才会表示接收。只有在所有的位都表示为接收的时候,CAN控制器才会接收该报文。
3 滤波器的设置方法
滤波器的设置这个环节,大多数人通常没有具体的考虑,只是从实现功能的角度来完成滤波器的设置,没有进行优化设计,作者在滤波器的设置方面依据自己的经验总结出一种优化的设置方法,能够使滤波器的滤波速度提高几倍。
3.1 滤波器设置的常见方法
滤波器设置的方法与标识符的分配有关系,标识符分配非常灵活,但总结起来主要有两种,也是出于滤波器的考虑而进行的两种分配方法:源节点法和目标节点法。源节点法就是分配几个标识符作为报文发送地址;目标节点法就是分配几个标识符作为报文接收地址。因此滤波器的设置方法也分为两种:源设置法和目标设置法。
3.2 源设置法
源设置法是指标示符按照源节点法分配时,滤波器的设置方法。其主要思想是在进行滤波器设置时,首先要分析节点接收的报文主要来源于那些节点,而后再对这些节点的ID进行分析,找出其异同进而确定滤波器的验收码与屏蔽码的值。
表2 节点接收来源表
(1)分析节点接收信息来源
CAN总线网络系统中,每一个节点都有自己唯一的ID用来区分节点,ID是区分节点的唯一特殊符,首先必须对每个节点接收的报文来源进行总结。例如一个CAN总线系统中有六个节点,ID用四位标示符表示,其ID分别为0000、0001、0010、0011、0100、0101,每个节点接收的报文的来源表2所示。
(2)找出ID各位区别,确定验收码与屏蔽码
将节点报文的来源节点的ID与其他节点ID对比分析,由高位向地位的顺序,找出ID标示符每一位的异同,而后确定验收码与屏蔽码的值。例如上述系统中,节点0000接收的报文来自节点0010和节点0011,最高位都为0,后三位都有0和1,所以我们可以设置滤波器的验收码为x01x(x表示有设计者随意取值),屏蔽码为1001。
3.3 目标设置法
目标设置法是指标示符按照目标节点法分配时,滤波器的设置方法。其主要思想是在进行滤波器设置时,首先要分析系统中所有节点的数量,而后根据数量分配合适的标识符位数,最后以目标地址来确定滤波器的验收码与屏蔽码的值。
(1)分析系统节点数量,分配标识符
CAN总线网络系统中,目标地址标识符的分配要根据节点的数量来确定,不可多也不可少。例如当系统中有六个节点,则只分配三个标识符,节点 ID 分别为 000、001、010、011、100、101。
(2)根据ID确定验收码和屏蔽码
根据上面的系统的分配,各个节点的验收码分别确定为000、001、010、011、100、101,屏蔽码则都是 000。
4 总结
本文对CAN总线控制器的原理,滤波器的原理和滤波器的设置进行了讨论,总结出滤波器设置的两种方法,为今后的滤波器设置提供了借鉴,实验证明效果非常显著,但是本文总结的滤波器的设置方法只适合于点对点传输方式,对于点对多、广播等方式传播的设置方法还需要进一步的研究。
[1]饶运涛,邹继军,王进宏.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2007.
[2]牛跃听,周立功,方舟.CAN总线嵌入式开发[M].北京:北京航空航天大学出版社,2012.
[3]李光忠,吴士涛.基于CAN总线智能节点设计[J].微计算机信息,2009(26).
[4]王志兵.CAN总线技术应用中的有关问题探讨[J].工业控制计算机,2009(8).
[5]冯鹄.浅谈 CAN 总线的特点及应用[J].科技信息,2009(17).
[6]郝芸,段青亚.CAN 2.0 总线控制器的设计[J].小型微型计算机系统,2009(9).
[7]范玮,杨涛.CAN 总线在车身网络设计中的应用[J].电子质量,2009(8).
[8]阳宪惠.现场总线技术及其应用[M].北京,清华大学出版社,2008.