一种汽车CAN总线网关的报文接收和发送方法

2018-06-12 08:00马建辉胡代荣郭坤
现代电子技术 2018年11期
关键词:CAN总线低功耗网关

马建辉 胡代荣 郭坤

摘 要: 提出并验证了一种汽车CAN总线网关的报文接收和发送方法。以软件缓冲区配合CAN控制器的硬件缓冲区,设计软件缓冲区管理任务,通过与硬件缓冲区的联动能够实时地接收报文,保证报文不丢失。同时,在CAN控制器硬件缓冲区未满时及时将报文发送到总线上,不漏发报文,也不影响周期报文的周期准确性。

关键词: BCM; 低功耗; RKE; CAN总线; 网关; 报文

中图分类号: TN915.05?34 文献标识码: A 文章编号: 1004?373X(2018)11?0005?03

A messages receiving and transmitting method of automotive CAN bus gateway

MA Jianhui1, 2, 3, HU Dairong1, 2, 3, GUO Kun1, 2, 3

(1. Qilu University of Technology (Shandong Academy of Sciences), Jinan 250353, China;

2. Institute of Automation, Shandong Academy of Sciences, Jinan 250014, China;

3. Shandong Key Laboratory of Automotive Electronics Technology, Jinan 250014, China)

Abstract: A massage receiving and transmitting method of automotive CAN bus gateway is proposed and verified. The management tasks of the software buffer were designed to make the software buffer match up the hardware buffer of the CAN controller. The interaction of software buffer with the hardware buffer can realize the real?time message receiving, and ensure the message not to be lost. At the same time, the message is timely sent to the bus before the hardware buffer of CAN controller is completely filled up, which can send all the messages without missing, and maintain the periodic accuracy of periodic messages.

Keywords: BCM; low?power consumption; BKE; CAN bus; gateway; massage

0 引 言

随着汽车电子部件的增多和智能化程度的提高,CAN总线系统已经成为汽车的重要组成部分。根据功能划分、拓扑结构设计和实时性的不同要求,汽车一般会设计多个CAN网络。CAN网络之间的信息交互由网关实现,网关包括多个CAN接口,接入不同的CAN网络,实现报文的接收和转发[1]。在所有的CAN网络节点中,从报文接收和发送的角度看,网关的负荷是最高的。CAN网络采用非破坏性仲裁方式竞争总线,任一节点可以在任意时刻向总线发送数据,连接多个CAN网络的网关可能会在较短的时间内接收到大量报文,并需要在短时间内转发大量需要路由的报文。进行周期报文的转发时,根据不同汽车厂家的要求,报文周期一般需要保证在规定值的±10%以内,这对网关的实时性、准确性都提出了较高的要求。

出于成本节约和集成化的要求,汽车电子零部件采用MCU内部的CAN控制器结合物理层芯片实现CAN总线通信[2]。由于低成本MCU的内部CAN控制器的硬件接收缓冲区和硬件发送缓冲区很小,当CAN网络上短时间内出现大量报文时,如果未能及时读取硬件接收缓冲区中的数据并清零标志位,便无法接收新的报文;当CAN网关短时间内需要转发大量报文时,如果硬件发送缓冲区已满,但仍存在需要发送的报文时,如果未能及时转发报文,可能会造成漏发报文或者周期不准确的错误[3]。如果选用CAN控制器硬件接收缓冲区和硬件发送缓冲区都比较大的MCU,会增加成本,影响经济效益和社会效益。

为此,本文提出并验证了一种汽车CAN总线网关的报文接收和发送方法[4],能够实时地接收报文,保证报文不丢失,同时在CAN控制器硬件缓冲区未满时及时将报文发送到总线上,不漏发报文,也不影响周期报文的周期准确性。

1 整体方案设计

针对CAN报文的接收和发送,分别定义软件接收缓冲区和软件发送缓冲区,并创建缓冲区管理任务。缓冲区为结构体数组形式的环形队列[5],结构体成员包括报文ID、报文长度和报文数据,数组长度根据CAN网络矩阵表、网关报文周期和网络负载率进行设置,保证在CAN网络正常通信的情况下,不会出现缓冲区溢出的情形[6]。软件缓冲区数组元素通过索引进行寻址,接收数组和发送数组各包括存入索引和取出索引。将索引加1时,如果索引值等于数组长度,将索引值置零。

以中断方式接收CAN网络报文[7],在CAN控制器接收中断服务程序中,将CAN控制器硬件接收缓冲区中的数据存入由接收数组存入索引寻址的接收缓冲区位置,向缓冲区管理任务发送“接收到新报文”的信号,同时,将存入索引加1,如果存入索引值等于数组长度,将存入索引值置零。

当应用需要发送报文时,首先通过CAN控制器的寄存器判断硬件发送缓冲区是否已满,如果未满,将待发送报文填充到硬件发送缓冲区,CAN控制器自动完成报文发送任务[8];如果已满,将待发送报文存入由发送数组存入索引标记的软件发送缓冲区位置,将存入索引加1,同时开启CAN报文发送中断。如果存入索引值等于数组长度,将存入索引值置零。

CAN控制器成功发送报文后,触发报文发送中断,在CAN报文发送中断服务程序中向缓冲区管理任务发送“硬件发送缓冲区未满”信号。

在缓冲区管理任务中,如果接收到的信号是“接收到新報文”,进入软件接收缓冲区管理子任务;如果接收到的信号是“硬件发送缓冲区未满”,进入软件发送缓冲区管理子任务。

整体工作流程如图1所示。

2 软件缓冲区管理

由于网关报文众多且硬件缓冲区资源有限,为了保证网关不丢失任何报文并实现报文周期的准确性,可以采用配置各个CAN节点的报文发送时段的方法,它能够避免因多个节点同时发送报文导致总线竞争以及报文过于密集的现象,该方法能够改善总线报文在时间轴上的分布[9],降低对CAN控制器硬件缓冲区的要求,但是这种方法需要分析总线波特率、网络内所有报文的优先级和周期,不仅需要每个CAN节点都实现这种方法,而且灵活性很差,一旦由于网络拓扑的改变增加或减少了某个节点,便会影响整个设计。

基于此,本方法采用软件缓冲区的方式[10],采用中断方式触发报文软件缓冲区管理任务,如图2所示,报文接收中断,表明硬件接收缓冲区存在待解析的报文,触发软件接收缓冲区管理子任务,报文发送中断,表明硬件发送缓冲区未满,可以进行报文发送,触发软件发送缓冲区管理子任务。采用这种方法,当网络拓扑发生改变或者增减CAN网络报文时,不必修改本方法的设计,灵活性很高,而且以实时中断的方式触发报文缓冲区管理任务,能够保证数据的一致性和报文周期的准确性。

此外,针对及时转发报文的要求,如果采用周期性扫描数据缓冲区的方法判断是否有需要发送的数据包,在很多情况下,由于不存在需要发送的数据包,这时仍然进行周期性扫描,会白白浪费嵌入式系统宝贵的计算资源。另外,如果设置的扫描周期时间较长,会造成需要转发的短周期报文不满足周期准确性要求,如果设置的扫描周期时间较短,会加大系统负荷。因此,本方法采用中断方式触发报文缓冲区管理任务,能够保证数据的一致性和报文周期的准确性。

2.1 软件接收缓冲区管理

首先,通过比较接收数组的存入索引和取出索引,判断是否存在待处理报文。如果存入索引和取出索引相等,表示不存在待处理的报文,直接退出软件接收缓冲区管理子任务;如果两者不相等,表示存在待处理的报文。读取接收数组中由取出索引标记的元素,根据报文ID、长度和数据进行相应处理,然后将取出索引加1,如果取出索引值等于数组长度,将取出索引置零。再次判断存入索引是否等于取出索引,循环这个过程,直至处理完所有未被处理的报文。流程图如图3所示。

2.2 软件发送缓冲区管理

首先,通过比较发送数组的存入索引和取出索引,判断是否存在待发送报文。两者相等表示不存在未被发送的报文,关闭报文发送中断,退出软件发送缓冲区管理子任务;如果两者不相等,首先,通过CAN控制器寄存器判断硬件发送缓冲区是否已满,如果已满,直接退出软件发送缓冲区管理子任务。如果未满,读取发送数组中由取出索引标记的元素,将报文ID、长度和数据赋值到CAN控制器硬件发送缓冲区对应的寄存器,然后将取出索引加1,如果取出索引值等于数组长度,将取出索引值置零。再次比较发送数组的存入索引和取出索引,直到退出软件发送缓冲区管理子任务。软件发送缓冲区管理流程图如图4所示。

3 结 语

本文提出的方法采用CAN控制器硬件缓冲区较小的MCU进行网关设计,降低了汽车零部件的成本,提高了社会效益。而且,本方法可以适用于普通的CAN节点,具有很强的通用性。

参考文献

[1] 王渝卉,郝矿荣,丁永生,等.车载CAN网关实时性分析与改进[J].机电工程,2012,29(8):873?876.

WANG Yuhui, HAO Kuangrong, DING Yongsheng, et al. Real?time analysis and optimization of vehicle CAN?CAN gateway [J]. Journal of mechanical & electrical engineering, 2012, 29(8): 873?876.

[2] 刘侃,满庆丰.基于MC9S12HY64的电动车仪表盘设计[J].仪表技术与传感器,2014(12):22?24.

LIU Kan, MAN Qingfeng. Dashboard design for electric cars based on MC9S12HY64 [J]. Instrument technique and sensor, 2014(12): 22?24.

[3] 冯源,豆海利,赵刚.基于S12X系列双核单片机的CAN网关设计[J].计算机测量与控制,2016,24(1):191?195.

FENG Yuan, DOU Haili, ZHAO Gang. Design of CAN bus gateway based on S12 series dual?core MCU [J]. Computer measurement & control, 2016, 24(1): 191?195.

[4] 山东省科学院自动化研究所.一种汽车CAN总线网关的报文接收和发送方法:中国,201611178709.6 [P].2016?12?19.

Institute of Automation, Shandong Academy of Sciences. A method for receiving and transmitting messages of an automotive CAN bus gateway: China, 201611178709.6 [P]. 2016?12?19.

[5] 程安宇,何川,冯辉宗,等.基于SAE J1939协议的双缓冲区网关设计[J].计算机应用,2010,30(z1):15?17.

CHENG Anyu, HE Chuan, FENG Huizong, et al. Design of gateway with double buffer based on SAE J1939 [J]. Journal of computer applications, 2010, 30(S1): 15?17.

[6] 赵公旗,冯宝存,赵红玉,等.浅谈车载总线负载对网络传输影响及优化[J].汽车电器,2015(12):22?24.

ZHAO Gongqi, FENG Baocun, ZHAO Hongyu, et al. Influence of vehicle busload on network transmission and its optimization [J]. Auto electric parts, 2015(12): 22?24.

[7] 谢晓兵,董筠,周新发,等.CAN總线并发通信时下位机应用软件设计[J].空间控制技术与应用,2015,41(2):51?56.

XIE Xiaobing, DONG Jun, ZHOU Xinfa, et al. Design for communication of CAN bus of lower application software in concurrent communication [J]. Aerospace control and application, 2015, 41(2): 51?56.

[8] 孙新安.CAN控制器的软件编程[J].有色金属加工,2017,46(5):61?66.

SUN Xinan. CAN controller software programming [J]. Non?ferrous metals processing, 2017, 46(5): 61?66.

[9] 刘宇,宋桂秋.时间参数为非正态分布的CAN总线数据传输可靠性分析[J].机械与电子,2014(11):16?20.

LIU Yu, SONG Guiqiu. Analysis of non?normal distribution time parameters data transmission reliability in CAN bus [J]. Achinery & electronics, 2014(11): 16?20.

[10] 张哲宇,王义.汽车CAN?FlexRay总线网关研究与设计[J].贵州大学学报(自然科学版),2017,34(5):93?99.

ZHANG Zheyu, WANG Yi. Research and design of automotive CAN?FlexRay bus gateway [J]. Journal of Guizhou University (natural science), 2017, 34(5): 93?99.

猜你喜欢
CAN总线低功耗网关
一种高速低功耗比较器设计
论网络通信技术
CAN总线通信技术在电梯监控系统中的应用
基于CANoe的J1939协议在ECU通信中的应用
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
一种实时高效的伺服控制网关设计
基于Zigbee与TCP的物联网网关设计
ADI推出三款超低功耗多通道ADC
IDT针对下一代无线通信推出低功耗IQ调制器