APP下载

一种集成式汽车BCM的设计与实现

2019-03-22马建辉王知学侯冬冬

汽车电器 2019年2期
关键词:集成式防盗报文

马建辉 , 王知学 , 侯冬冬 , 郭 坤

(1.山东省科学院自动化研究所,山东 济南 250014;2.山东省汽车电子重点实验室,山东 济南 250014)

近年来,中国汽车产销量已经超过美国,跃居世界第一。作为一种大批量生产和销售的产品,溢价率不高的国产汽车对成本的要求非常苛刻。对于成本敏感的低端汽车而言,集中式控制能更好地控制成本,而对于有一定功能升级要求的中高端汽车,采用分布式系统便于功能的扩展和升级。目前,汽车厂商一般会针对汽车配置级别采用不同的方案,对某一车系的低配,采用集中度更高的车身控制器;对于高配,则把车身控制器的部分功能以独立节点的形式实现,节点和车身控制器之间采用CAN总线或LIN总线进行通信。

目前,随着CAN总线技术的成熟、汽车MCU规格的升级以及汽车电子系统拓扑结构的优化,将汽车电子系统中分布在多个汽车电子零部件上的功能集成到一个汽车电子零部件产品中[1],既可以有效地降低成本,又可以利用MCU的高规格特性,方便地进行功能扩展和升级,从而能够同时满足低配车型和高配车型的需要。

笔者根据这种思路,为某车型开发了一款集成式BCM,将CAN网关、CAN-LIN网关、车身控制、防盗报警、IMMO、TPMS、RKE、软件升级等功能集成在单个零部件中。这种方式可以简化汽车车身电气系统的拓扑结构[2],降低车身系统的电子零部件数量,同时可以降低成本,也可以在需要时通过CAN总线进行功能升级。

1 硬件设计

1.1 MCU选型

集成式BCM需要实现CAN/LIN通信和车身控制等多项功能,采用普通的16位单片机无法满足设计要求。飞思卡尔专门针对集成式车身控制应用控制器单元设计了一款高性能32位单片机MPC5604B[3],总线时钟高达64 MHz,具有主频高、资源丰富、功耗低等优点。该MCU内置512 KB程序Flash、64 KB数据Flash、48 KB RAM,既能满足当前功能要求,又为未来的功能升级准备了充分的资源,所以本设计采用MPC5604B做为集成式BCM的主控制器。

1.2 系统结构

基于MPC5604B实现的BCM系统结构如图1所示,BCM连接两路CAN网络,分别为车身CAN网 (BCAN)和动力CAN网 (PCAN),汽车的车身系统和信息娱乐系统共享BCAN,动力系统和底盘控制系统共享PCAN,BCM作为BCAN和PCAN之间的网关,将接收自BCAN的报文路由至PCAN,将接收自PCAN的报文路由至BCAN。同时,BCM是车身LIN网的主节点,管理车身LIN网的调度通信和休眠。BCM接收TPMS发射器的报文,提取出胎压和温度数据,通过CAN总线发送给仪表盘显示。接收遥控钥匙的报文,提取键值进行RKE操作。同时,BCM集成了IMMO基站,可以和钥匙进行认证,检测钥匙的合法性,BCM和发动机管理单元进行防盗认证[4],认证通过后发动机才可以正常起动。

图1 BCM系统结构图

2 软件设计

2.1 软件架构设计

不同车型的BCM在原理和系统结构上基本一致,只是在功能组合或具体功能的实现上存在一定差异。基于层次化和模块化的思想,设计了通用、共性的车身控制软件结构及可配置、可组装的基础模块,基于该软件结构及基础模块库,可以针对不同车型的BCM研发相应的车身控制器软件,从而提高BCM的软件可靠性,降低开发复杂度。软件架构如图2所示,分为底层驱动、中间层、应用层3大部分[5]。

2.1.1 底层驱动

图2 软件架构图

底层驱动包括用于输入检测和输出控制的I/O、用于系统定时的PIT、用于负载工作电流检测的ADC、用于CAN通信的FlexCAN、用于LIN通信的LINFlex、用于RKE信号捕捉的eMIOS以及用于数据存储的Data Flash。

2.1.2 中间层

中间层包括定时器管理、开关检测、RKE解析、TPMS解析、IMMO基站管理、CAN通信和LIN通信。其中,定时器管理提供单次定时、周期定时和多次定时3种方式[6];开关检测实现消抖,提供开关状态、开关闭合事件、开关断开事件;RKE解析实现接收RKE报文并解析出遥控钥匙按键键值;TPMS解析实现接收TPMS报文并解析出胎压和温度数据;IMMO基站管理实现与钥匙Transponder的交互;CAN通信实现CAN报文的接收和发送;LIN通信实现LIN报文的接收和发送。

2.1.3 应用层

应用层包括车身控制任务、CAN网络管理、LIN网络管理、CAN网关、CAN-LIN网关、车身防盗报警、发动机防盗、学习和低功耗管理。其中,车身控制实现车灯控制、门锁控制、雨刷控制、车窗控制;CAN网络管理实现CAN网络的休眠和唤醒;LIN网络管理实现LIN网络调度和休眠管理;CAN网关实现BCAN和PCAN网络报文的路由;CANLIN网关实现CAN网络和LIN网络信号的路由;车身防盗报警实现安全防盗;发动机防盗实现与发动机的防盗认证;学习包括遥控钥匙学习、IMMO学习和发动机防盗匹配学习;低功耗管理实现BCM的休眠和唤醒[7]。

2.2 接口设计

为了降低成本,BCM采用中断捕捉原始数据位的方式接收遥控钥匙信号,钥匙按键按下期间,RF接收单元频繁触发中断,中断发生后,MCU会停止当前程序的运行,保存当前的机器状态,并调用相应的中断处理函数响应中断。如果采用操作系统,每次中断发生时,除了执行正常的处理函数之外,还需要执行任务切换、任务上下文存储和恢复,不仅会造成系统负载率迅速攀升,还可能造成中断嵌套,大量消耗有限的堆栈资源,导致堆栈溢出[8],从而引发异常或者死机。不仅如此,采用操作系统,需要为每个任务分配独立的任务堆栈[9],从而消耗有限的RAM资源。由于RAM资源的限制,以及为了保证系统的可靠性,本文所述BCM的软件接口设计借鉴了嵌入式操作系统中任务和消息队列的思想,采用了前后台的裸机方式。前台为应用层,采用任务+消息队列的方式实现;后台为底层驱动和中间层,以发送消息或者设置全局变量的方式与应用层进行交互。一方面,任务和消息队列的形式使得各个软件模块形成了统一约定的软件接口标准,保证了模块的独立性,同时又具备可扩展性,添加新功能不会破坏原有的软件结构和影响原有系统的行为;另一方面,裸机形式能够节约RAM资源,并以更快的速度处理各种中断。

消息的产生和消费是前后台通信机制的核心,每个应用层模块对应一个任务,任务与消息队列一一对应,消息队列的结构体定义如下:

typedef struct{

e_Signalmsg_id [DEFAULT_EVENTQ_SIZE];

e_TaskId task_id;

uint8_t tick_idx;

uint8_t talk_idx;

}s_MsgQ;

task_id对应具体的任务,tick_idx为消息产生索引,talk_idx为消息消费索引,消息内容存储在msg_id[DEFAULT_EVENTQ_SIZE]中。

2.3 BCM任务设计

集成式BCM需要完成的任务包括CAN网络管理、CAN报文解析及收发缓冲区管理、LIN主节点调度及报文解析、车灯控制、车窗控制、雨刮控制、门锁控制、RKE、发动机防盗、TPMS等任务,需要处理的消息主要有CAN报文接收、定时器、RKE报文接收、开关信号反馈、LIN报文接收等消息,下面以RKE任务为例,说明BCM任务的设计原理。

MCU以eMIOS模块捕捉RKE原始数据位,射频信号接收芯片MICRF211将遥控钥匙发送的调制信号解调为高低电平,送入MCU的eMIOS端口,触发输入捕捉中断,在捕捉中断服务程序中,MCU判断电平时长是否满足协议要求,过滤无用信号,然后将有效的位数据存储起来,根据协议定义的格式,将数据位转换成字节形式的数据,接收完一条完整的报文后,向RKE任务发送“接收到RKE报文”消息。

RKE任务对字节形式的遥控数据进行解码,首先对数据进行解密,判断序列号是否与已经学习的钥匙序列号匹配,如果不匹配,说明为无效钥匙[10]。如果钥匙匹配,判断同步计数器是否大于等于所存储的同步计数器,如果否,钥匙需要重新学习,如果是,提取按键值,向门锁控制任务发送解锁、闭锁消息,并根据遥控按键按下时间长短,向车窗控制任务发送遥控升降窗消息。

3 实际应用

该产品通过了汽车厂进行的CAN/LIN通信、网关、网络管理、诊断各项测试,通过了汽车厂8万公里路试,目前正在进行各种电磁兼容性试验、物理化学性能试验,该BCM硬件实物如图3所示。

4 结语

图3 BCM硬件

采用MPC5604B设计实现了一款集成式车身控制器BCM,针对BCM设计了通用、共性的车身控制嵌入式软件结构及可配置可组装的基础模块。基于该软件结构及基础模块库,可以针对不同车型的BCM研发相应的车身控制器软件,提高BCM的软件可靠性,降低开发复杂度。从处理器特性、系统结构方面描述了BCM的硬件设计,从软件架构设计、软件接口设计和BCM任务设计方面描述了BCM的软件设计。该BCM运行稳定可靠,具有很高的实用价值。下一步,笔者将在该BCM软件的基础上,实现耦合度更低、内聚度更高的通用模块,为将来开发类似的BCM提供可复用的软件IP。

猜你喜欢

集成式防盗报文
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
一种汽车燃油防盗报警装置
基于老年驾驶人的多模态集成式交互设计研究
基于Python的汽车CAN总线报文格式转换系统的设计与实现
基于报文类型的限速值动态调整
瑞萨电子的集成式驾驶舱技术是汽车智能驾驶舱不可或缺的解决方案
用元征诊断设备直连读取大众车防盗数据的方法
家有“恶”犬
剩女笔记