A.02.16—唤醒时序—睡眠
0赞介绍完唤醒后再来看看睡眠。睡眠也可分为两部分,即网络和本地。
网络部分对于CAN来说一般是无信息一段时间便可以认为能睡眠了、也无需进行其他具体操作,某些模块如网关有可能需要进行一些网络管理有关的操作,如将某个子网的唤醒线继续拉高数秒钟。对于LIN节点而言,子节点可在连续几秒(如3~5s)未收到主节点报头后自动睡眠,主节点则根据自己的需要进行调度。LIN这块一般大家均采用行业标准,CAN则各车厂大体都会制定自己的策略,并不完全一样,而CAN的网络管理策略业界有几种流行的方式,但任何整车厂均不一定非要采用业界已成的方式。
除了LIN和CAN等内容外还有诊断报文也可以维持唤醒状态,如在收到tester present时模块是不许睡眠的,这些可由主机厂的总线工程师定义到诊断协议中或直接挪用现在标准。
对于本地功能部分,一般允许进入休眠的条件为所有程序块均无功能要求,这种情况下便允许睡眠了。只要有任何功能在执行均不可睡眠,如模块在驱动一个灯亮着,要持续亮十分钟,如果其他功能全部执行完了,而灯还在亮着,那就需要等亮完十分钟后再进入睡眠。有些主机厂定义成即使没有了功能,也要求再等待一段时间才可进入睡眠。
进入睡眠后便按唤醒策略等待唤醒了。对于睡眠来说有的车厂要求在电源为OFF才能睡,有的车厂则要求在OFF、ACC、ON均能睡,不同的要求各有优劣。前者省略了ACC、ON的初始化时间但是耗电会相对大点,后者省电一些却每次唤醒都要初始化,对主机厂是好的、却可能给用户体验带来一定影响,不过这影响或许很小乃至可以忽略,其实只要验证过可行便是良好的设计。
(2015-1-15 发表于本人QQ空间)
