Ecu是如何斷電的?MCU是何時停止工作的?總線的通信是什么時候停止的?圍繞這些問題,我們基于Autosar架構進行討論。
Autosar下架構下,是靠EcuM模塊對Ecu進行狀態機的管理,其中EcuM的狀態機又分兩種Flex的和Fixed的,本文是基于Fixed進行分析的。先看一下EcuM的狀態機:該狀態機包含了Ecu的startup,up,sleep和shutdown.實際項目中我們不必嚴格按照下面的狀態執行,例如一般項目上并不需要sleep狀態,而是直接接入shutdown狀態,這樣也是可以的,取決于實際項目的需要。
Shutdowm的狀態Ecu需要做些什么,我們再看流程圖:
首先在進入shutdown時,BswM會調用EcuM_SelectShutdownTarget,這一步是需要在BswM里面手動配置的。從而進入Ecum_Godown,而后進入EcuM_OnGoOffone,這是一個callout函數,根據需要可以在其中添加一些我們的手工代碼,當然,這個階段也可以直接斷掉ECU的電源使能接口。
一般ECU的供電電源都會有一個enable port,當這個port口的電源為high時,使能電源,給整個ECU供電,包括MCU的供電,而這個enbale port通常是由軟件控制的MCU IO口或者CANtransceiver來實現,所以要想令整個ECU下電,則只需要通過軟件,拉低IO口的電壓,或者發送指令讓CANtransceiver進入休眠模式即可。
不過正常情況下,需要先對BswM和schM模塊進行去初始化,并且關掉所有工作的內核,最終才執行以上的下電動作。其中要注意的是,如果在shutdown的過程中又收到有效的喚醒事件,那么則要執行reset的動作,重新開啟ECUM的流程。
-
AUTOSAR
+關注
關注
10文章
363瀏覽量
21782 -
ecu
+關注
關注
14文章
892瀏覽量
54755 -
狀態機
+關注
關注
2文章
492瀏覽量
27652 -
MCU芯片
+關注
關注
3文章
253瀏覽量
11635
發布評論請先 登錄
相關推薦
評論