CAN(Controller Area NetWork)总线,即操控器局域网总线,是由德国Bosch公司于1982年开发和推出的最早用于轿车内部丈量与履行部件之间的数据通讯协议。在20多年的前史中,CAN总线在许多范畴得到了使用,是到目前为止仅有有世界规范的现场总线。
CAN现场总线依照世界规范化安排ISO提出的开放系统互联(OSI)参阅形式,完成其间的物理层、数据链路层和使用层。CAN操控器用来完成CAN总线协议。CAN操控器芯片分为两类:一类是独立的操控器芯片,如SJA1000;另一类是和微操控器做在一同,如Philips公司的LPC2000系列32位ARM微操控器。两类操控器都供给了报文标识过滤的检验滤波器。但独立CAN操控器的检验滤 波器只能对规律性较强的报文标识符(Identifier,简称ID)进行挑选过滤,或是对个数较少的ID进行恣意挑选,难以完成愈加杂乱的恣意ID筛 选。Philips公司的LPC2000系列32位ARM微操控器内嵌的检验滤波器为CAN操控器供给了大局的标识符查询功用,能完成杂乱的报文ID过 滤,并且可以大大减轻微操控器的担负。
1检验滤波器的特色和功用
1.1检验滤波器的特色
LPC2000 系列ARM微操控器是选用ARM7TDMI-S内核的32位嵌入式微处理器,内嵌2路或4路CAN操控器和检验滤波器。检验滤波器为CAN操控器供给大局 的报文标识过滤功用。它包含一个512×32(2 KB)的RAM,在这2 KB的RAM中可以设置1~5个报文标识符表,构成一个查找表LUT(LookUp Table)。整个查找表可以包容1 024个规范标识符或512个扩展标识符,或两种混合类型的标识符。5个或许的标识符表格包含FullCAN的规范标识符表和独立规范标识符表、规范标识 符规模表、独立扩展标识符表以及扩展标识符规模表。这5个表格不是有必要一起存在,可以依据需求削减。假如一个表格的开始地址等于下一个表格的开始地址或表 格停止寄存器的数值,则该表格为空,在处理中将被疏忽。
1.2检验滤波器的功用
LPC2000系列ARM微操控器的CAN 检验滤波器有2种作业形式:一种是一般形式;另一种被称为FullCAN形式。在一般形式下,当CAN操控器的接纳端收到一个完好的标识符时,它将通 知接纳检验滤波器。检验滤波器呼应这个信号,读出CAN操控器编号和标识符巨细(规范标识符11位或扩展标识符29位);然后查找LUT,查找匹配的标识 符。假如找到匹配的标识符,则告诉CAN操控器将接纳的报文放入CAN操控器接纳缓冲中;不然,抛弃接纳到的这一帧信息。其作业流程如图1所示。
2.1 检验滤波器寄存器描绘
以LPC2292为例阐明其检验滤波 器驱动程序的开发。在LPC2292中内嵌2路CAN操控器,它的检验滤波器寄存器如表1所列。留意:这儿的开始地址是以检验滤波器RAM的开始地址为基 本地址的偏移。如在一般形式下,SFF_sa=O表明独立规范帧标识符的开始地址坐落0xE0038000处。
一个表格的巨细由其前后2个 表格开始地址寄存器的差值决议。例如,SFF_GRP_sa-SFF_sa为独立规范帧标识符查找表格巨细。若其值为0,即 SFF_GRP_sa=SFF_sa,则独立规范帧标识符查找表格巨细为0,在查找时此表格将被疏忽。查找表完毕寄存器ENDofTable代表查找表结 束地址,ENDofTable-EFF_GRP_sa为扩展帧组标识符查找表巨细。检验滤波器寄存器AFMR操控其作业形式,详细界说如表2所列。
①FullCAN的规范标识符表和独立规范标识符表。
要留意的是,每个FullCAN的规范标识符表和独立规范标识符表都有必要按升序摆放,即标识符1大于标识符O;不然,在AF中将引起表格过错而使接纳过滤失利。表格格局如下:
③独立扩展标识符表。1个独立扩展标识符占1个字,并且需求按升序摆放。表格格局如下:
2.3检验滤波器驱动程序的规划
依据以上阐明,就可以规划检验滤波器的驱动程序了。以LPC2292为例来阐明怎么规划驱动程序。
假 定独立规范标识符有ID0和ID1两个,顺次按升序摆放,组规范帧标识符规模为ID2~ID3(ID2ID3);独立扩展帧标识符有ID4和 ID5两个,升序摆放,组扩展帧标识符规模为ID6~ID7(ID6ID7)。限于篇幅,这儿只以少数ID为例。规范和扩展的独立ID的个数可以 增减;规范和扩展的帧ID规模组个数也可依据需求增减,比方可以有2个或2个以上的规范帧ID规模组。
3 定论
LPC2000系列ARM微操控器的CAN检验滤波器可以有效地屏蔽总线上不答应经过的报文,大大减轻了CPU的担负,在以CAN总线为通讯网络的使用中发挥了很大的效果。