目录
一、按照唤醒方式,可以将ECU网络节点类型划分为两类:
本地唤醒:唤醒源来自ECU自身模块,如KL15硬线唤醒或自身Senser感知唤醒等。(如TBox 4G或Bluetooth)。
远程唤醒:唤醒源来自ECU所在节点的网络报文。本章以收发器TJA1043为例做重点分析。
二、远程唤醒CAN网络是如何被唤醒的?
1、ECU唤醒
《TJA1043.pdf》P10有如下说明:
https://mp.csdn.net/mp_download/manage/download/UpDetailed
即CAN唤醒需要满足twake(显性) -> twake(隐性) -> twake(显性)时序的总线变化。这种唤醒方式并不一定需要收到一帧完整的报文才能唤醒。电路设计中,收发器的INH引脚需要与SBC的WAKE Pin连接或者μc的供电电路连接,进而给μc供电,唤醒MCU(此时并未唤醒NM)。
2、ECU唤醒检查
《AUTOSAR_SWS_ECUStateManagerFixed》.pdf P145
https://download.csdn.net/download/u013464897/87873969
CAN transceiver wake up by interrupt:
芯片上电后,从main函数开始允许,完成EcuM、BswM等底层模块的初始化,打开OS,开始允许周期性task。 周期性任务开始运行之后,CanTrcv_MainFunction开始调度,在这个函数中,需要周期性检测Trcv是否有唤醒标志,检查到唤醒标志后,调度EcuM_CheckWakeup()函数通知EcuM。
EcuM_CheckWakeup() -> CanIf_CheckWakeup() -> Can_CheckWakeup() -> CanTrcv_CheckWakeup() -> EcuM_SetWakeupEvent() -> EcuM_ValidateWakeupEvent() ->
ComM_EcuM_WakeUpIndication() (激活相关ComM通道到FULL_COM)。
3、EcuM唤醒验证
P147
CAN wake up validation:
4、关于CanSM
CAN总线的控制流由CanSM和ComM完成,CanSM的状态跳转如下:
Com层报文的发送和接收的开启需要同时满足两个条件:1、Com协议栈在COMM_FULL_COMMUNICATION; 2、对应的PDU Group打开。
三、Autosar NM 网络管理状态机
Autosar NM主要根据以下状态机跳转,跳转条件及细节此处不在展开,可参考以下:
https://blog.csdn.net/weixin_42967006/article/details/121715270
- Autosar NM网络管理为直接网络管理,加入或退出不需要其他节点建立令牌环;
- CAN网络管理相关报文通过CanIf -> CanNM,不需要经过PduR、Com等转换, 由CanNM_RxIndication()实现;
- 主动激活时,本地NM要进入立即快发模式;
- NM报文的控制位向量(Control Bit Vector):
四、总结
部分参考以下博客,好文章!