本文主要介绍NM与其他模块的对应关系,例如NM与ComM、CanSM、ECUM、BSWM的关系。由于CanNM是目前主要使用的NM模块,因此下面以CanNM为例。
带ComM: 的NM
如果网络主动唤醒,用户通常会调用ComM_networkrequest借口来请求ComM_Fullcommunication,导致ComM进入COMM_FULL_COM_NETWORK_REQUESTED。同时,NM的状态将从Bus_Sleep进入Repeat模式,然后计入Normal模式。
如果网络是被动唤醒的,即被NM消息唤醒,那么NM会先从Bus_Sleep模式切换到Repeat模式,NM会通知ComM我已经进入网络模式了,还需要切换到Full_Communication。
NM 与EcuM:
这里很多初学者会混淆的一件事是Ecu唤醒和NM唤醒。这是两个概念。
一般来说,该消息会唤醒Ecu,但NM可能仍处于睡眠状态,具体取决于是否是唤醒Ecu的网管消息。网络管理消息通常有自己的ID。在指定的ID范围内,网络可以被唤醒。
还有一点,NM睡眠和Ecu睡眠也是两个概念。如果Ecu在一定时间内收不到NM消息,肯定会休眠。然而,Ecu是否休眠完全由我们的设计师决定。
NM 和CanSM:
我们说NM 消息唤醒网络。首先,Ecu需要具备接受NM消息的能力。这里说的是Can控制器和收发器都必须处于可以接受报文的状态,因为Can控制器也有自己的状态机,收发器如TJA1041也有自己的状态机,所以如果你的Ecu已唤醒,并且已模拟向Ecu发送网管消息,但NM仍处于休眠状态,此时需要检查设备的Can控制器和收发器状态。