本文主要是介绍非NM报文唤醒网络时,CAN收发器状态分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
场景一:下电时不操作transciver,transciver状态完全由autosar静态代码控制
Reset调试器
从第一次EN拉高到第一次拉低时间为1.09s,拉低时间持续20ms;之后每次EN从拉高到拉低,时间均为1s,拉低持续时间为20ms。
猜测:20ms是因为ComM的mainfunction调度周期为20ms。
①当主动唤醒时,用户手动调用ComM_RequestComMode上报给ComM模块,ComM收到上报后调用CanSM_RequestComMode()请求CanSM将相应的Can通道切为FULLCOM,CanSM再通过CanIf切换controller和transciver的状态。如果该通道的NMVariant属性为FULL,则调用NM接口Nm_NetworkRequest请求进入主动唤醒。
②当被动唤醒时,EcuM会周期轮询唤醒事件。当轮询到唤醒事件时,调用ComM_EcuM_WakeUpIndication(如果ECUM中的唤醒源绑定了ComM通道,则在调用EcuM_CheckWakeup时会自动调用)上报给ComM模块。ComM收到上报后调用CanSM_RequestComMode()请求CanSM将相应的Can通道切为FULLCOM,CanSM再通过CanIf切换controller和transciver的状态。如果该通道的NMVariant属性为FULL或PASSIVE,则调用NM接口Nm_PassiveStartUp请求NM进行被动唤醒。
这篇关于非NM报文唤醒网络时,CAN收发器状态分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!