黄继梅
(同济大学汽车学院 上海市 201804)
在科学技术高速发展和生活水平持续提高的当今社会,汽车已经逐渐成为了人们日常生活中较为常用的代步工具,人们也逐渐开始对汽车的舒适性、经济性、安全性等方面提出更高的需求,从而带动了汽车电子控制系统技术的快速发展,也使得汽车上的电子产品逐年增多,相应地,汽车静态电流也随电子产品的增多而增大。汽车静态电流由汽车上各个电子控制单元的静态电流组成,过大的静态电流可能导致车辆蓄电池亏电,静态电流越大则蓄电池的能量消耗越快,蓄电池作为车辆冷起动的唯一能量提供者,如果能量消耗过多则会导致无法正常起动车辆[1]。因此,合理管理电子控制单元的低功耗已经成为了一个重要研究方向,而低功耗管理的一个重要部分就是对电子控制模块的正常工作模式和低功耗工作模式进行合理切换,也就是常说的电子控制模块的唤醒模式与休眠模式之间的切换。本文以一种乘用车车身控制模块为例,介绍一种低功耗软件的实现方法。
车身控制模块是车身控制系统的核心,它主要是通过微控制器来采集开关、传感器、遥控钥匙、CAN 或LIN 总线等输入信号,并按照一定的功能逻辑来控制前后外灯、内饰灯、继电器、门锁电机、前后雨刮电机、前后喷水电机、车窗电机等电器负载[2]。车身控制模块的低功耗模式通常包括网络休眠和本地休眠两种模式,其中,网络休眠指车身控制模块中CAN 总线和LIN 总线网络休眠,本地休眠是指车身控制模块中微控制器及板间外设进入低功耗模式,一般网络休眠先于本地休眠, 这两种休眠模式下,当操作车身控制系统的部分开关、遥控钥匙按键或CAN、LIN 相关输入信号时,车身控制模块能够及时唤醒并响应相应的动作,但本模块被误唤醒时不能唤醒整车网络,以降低整车静态功耗。
要有效地降低车身控制模块的静态功耗,需要先从模块的硬件设计环节抓起。根据输入输出信号的特性,可以将车身控制模块的硬件设计分成如下几个功能模块:微控制器模块、电源管理模块、数字输入信号采集模块、模拟输入信号采集模块、输入捕捉信号采集模块、CAN/LIN 总线收发模块、射频接收模块、高边驱动输出控制模块、低边驱动输出控制模块、继电器输出控制模块等,如图1 所示。
微控制器模块为车身控制模块的核心部件,它像车身控制模块的大脑负责处理所有的功能逻辑,但它在正常运行时通常会有比较大的电流损耗,需要在休眠状态尽可能降低此模块的功耗。本文选择了恩智浦的Bolero 系列32 位低功耗微控制器MPC5606BK,它主要面向汽车和工业通用应用,内核充分利用了Power Architecture®的优势,具有低功耗、高性能的特点,支持多种用户功耗模式,如:运行模式、暂停模式和停止模式等,软件设计时可根据实际工况来选择相应的功耗模式[3]。
电源管理模块在完成电源转换的同时,需要负责给各个功能模块提供电源,为降低静态功耗,考虑将低有效输入信号的内部上拉电源设计为可控电源,并根据输入信号的特性分成不带唤醒功能输入信号上拉电源和带唤醒功能输入信号上拉电源两组,当系统进入低功耗模式时,关闭这两组上拉电源,并通过实时时钟中断定时打开用于带唤醒功能输入信号的上拉电源查询唤醒源状态,如果有有效唤醒源则唤醒系统进入正常工作模式,如果未发现有效唤醒源,则关闭用于带唤醒功能输入信号的上拉电源,系统进入低功耗模式。同时考虑选用英飞凌的一款集成CAN/LIN 收发器的系统基础芯片TLE9263 将12V 电源输入转换成5V 电源给微控制器、驱动芯片及两组内部上拉电源供电,它在提供5V 电源输出的同时,还可以提供1 路高速CAN、2 路LIN 的收发器和4 路高边输出[4]。车身控制模块低功耗模式下,可设置TLE9263 持续给微控制器供电,打开唤醒条件监控功能后关闭CAN 收发器的5V,TLE9263 进入自身低功耗模式后将监测CAN、LIN 等唤醒事件,当检测到唤醒事件时,它将通过硬线INT 脚中断通知微控制器进入正常工作模式。
车身控制模块的输入模块主要由数字输入信号采集模块、模拟输入信号采集模块、输入捕捉信号采集模块组成,对于带唤醒功能的输入信号,可以使用微控制器通用输入端口中断或者定时查询的采集方式。
车身控制模块的输出模块以高边驱动输出控制模块、低边驱动输出控制模块、继电器输出控制模块等为主,这些模块在系统进入低功耗模式前需要关闭输出,以此降低系统功耗。
此外,射频接收模块主要用于接收遥控钥匙的按键信息,选用英飞凌TDA5235 的方案,在系统进入低功耗模式前将TDA5235 设置为自轮询模式间歇扫描遥控钥匙按键信息,从而降低系统功耗。
在嵌入式系统的设计中,软件的实现方式对系统的功耗控制有很大影响。从系统层面上来说,车身控制模块在休眠唤醒的过程中可以分为三种工作状态,即网络唤醒且本地也唤醒的状态、网络休眠但本地唤醒的状态、网络休眠且本地也休眠的状态,系统复位后,先进入网络唤醒且本地也唤醒的状态,随后这三种工作状态在满足条件时会相互转换。在软件设计层面上,将微控制器的软件运行模式分为唤醒模式和休眠模式,两种运行模式间根据系统定义的休眠和唤醒的条件来进行切换,如图2 所示。
系统上电或复位后,微控制器进入唤醒模式,打开锁相环,将系统时钟倍频至60MНz,完成微控制器和其他外设的初始化后,进入运行准备状态等待整个系统输入稳定,随后延时进入正常运行状态。
系统正常运行状态里,由软件操作系统周期性调度各功能模块,根据输入状态按逻辑控制输出。根据软件操作系统周期调度的特性,可以将系统功能模块细化,每个功能模块以任务形式执行,对于每个任务定义休眠唤醒的状态和一个休眠唤醒的状态标志,任务在做逻辑运算时认为该任务为唤醒状态(如图2 中Wn),并将该任务的休眠唤醒标志清零;任务在空闲状态时则认为该任务为休眠状态(如图2 中Sn),并将该任务的休眠唤醒标志置成1。对于CAN/LIN 网络设计,不管是使用OSEK 网络管理还是AUTOSAR 网络管理,都可考虑用一个独立的任务去管理CAN/LIN 总线的休眠和唤醒的条件,根据这个任务的休眠唤醒状态标志来通知CAN/LIN 网络管理模块切换网络状态,由CAN/LIN 网络管理模块输出网络管理状态标志作为网络是否进入休眠的标志。当所有的任务都进入休眠状态时,即所有任务的休眠唤醒标志都为1 时,则认为满足本地睡眠条件,延时进入休眠准备阶段。
图1:车身控制模块框图
图2:休眠唤醒模式切换框图
图3:MPC5606BK 和TLE9263 的模式切换示意图
在休眠准备阶段,需紧密结合系统和硬件特性,完成休眠前相关的准备工作,使系统平稳的进入低功耗模式。休眠前相关的准备工作按照顺序逐一完成,即记录当前有唤醒功能的输入开关状态、关闭板间外设驱动芯片、打开微控制器外部唤醒中断、关闭不需要工作的微控制器外设及外设时钟、使能实时定时中断、使能低功耗模式下需要工作的微控制器外设资源等。上述休眠准备动作完成后,就可以将微控制器模式切换成停止模式,使得车身控制模块进入低功耗模式。
讨论完休眠前的准备,下面再来讨论一下唤醒部分的相关步骤。有效唤醒源是系统从休眠模式跳转到唤醒模式的触发事件,系统定义的唤醒源主要通过微控制器支持的外部中断和实时定时中断扫描的方式进行监控。对于暂态类唤醒源,系统使用微控制器外部中断来进行监控,微控制器端口电平跳变的上升沿或下降沿为触发源,触发唤醒中断后将此触发源作为疑似唤醒源,并使微控制器退出停止模式。对于常态类唤醒源,系统使用微控制器实时定时中断定时扫描唤醒源,例如设置100ms 定时中断,即系统每100ms 检测一遍常态类唤醒源,如果被检测对象的状态与休眠准备阶段记录的状态不一致,则认为此检测对象为疑似唤醒源,并使微控制器退出停止模式。如果检测到疑似唤醒源,需要将系统切换到唤醒模式对疑似唤醒源进行鉴别。经过滤波后如果确认是有效唤醒源,则进入唤醒准备阶段,按序完成微控制器模式从停止模式切换至运行模式、打开微控制器外设时钟、关闭外部唤醒中断、打开微控制器外设、关闭实时定时中断、切换TLE9263 到正常模式、记录唤醒源等步骤后,使能系统进入运行准备状态并延时进入正常运行模式;如果滤波后确认是无效唤醒源,则退出唤醒模式并重新回到休眠模式,将微控制器切换回停止模式,使得车身控制模块再次进入低功耗模式。
上述休眠唤醒模式切换的过程中,微控制器和板间外设的交互需要特别注意,模式切换动作需要保持一致。例如,微控制器MPC5606BK 和系统基础芯片TLE9263 都有各自硬件支持的功耗模式,在不同的工况下为满足功能需要,都需要在各自的功耗模式间来回切换,相互之间需要紧密协作。MPC5606BK 为控制主体,需要根据自身工作模式来控制按需控制TLE9263 的工作模式,即MPC5606BK 需要在初始化时将TLE9263 切换到正常模式,在休眠准备状态时将TLE9263 切换到停止模式,在唤醒准备状态时将TLE9263 切换到正常模式等,TLE9263 在监测到CAN 远程唤醒事件时会自动退出停止模式并通过INT 硬线中断通知MPC5606BK,MPC5606BK 收到中断通知并处理完成后需要重新配置TLE9263 的功耗模式,如图3 所示。
电子控制模块的低功耗软件实现与硬件设计原理的关系极为密切,硬件设计是软件实现的基础,软件实现在硬件使用中起着主导作用,两者之间需要紧密协作才能满足系统低功耗的需求。本文讨论的这种基于硬件相关技术的低功耗软件实现方法,可以完成车身控制模块的正常工作模式和低功耗工作模式之间的合理切换,并且已经应用在为某乘用车设计的车身控制模块中,有效地降低了系统静态功耗。