汽车CAN节点的低功耗设计及实现

  作者:马建辉 张云 胡代荣 孙常青 时间:2018-02-27来源:电子产品世界

编者按:满足OSEK NM规范的CAN节点进入休眠后,一方面可以被本地唤醒信号唤醒,另一方面可以被总线上的有效显性位唤醒,当本地唤醒信号的滤波电路滤除不掉杂波时,本地唤醒信号线上的杂波会唤醒本地CAN节点。当CAN物理层收发器电路滤除不掉总线上的毛刺时,总线毛刺也会唤醒CAN节点。为了防止CAN节点被错误唤醒,通过设计临时唤醒模式和唤醒确认模式,判断是否存在有效的本地唤醒条件或CAN报文,避免了CAN节点被误唤醒进而唤醒,整个网络,从而大大增加整车电流消耗的问题。

作者 / 马建辉1,2,3 张云1,2,3 胡代荣1,2,3 孙常青1,2,3 1、齐鲁工业大学(山东省科学院)(山东 济南 250353) 2、山东省科学院自动化研究所(山东 济南 250014) 3、山东省汽车电子技术重点实验室(山东 济南 250014)

  *基金项目:山东省重点研发计划(重大关键技术)(编号:2016ZDJS03A04);山东省科学院创新工程专项《纯电动汽车关键技术研究及产业化应用》;山东省重点研发计划(编号:2016GGC01023)

  马建辉(1983-),男,助理研究员,研究方向:嵌入式及汽车电子。

摘要:满足OSEK NM规范的CAN节点进入休眠后,一方面可以被本地唤醒信号唤醒,另一方面可以被总线上的有效显性位唤醒,当本地唤醒信号的滤波电路滤除不掉杂波时,本地唤醒信号线上的杂波会唤醒本地CAN节点。当CAN物理层收发器电路滤除不掉总线上的毛刺时,总线毛刺也会唤醒CAN节点。为了防止CAN节点被错误唤醒,通过设计临时唤醒模式和唤醒确认模式,判断是否存在有效的本地唤醒条件或CAN报文,避免了CAN节点被误唤醒进而唤醒,整个网络,从而大大增加整车电流消耗的问题。

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所示。

  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物理层