前言
最近在做CAN網絡管理的工作,發(fā)現(xiàn)網絡休眠(關閉)后在ECU系統(tǒng)沒有休眠/下電前如果又收到了NM報文,ECU的網絡沒有被重新喚醒(開啟),ECU系統(tǒng)也沒有結束下電(Shutdown)流程,而是直接下電后再被喚醒,而不是我們期望的在PreShutdown到Shutdown階段收到NM報文重回到Startup階段。
正文
1.網絡休眠時的相關系統(tǒng)狀態(tài)
在本地喚醒源(Local wake up source,一般是IGN等硬線信號)Disable掉后,User會調用ComM_RequestComMode請求ComM進入到NoCom狀態(tài),如果這個時候沒有接收到NM報文,且沒有收到診斷請求ComM會切換到NoCom狀態(tài),這個時候ComM會調用CanSM_RequestComMode(network:=
我們具體來看CanSM對Can Transceiver的操作,以及此時Transceiver的狀態(tài)。
CanSM-->CanIf-->CanTrcv最終會拉低TJA1043收發(fā)器的STB_N腳,這個時候TJA1043收發(fā)器的INH腳是處于高電平狀態(tài)。
TJA1043收發(fā)器處于Standby mode時的報文收發(fā)功能是關閉的,也就是收發(fā)器在Standby mode下是不能收發(fā)報文的。
所以這個時候,ComM處于NoCom狀態(tài),NM處于Bus Sleep狀態(tài),就算這個時候Can-Bus上有NM報文過來,Can Transceiver根本就收不到,也就是不可能讓ECU系統(tǒng)狀態(tài)機從Preshutdown跳轉到Startup。
那能讓Can Transceiver別不要進入到Standby Mode么?-- 不能,因為ComM進入NoCom后CanSM-->CanIf-->CanTrcv設置Transceiver進入到Standby mode這個過程是AUTOSAR靜態(tài)代碼自動實現(xiàn)的,我們不可能去改靜態(tài)代碼。
所以我們該怎么做才能實現(xiàn)網絡關閉后ECU沒有休眠前網絡喚醒?
2.網絡休眠后重新喚醒網絡需要做的準備工作
要實現(xiàn)網絡關閉后ECU沒有休眠前網絡喚醒需要以下必要操作:
1)配置CanIf和EcuM的Wake up validation功能。
2)User判斷Can Transceiver進入到Standby模式后,通過CanIf_SetTransceiverMode --> CanTrcv_SetTransceiverMode設置收發(fā)器到Sleep模式。
軟件設置Can收發(fā)器到Sleep模式后通過硬件設計保證INH腳在Sleep模式是以低電平狀態(tài)輸入到MCU。
3)Can收發(fā)器進入Sleep模式后如果收到CAN報文就會使得INH腳切換到High電平狀態(tài),User通過判斷INH腳從Low電平狀態(tài)跳變?yōu)镠igh狀態(tài)來得知Can-Bus收到了報文,這個時候通過調用CanIf_SetTransceiverMode --> CanTrcv_SetTransceiverMode設置Can Transceiver到Normal狀態(tài),這樣Can Transceiver就能接收到報文了,報文就能到達CanIf模塊。
4)允許網絡通信CommunicationAllowed=TRUEComM,這樣通過ComM_EcuM_WakeUpIndication(ChX)這個條件就能使得ComM進入到FullCom狀態(tài),如果收到的是NM報文,就能維持住網絡。
3.總結
想要實現(xiàn)網絡關閉但ECU沒有休眠前網絡喚醒需要通過檢測TJA1043收發(fā)器的INH腳的電平狀態(tài)來判斷接收到Can報文,然后通過EcuM和CanIf的喚醒源校驗(NM報文校驗)功能來觸發(fā)ComM模塊切換到FullCom狀態(tài),最后ComM進入FullCom后調用CanSM接口喚醒網絡,同時NM狀態(tài)進入到Network Mode的Repeat Message State,整個網路開啟。
審核編輯:劉清
-
收發(fā)器
+關注
關注
10文章
3477瀏覽量
106286 -
AUTOSAR
+關注
關注
10文章
363瀏覽量
21803 -
ecu
+關注
關注
14文章
893瀏覽量
54795 -
CAN網絡
+關注
關注
1文章
44瀏覽量
17021
原文標題:網絡關閉但ECU沒有休眠前如何網絡喚醒
文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
電動汽車的ECU進入休眠后,目前有3種喚醒模式,CAN總線和AC電壓的喚醒設計原理是什么?
cc2530休眠前和喚醒后各個模塊寄存器的值有變化嗎?
Zigbee 怎么實現(xiàn)沒有網絡就進入休眠的功能
如果設備加入到網絡后,在休眠后怎么檢測到協(xié)調器掉網?
無os的LwIP在TCP server歷程中如何進行網絡數(shù)據(jù)發(fā)送呢
ECU是怎么啟動或關閉的呢?ECU啟動方式有沒有一般規(guī)律呢
CH582M freeRTOS如何實現(xiàn)休眠? 休眠后如何喚醒?
MSP430休眠喚醒裝置設計詳析
ECU系統(tǒng)休眠后通過診斷報文喚醒ECU且喚醒網絡
理一理AUTOSAR架構下的喚醒源事件
![理一理AUTOSAR架構下的<b class='flag-5'>喚醒</b>源事件](https://file1.elecfans.com/web2/M00/8C/B4/wKgZomSwoSaAFHjqAABD7BU5Tzk660.png)
評論