接上篇基于CAN总线的Autosar网络管理简述。。。。。
2.3.1状态跳转
![2ce23343bca5d498f20497b1cb8eef11.png](https://img-blog.csdnimg.cn/img_convert/2ce23343bca5d498f20497b1cb8eef11.png)
注:图片引自《AUTOSAR_SWS_CANNetworkManagement》
- Power on后初始化完成CanNM模块后进入睡眠状态。如果没有初始化完成就触发本地或被动(远程)唤醒事件有可能使NM模块异常。
在睡眠状态中触发本地唤醒事件或被动唤醒事件,ECU进入重复报文状态。CanNm_NetworkRequest()表示的触发本地唤醒事件后ECU请求网络;CanNm_PassiveStartup()表示的是接收到被动唤醒事件后ECU请求网络;
- ECU进入重复报文状态后启动Repeat Message Timer和NM-Timeout Timer。在重复报文状态ECU开始发送周期性的发送NM报文。如果是本地事件唤醒,通过配置可使ECU按照CanNmImmediateNmCycleTime 周期快速发送NM报文,以尽快唤醒整个网络。如果使被动唤醒,则以正常周期CanNmMsgCycleTime发送NM报文。
快发次数和快发周期AUTOSAR中并没有指定特定的数字,一般由OEM决定。多数开发周期为10ms或20ms,快发次数为10或20次。
这里注意,NM报文的周期要为时基的整数倍。
- 当Repeat Message Timer超时后,如果ECU仍有维持由本地唤醒事件(例如KL15IgnON