电子说
下图是COMM的状态转换
通信发起的三种条件:
USER:根据LOCAL的唤醒源(KL15等)主动请求COMM(ComM_RequestComMode)进入到请求模式
DCM:诊断功能请求(在NM Passive模式下不能激活通道)
远程网络管理报文唤醒:分为ECU是主动的还是被动的,主动的ECU被其他网络管理报文唤醒后可以继续唤醒其他ECU;被动的ECU(Passive NM 模式)只能被别人唤醒不能唤醒别的ECU
要想通信,三个条件必须有一个满足。
进入FULL的条件:
一般在ECUM的状态切换(WakeUp到RUN)中将对应的通道允许通信
FULL模式
Passive ECU:不能发生网络管理报文的ECU,只能被动被别的ECU唤醒,直接进入到READY_SLEEP模式。可以调用CanNm的CanNm_PassiveStartup切换CanNm的状态,在CanNm的Network模式中由于此类ECU不支持唤醒别的ECU,因此直接进入到CanNm的Ready Sleep状态。
非Passive ECU:可以发送网络管理报文的ECU,进入到FULL_COM_NETWORK_REQUEST模式,可以主动发送网络管理报文去唤醒总线上其他网络节点,调用CanNm中的CanNm_NetworkRequest切换CanNm的状态机进入到Repeat Message状态去唤醒其他ECU。
FULL到SILENT
主要和CanNm的网络管理相关,在网络管理状态从Ready Sleep进入到Prepare Bus Sleep的时候通知ComM从状态FULL进入到SILENT模式,该模式停止发送报文,只接收报文(一般通过控制COM层的PDU Group进行操作)。
SLIENT到NO
当CanNm的状态从Prepare Bus Sleep进入到Bus Sleep的时候通过回调函数通知ComM,ComM状态从SLIENT进入到NO,接下来ComM发起NO的请求,通过CanSM控制CanIf、CanTrcv、Can进入到OFF模式。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !