马建辉 张云 胡代荣 孙常青
摘要:满足OSEK NM规范的CAN节点进入休眠后,一方面可以被本地唤醒信号唤醒,另一方面可以被总线上的有效显性位唤醒,当本地唤醒信号的滤波电路滤除不掉杂波时,本地唤醒信号线上的杂波会唤醒本地CAN节点。当CAN物理层收发器电路滤除不掉总线上的毛刺时,总线毛刺也会唤醒CAN节点。为了防止CAN节点被错误唤醒,通过设计临时唤醒模式和唤醒确认模式,判断是否存在有效的本地唤醒条件或CAN报文,避免了CAN节点被误唤醒进而唤醒,整个网络,从而大大增加整车电流消耗的问题。
关键词.OSEk:C.AN节点;唤醒信号
0 引言
随着汽车功能和电子电气系统越来越复杂,常电供电节点也越来越多。现代汽车CAN网络大多遵循OSEK直接网络管理协议实现常电供电CAN节点的休眠和唤醒功能[1]。根据OSEK直接网络管理协议,所有常电供电CAN节点都满足休眠条件后,整个CAN网络协同进入睡眠状态,当某个CAN节点被本地唤醒条件唤醒后,它将向CAN网络上发送ALIVE报文唤醒整个CAN网络[2],其它CAN节点检测到CAN网络上出现有效的显性位时,CAN物理层收发器向CAN控制器的接收脚输出一个下拉脉冲,唤醒MCU和CAN节点,然后,被唤醒的CAN节点向总线上发送ALIVE报文,这些节点通过ALIVE报文完成网络建环。一般情况下,整车静态电流一般为唤醒状态下的几十分之一,甚至几百分之一。
在一个实现了OSEK直接网络管理规范的CAN网络中,当CAN网络进入休眠状态后,CAN节点一方面可以被本地唤醒[3](一般为开关信号),一方面可以被总线唤醒。总线物理层收发器及其外围电路具备滤波功能,当总线上出现比较短的毛刺时,总线物理层收发器会过滤掉该毛刺,但是,由于CAN物理层规范对CAN信号的上升沿和下降沿有一定要求,它能过滤掉的杂波一般都只是微秒级,当总线上出现时间长度比较宽的毛刺时,物理层收发器便会在MCU的CAN控制器的接收引脚上产生一个低有效电平,这样,该CAN节点便会被唤醒,根据直接网络管理规范,除了自身被唤醒之外,它还会通过ALIVE报文唤醒其它CAN节点,使得整个CAN网络退出休眠状态,使得整车的电流消耗比休眠状态下的整车静态电流大几十倍,甚至上百信,不仅大大增加了整车的电流消耗,还可能会造成蓄电池亏电无法启动发动机的情形[4]。本地唤醒条件也有类似的误唤醒问题。
为了保证CAN节点不会被本地唤醒信号或者CAN信号误唤醒,本文设计了一种方法,只有在确实满足本地唤醒条件的情况下,或者总线上确实存在有效报文的条件下,节点才会被唤醒[5]。
1 方案设计
为CAN节点设计四种工作模式:唤醒模式、休眠模式、临时唤醒模式[6]和唤醒确认模式。其中,唤醒模式为正常工作模式,CAN节点电流消耗最大。休眠模式、临时唤醒模式和唤醒确认模式为低功耗模式,其中,休眠模式下的电流消耗最小。CAN节点的静态电流是指CAN节点在低功耗模式下的电流消耗[7],即在休眠模式、临时唤醒模式和唤醒确认模式下的平均电流消耗。四种工作模式跳转如图1所示。汽车电子Automotive Electronics
CAN节点上电后自动进入唤醒模式,并在休眠条件不满足的情况下保持唤醒模式。CAN节点满足本地休眠条件且整个CAN网络协同休眠后,CAN节点禁能CAN收发器和控制器[8],设置唤醒源,然后进入休眠模式。
为了保证本地唤醒信号线上的杂波不会误唤醒CAN节点,进入休眠模式时只设置两个唤醒源——CAN信号和内部定时器。其中,CAN唤醒源能够保证当CAN总线上出现一个有效的显性位时,CAN节点会马上唤醒,内部定时器唤醒源定时值记为Tsleep,能够保证CAN节点被周期唤醒。
临时唤醒模式保持时间为Ttempwake,在临时唤醒模式中轮询本地唤醒条件,不仅可以避免本地唤醒信号线的杂波唤醒MCU,减少了MCU的唤醒次数,降低了静态电流,还降低了对MCU唤醒中断引脚的需求。
Tsleep和Ttempwake。时间根据CAN节点静态电流约束条件和本地唤醒时间定义,为了保证功能的实时性,出现本地唤醒后,CAN节点要在一定的时间内向CAN网络上发送ALIVE报文唤醒其它节点,Tsleep越大,本地唤醒时间越长,Tsleep和Ttempwake的比值越大,CAN节点静态电流越小。
2 唤醒算法设计
为了保证CAN节点不被总线毛刺和本地唤醒信号毛刺误唤醒,设计了临时唤醒模式和唤醒确认模式。在临时唤醒模式下,CAN节点轮询CAN控制器标志位和本地唤醒信号电平,在唤醒确认模式下,CAN节点查询CAN报文接收和本地唤醒条件是否有效。唤醒算法流程如图2所示。
当节点进入休眠后,CAN信号或者内部定时器临时唤醒节点,进入临时唤醒模式,临时唤醒模式保持时间为Ttempwake,在临时唤醒模式期间轮询CAN控制器的唤醒状态位和本地唤醒信号的电平,如果CAN控制器唤醒状态位和本地唤醒信号电平一直无效,Ttempwake后CAN节点再次进入休眠模式。如果CAN控制器唤醒状态位有效或者本地唤醒信号电平有效,进入唤醒确认模式。
在唤醒确认模式中,如果CAN控制器唤醒标志位有效,使能CAN物理层收发器和CAN控制器,根据该CAN网络的波特率,设定一定的滤波时间(记为Tfiter),检查该段时间以内是否接收到CAN报文,如果接收到,说明这是有效的CAN报文唤醒,CAN节点进入唤醒模式,如果没有收到,说明CAN节点是被总线上的毛刺唤醒的,这时,节点返回休眠模式。在唤醒确认模式中,如果本地唤醒信号有效,以2 ms为周期,连续检测三次本地唤醒信号电平,如果均有效,进入唤醒模式。否则,节点返回休眠模式。
Tfiliter根据总线网络的波特率确定,根据CAN协议,CAN报文数据场的最大长度为8字节,一条数据场长度为8字節的CAN报文包含108个总线位,根据波特率可以计算出报文数据场长度为8字节的CAN报文的时长,Tfiiiter设置为最大CAN报文时长的2倍左右。汽车CAN网络的波特率有500 kbps、250 kbps、125 kbps三种,具体而言:
波特率为500 kbps时,CAN报文最大时长为0.216ms,Tfiliter设置为0.5 ms;
波特率为250 kbps时,CAN报文最大时长为0.432ms,Tfiliter设置为1 ms;
波特率为125 kbps时,CAN报文最大时长为0.864ms,Tfiliter设置为2 ms。
3 结论
本文设计了一种汽车CAN节点的低功耗方案,通过设置唤醒确认模式,区分有效的CAN报文和总线毛刺,区分有效的本地唤醒条件和信号毛刺,避免了误唤醒。根据CAN网络的波特率确定CAN报文滤波时间,避免了无效等待。本方法应用在为某车型设计的PEPS中,具有较强的实用性。
参考文献:
[1]蔡营,王永峰,岳意娥,等基于OSEK标准的整车CAN网络管理设计及测试验证[J]汽车电器,2016,(8):38-41,49
[2]苗斌,王卫华,赵永胜,等具有OSEK功能汽车仪表的睡眠及唤醒管理研究[J]汽车电器,2014.(2):15-18
[3]刘文英,邹洪波,王东,等一种基于CAN总线的低功耗汽车组合开关[J]机电工程,2013,(11):1406-1409,1429
[4]付国良整车静态电流设计及验证[J]汽车电器2015,(11):17-19
[5]山东省科学院自动化研究所一种汽车CAN节点的低功耗设计方法中国,201710458567.7 [P].2017-6-16
[6]马建辉,刘源杨,候冬冬,等汽车BCM的低功耗设计及实现[J]电子产品世界,2016,(11):55-56,30
[7]山东省科学院自动化研究所一种低功耗车身控制器及其控制方法:中国,201510125944.6[P]2015-03-20
[8]初洪超网络管理在汽车CAN系统的应用[J]汽车实用技术,2016.(5):114-118