CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

admin 2024年5月20日22:59:48评论94 views字数 1842阅读6分8秒阅读模式

节点唤醒方式

本地唤醒:唤醒源来源于自身模块,比如常说的KL15,控制器由KL15线供电,即只能在钥匙置于“ACC”或者“ON”档时运行软件和维持CAN通信

  • 对于正在运行的CPU软件,无论它处在什么状态,只要Hardware OFF,PMIC供电立即切断,3.3V,5.0V立即消失,程序立即停止运行,ECU系统进入OFF模式,不存在Sleep模式。该状态下PMIC也不消耗电能,ECU系统的电能消失是0,比较KL30节点的Sleep模式最节省电能。

  • KL15节点没有下电流程,随时可能终止运行,没有时间进入AfterRun模式和做Eeprom最终存储。WakeUp信号的消失后ECU直接进入OFF模式,不存在Sleep模式,不耗费电能。

  • KL30节点有完整的下电流程,软件根据WakeUp信号的消失可以控制自己按步骤进入AfterRun模式,存储数据到flash,设置PMIC进入Sleep模式。ECU进入Sleep模式只有PMIC在耗电。AutoSar网络管理只针对KL30节点。(参考BSWM和ECUM的上下电流程)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

远程唤醒:唤醒源来源于自身ECU节点所在的网络报文

  • 网络唤醒是以网络管理报文为基础来协同整个网络“同睡同醒”,CanNM采用分布式的直接网络管理方式来发送自身节点所需的网络管理请求及自身网络管理状态,并接受来自网络上其他ECU节点的网络管理请求与状态。"同睡同醒"机制的目的是确保所有节点在睡眠和唤醒操作上保持同步。当一个节点准备进入睡眠模式时,它会通过网络发送一个特殊的同步消息,通知其他节点它即将进入睡眠状态。其他节点接收到该消息后,会做出相应的响应,以确保整个系统在同一时间进入睡眠状态。同样地,当一个节点准备唤醒时,它会发送一个唤醒消息来通知其他节点。其他节点接收到唤醒消息后,会做出相应的响应,以确保整个系统在同一时间唤醒。

  • 该状态机的状态类型可分为“三大三小”。

“三大”指的是Bus Sleep ModeNetwork ModePrepare Bus-Sleep Mode

“三小”则值得是Network Mode下的三个子状态:Repeat Message StateNormal Operation Mode、Ready Sleep Mode

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

  • 一旦进入Network Mode,计时器T_NM_Timeout就会启动,只要成功接收到来自总线上的NM报文或者成功发送至总线NM报文,都会将该计时器T_NM_Timeout重置。一旦T_NM_TIMEROUT 超时,那么就会离开该状态转而进入Prepare Bus-Sleep状态。

  • 报文发送与接受状态

Bus-Sleep”阶段,只接收NM报文唤醒,不发送任何报文;

Pre-Bus-Sleep”阶段,同样仅允许接收NM报文,对于早已在发送Buffer中的APP报文应发送完毕后立刻停止APP报文;

Network Mode”模式下,除了在Ready Sleep阶段不允许发送NM报文之外,其余阶段APP报文与NM报文正常收发;

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CanNM报文周期性的向MCU发送,如果一旦一段时间没有收到,MCU就通过SPI向TJA115的寄存器写数据,要进入sleep模式,之后TJA1145在向PMIC拉低.

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

如何让TJA1145进入sleep和wakeup状态

下图以TJA1043简单说明can报文如何使MCU进入到休眠唤醒状态:

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

  • S1:MCU满足休眠条件时,通过发送SPI相应指令让TJA1145进入Sleep状态;

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

例如下面的用法:

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

简单的指令代码实现就是下图:

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

  • S2:TJA1145进入到Sleep状态后,INH引脚就会拉低,控制5V或者3V关闭电源输出,间接导致MCU整个系统处理掉电状态,此时TJA1145始终处于供电状态(由于BAT始终有电),整个ECU成功进入到休眠状态;

  • S3:TJA1145虽然处于Sleep状态,属于极低功耗状态,同步也检测着网络是否存在有效唤醒源;

  • S4:当TJA1145发现有效唤醒源之后,就会自动从Sleep状态切换成Standby状态,在Standby状态下INH引脚拉高,此时5V与3V便会正常输出,从而MCU被正常供电,程序开启正常运行;

————————————————

本文来源于网络,原文链接:https://blog.csdn.net/xiandang8023/article/details/139030190

End

原文始发于微信公众号(汽车电子嵌入式):CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月20日22:59:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CAN网络管理(TJA1145如何实现MCU的休眠唤醒)https://cn-sec.com/archives/2757576.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息