Power On시, MCU 전원 인가 및 Software가 처음 시작 하게 되며, 이 시점에 CanNm_Init() 을 호출 해야 함.
CanNm_Init()을 호출하면, CanNm은 Bus Sleep Mode에 있게 됨. 이때 사용자는 Wakeup Event의 종류(Locak Wakeup 혹은 Remote Wakeup)를 감지하여, Repeat Mode State로 천이를 해야 한다.
Network Mode로 진입 1 - CanNm_PassiveStartup()
만약 Remote Wakeup(CAN Wakeup Pattern, Frame 등)에 의해 깨어난 경우, 사용자는 CanNm_PassiveStartup()을 호출 해야 한다. 이 호출을 통해 Nm State Machine은 Repeat Message State로 천이 해야 한다. 이 경우, Network 상태는 "Network Released" 가 유지 된다.
Network Mode로 진입 2 - CanNm_NetworkRequest()
만약 Local Wakeup(Ignition On 등)에 의해 깨어난 경우, 사용자는 CanNm_NetworkRequest()을 호출 해야 한다. 이 호출을 통해 Nm State는 Repeat Message State로 천이 해야 한다. 이 경우, Network 상태는 "Network Request" 로 변경 된다.
CanNm_NetworkRelease()
"Network Request"상태로 Normal Operation State에서 동작하다가, Network Release 및 System 종료가 필요한 경우, 사용자가 CanNm_NetworkRelease()를 호출 하게 된다. 이 호출을 통해 Nm State Machine은 Ready Sleep State로 천이 하며, Network 상태는 "Network Released" 상태로 변경 된다.
2. Power On to Bus Sleep Mode
Power On 시점에 대한 동작은 추가적인 정보가 필요 하기 때문에, 이번 장에서 좀더 알아보도록 한다.
NM 사양을 적용하는 System의 경우에는 보통 특정 CAN Pattern에 의해 Wakeup이 가능한 Trcv를 사용 한다.
Wakeup 회로 Diagram
이 경우, Regulator는 아래 두가지에 의해 Enable된다.
Trcv가 특정 Wakeup Patten(혹은 Frame)을 인지하는 경우, INH을 High로 설정하여 Regulator를 Enable
IGN에 의해 Regulator를 Enable
Regulator가 MCU의 전원을 인가 하게 되면, Software가 동작을 시작하고, Software는 초기 다음 동작을 수행한다.
Software가 처음 시작시, CanNm_Init()를 호출
이로 인해(초기 시작으로 인해), Nm State가 Bus Sleep으로 천이 된 경우, 다음 동작 수행
INH에 의해 Wakeup된 경우에는 CanNm_PassiveStartup() 함수를 호출
IGN에 의해 Wakeup된 경우에는 CanNm_NetworkRequest() 할수를 호출
이번 장에서는 NM State Machine의 Overall Concept과 필요한 API 함수에 대해 알아 보았다.
다만 이번 장에서 기술한 NM API는 Autosar Layered Architecture상 사용자가 직접 호출하는 것이 권장 되지 않으며,