吴成加(安徽安凯汽车股份有限公司,合肥230051)
MSCAN通讯验收滤波器设计
吴成加
(安徽安凯汽车股份有限公司,合肥230051)
介绍MSCAN控制器及CAN滤波器的原理,应用于接收多帧CAN信息时MSCAN的验收码及屏蔽码的设置方法,并给出一个用于接收单帧或多帧信息时的验收码、屏蔽码设计实例,便于用户在设计时进行快速设置。
汽车电子;MSCAN;验收滤波器;屏蔽码
随着汽车电子化的提高和汽车CAN总线的普及,汽车电子控制单元的使用也越来越多。电子控制单元可以通过CAN总线网络获得更多的信息,来实现更加精确的控制,达到信息与资源的共享。网络接点的增加,同时也导致通讯信息量的增加。对于CAN发送节点,其发送的数据可以被网络中的所有节点接收;对于接收节点,它能接收总线上的所有CAN帧信息。各控制节点需要从众多的信息中,挑选自已所需的信息,对无用的信息进行剔除和信息过滤。要想只获得某些特定的信息,需要根据所接收的ID信息设置自身CAN控制器的验收和屏蔽码,实现信息过滤。可以通过对验收滤波器进行各种方式的设置,对标识符验收寄存器和标识符屏蔽寄存器进行修改,使CAN控制器通过滤波器来过滤掉不需要接收的CAN报文信息[1-3],有效地屏蔽总线上不允许通过的报文,大大减轻CPU的负担。本文介绍Freescale MSCAN控制器中CAN滤波及验收码的设置,并根据此原理设计出一个用于多帧信息接收时验收码、屏蔽码的实例,便于用户在设计过程中进行快速设置。
MSCAN控制器将需要接收或发送的报文转换为MSCAN格式的信息帧,通过CAN收发器实现信息交换。MSCAN控制器主要包含接收/发送引擎、报文过滤和缓冲器、CAN控制和状态寄存器等[4-5],如图1所示。
其工作原理是通过对控制寄存器、总线时钟的配置,设置CAN通讯的波特率、滤波器,使其工作在一定的频率下,当有总线报文传送到外部端口上时,数据会被送入到后台缓冲区。当与报文过滤器中的验收和屏蔽码相符时,数据会被接收,并产生一个接收中断请求,发送数据被送入缓冲区时,用户先对发送ID、数据长度及发送优先级进行配置。当启动发送标志位后,数据即被发送到总线上。
扩展帧与标准帧报文缓冲区的定义如图2和图3所示。由于标准帧的标识符只占11位,所以只占用IDR0~IDR4中的IDR0、IDR1字节,标准帧与扩展帧的报文收发缓冲区的其它部分含义相同。对于发送缓冲区来说,其缓冲区中的内容是可读可写的[6]。要实现CAN接收的滤波功能,用户需要对MSCAN中与滤波、验收有关的寄存器进行设置。MSCAN其它寄存器及设置因与本文所述重点无关,不再赘述。
CAN总线的帧数据在总线上传送时,由于数据是采用广播方式发送的,当一帧数据发送到总线上后,其它的CAN总线节点对这一帧信息都会作出响应、判断后进行处理。其它的CAN控制器是通过验收滤波来决定总线上的数据帧的ID是否和本节点相符。如果吻合,那么总线上的数据就被存入总线控制器的相应寄存器里,否则就抛弃该数据,从而也能够减轻总线控制器的工作量。也就是说,总线上数据帧的ID通过待接收节点的验收滤波后,与本节点需要接收的ID要求相吻合,才可以被接收。
2.1标识符验收控制寄存器
标识符验收控制寄存器的定义如图4所示,IDAM1-IDAM 0-Identifier AcceptanceM ode(标识符验收模式标志)处理器通过设置该位来定义标识符验收滤波模式,表1列出了不同验收模式的设置。
标识符验收控制寄存器的IDHIT2、IDHIT1、IDHIT0是标识符接收有效标志指示器,MSCAN设置这些标志来显示标识符接收有效标志。它指示出了当前哪个滤波器里有效。
表2给出了不同的标识符接收有效的指示[7]。在关闭滤波器的模式下,将不能接收报文。
表1 标识符接收模式设置
表2 标识符接收有效标志指示器
一次滤波器匹配可由接收缓冲器已满标志通知给应用软件,这些标识符匹配标志能够清晰识别引起接收的滤波寄存器,它简化了应用软件处理接收器中断来源的任务。当有两个或多个滤波器匹配时,低地址的寄存器具有优先权。
2.2标识符验收寄存器
AC7-AC0-AcceptanceCode Bits验收代码位,由用户定义的位顺序组成。通过这种方式,接收报文缓冲区中的标识符寄存器中的内容与验收代码相应的位进行比对,比较后的结果再与屏蔽寄存器中相应的位进行掩码屏蔽。只有当接收的报文中标识符与标识符验收寄存器中预定义的位值相等时,CAN控制器才会通知CPU去读取接收的报文,否则,当前报文将会被下一个报文覆盖。对于扩展帧,需要使用4个验收寄存器和4个屏蔽寄存器;对于标准帧,则各只占前两个。
2.3标识符屏蔽寄存器
AM7-AM0-AcceptanceMask Bits验收屏蔽位,用于指定验收代码寄器中有关位是否有效。当一个验收屏蔽位被清为0时,表明该位与对应的标识符寄存器必须和验收码寄存器中的相应位相同时才认为是匹配的。只有当所有位均匹配,报文才会被接收。当某验收屏蔽位被置为1时,验收代码寄存器中的内容则不影响报文的接收。对于11位标识符的标准帧,需要将屏蔽寄存器1的低3位定义成无关[8]。如图6所示。
MSCAN控制器可以设置为两个32位滤波器、四个16位滤波器或八个8位滤波器,各种信息在接收后被写入到后台接收缓冲区。只有当处理器达到标识符接收和标识符屏蔽寄存器中规定的标准时,处理器才会被通知读取信息,MSCAN的接收寄存器以逐位方式应用于滤波器的IDR0-IDR3寄存器。
3.1滤波器设置方法
CAN滤波器的设置方法与标识符的分配有很大关系。总线CAN节点的信息分为发送信息与接收信息,无论是在点对点、点对多,还是广播方式的接收过程中,在设置滤波器时,先要对将要接收的CAN标识符信息进行分析,将节点报文的ID进行对比,由高位向低位的顺序,找出其相同与不同位,来进行验收码与屏蔽码的设置。
如图7所示,CANIDAR0寄存器是验收代码寄存器,CANIDMR0是验收屏蔽寄存器。在32位滤波器中,CANIDAR0与IDR0相对应,CANIDAR0一般是需要与对应的IDR0相吻合的。如果CANIDMR0的相应位上设置为1时,ID的那一位数据可以不和CANIDMR0的相应位一样,也就是起到了屏蔽的作用。例如,如果CANIDAR0=0b00111101,CANIDMR0=0b00000000,那么要想通过验收滤波,必须ID.28-ID.21=CANIDAR0= 0b00111101。如果CANIDMR0=0b00000010,那么ID. 28-ID.21=0b00111111时,也可以通过验收滤波,因为此时CANIDMR0的第二位为1,也就是屏蔽了CANIDAR0的第二位。所以ID的相应位可以不和CANIDAR0一致。
3.2设计实例
由图2和图3可以看出,扩展标识符信息在缓冲区的位定义信息包含了一个远程请求信息SSR、扩展帧信息IDE,标准帧信息也包含了一个远程帧RTR和扩展格式位IDE。在进行信息配置时,需要将这些位按要求进行填充,以保证信息格式的正确[9]。
在扩展帧ID格式和标准帧ID格式中,由于CAN标识符寄存器中的IDRx在扩展帧中插入了SRR、IDE、RTR,在标准帧中插入了RTR、IDE及空位,在计算验收码和屏蔽码时,需要对这些位进行屏蔽处理。例如在进行单帧信息接收时,需要写入单帧信息验收码0x0cFF104A,屏蔽码0x00000000。通过对这些位进行处理后,则MSCAN验收码变成了0x67FE2094,MSCAN屏蔽码变为0x00180000。在实际应用中,可以通过一个子函数来实现信息格式转换。
当接收多帧信息时,也要按此方法进行处理,假如需要对0x0Cff2A41、0x0Cff2A42、0x0CFF2A4B、0x18FF2B 47、0x18FF2B48、0x18FF2B4A这6帧信息进行接收。由于其高位和低位不同,中间位相同,对其相同位可进行比对接收,对不同位进行忽略,这6帧信息的验收码应设为0x1CFF2B4F;屏蔽码需要对上述ID中不同位进行忽略、相同位进行比对,其屏蔽码可设为0x1400010F,其中0表示需要比对,1表示对该位不进行比对。将其按扩展标识符信息在缓冲区的位定义,添加SRR、IDE、RTR位,则验收码变为0xE7FE569E,屏蔽码为0x A018021E。验收码和屏蔽码确定后,便可以在MSCAN程序中对其进行实始化配置:
/*CAN模块初始化*/
void MSCAN_Init(void)
{
CANCTL0=0x01;/*初始化模式*/
while(CANCTL1_INITAK!=1);/*等待初始化模式INITRQ bit=1*/
CANCTL1=0xC0;/*使用总线时钟*/
CANBTR0=0x47;/*设置总线通讯速率250 kbit/s*/
CANBTR1=0x14;
CANIDAC=0x00;/*设置为两个32位滤波器*/
CANIDAR0=0x67;/*滤波器0,接受单帧信息*/
CANIDAR1=0xFE;
CANIDAR2=0x20;
CANIDAR3=0x94;
CANIDAR4=0xE7;/*滤波器1,接受多帧信息*/
CANIDAR5=0xFE;
CANIDAR6=0x56;
CANIDAR7=0x9E;
CANIDMR0=0x00;/*屏蔽码寄存器0*/
CANIDMR1=0x18;
CANIDMR2=0x00;
CANIDMR3=0x00;
CANIDMR4=0xA0;/*屏蔽码寄存器1*/
CANIDMR5=0x18;
CANIDMR6=0x02;
CANIDMR7=0x1E;
CANCTL0=0x00;/*退出初始化模式*/
while((CANCTL1&0x00)!=0);
CANRFLG=0xC3;/*复位接收标志位*/
CANRIER=0x29;/*使能CAN接收中断*/
}
本文介绍了FreescaleMSCAN控制器的CAN验收滤波器的原理及设置方法,对MSCAN控制器的工作原理、滤波器的原理及滤波器设置进行了分析,并通过实例设计了CAN控制模块的初始化和滤波器的配置,为MSCAN滤波器的设置提供了借鉴,提高了处理器系统的CAN信息的运行效率;MSCAN验收滤波器能够有效地屏蔽总线上不允许通过的报文,大大减轻了CPU的负担,在以CAN总线为通信网络的应用中发挥了很大的作用。
[1]饶运涛,邹继军,王进宏,等.现场总线CAN原理与应用技术[M].2版.北京:北京航空航天大学出版社,2007.
[2]阳宪惠.现场总线技术及其应用[M].2版.北京:清华大学出版社,2008.
[3]罗峰,孙泽昌.汽车CAN总线系统原理、设计与应用[M].北京:电子工业出版社,2010.1.
[4]张培仁.CAN总线设计及分布式控制[M].北京:清华大学出版社,2012.1.
[5]MC9S08DZ48,MC9S08DZ32,MC9S08DZ16-Data Sheet(REV 4)[Z].Freescale Com pany,2008 Jun.
[6]南金瑞,刘波澜,等.汽车单片机及车载总线技术[M].北京:北京理工大学出版社,2005.10.
[7]Using the S12XE Fam ily as a Development Platform for the S12XSFam ily[Z].Freescale Com pany,2007 Jul.
[8]MPC5534M icrocontroller-Reference M anual(REV 2.1)[Z]. Freescale Com pany,2012M ay.
[9]牛跃听,周立功,方丹,等.CAN总线嵌入式开发[M].北京:
Design on MSCANCommunication Acceptance Filter
Wu Chengjia
(AnhuiAnkaiAutomobile Co.,Ltd,Hefei230051,China)
The author introduces theprincipleofMSCAN controllerand the settingmethod ofacceptance filtersand shield codes forMSCAN when used in receivingmulti-frame CAN information.He also givesouta design example of the acceptance codesand shield codes for receiving single ormulti-frame information,so that the user can quickly setup in design.
automotiveelectronics;MSCAN;acceptance filter;shield code
U463.61
B
1006-3331(2015)04-0041-04
国家科技支撑计划课题(2014BAG06B00)
吴成加(1971-),男,工程师;研究方向:新能源汽车电驱动及控制系统核心零部件关键技术研究。