正文
TJA1145簡介
TJA1145是NXP公司為汽車電子領域量身定做的高速CAN收發器,提供了CAN控制器與物理CAN雙絞線之間的接口,相比其他CAN收發器,它具備如下幾個特點:
在Standby與Sleep狀態下能保持極低功耗,其中Sleep狀態下功耗比Standy狀態下更低;
可通過選擇性喚醒功能支持符合ISO11898-2:2016標準的CAN部分網絡;
針對TJA1145T/FD與TJA1145TK/FD這兩種TJA1145/FD變種而言,支持CANFD-Passive功能,能夠實現在CANFD與CAN網絡共存的前提下保證節點正常休眠不會被總線CANFD總選錯誤喚醒;
TJA1145提供接口與3.3V或者5V微控制器相連,通過SPI可用來控制CAN收發器控制以及狀態獲取;
TJA1145物理層實現滿足了ISO11898-2:2016與SAE J2284標準,且能夠實現CANFD 2M通訊速率的穩定通信;
TJA1145上述這些特性使得其能夠作為控制ECU整個供電系統的關鍵利器,通過休眠特性最大可能地降低ECU整體電流消耗,僅在應用層存在需求時才會被喚醒。
如下圖1所示為TJA1145的基本功能框圖,各個引腳的基本功能解釋如下:
圖1 TJA1145 基本功能框圖
圖2 TJA1145功能引腳定義
如下圖3所示為TJA1145內部三大供電細節詳解:
BAT: 該電源用于給TJA1145系統狀態維護進行供電,只要BAT一直有點,那么TJA1145相關狀態寄存器值就不會丟失,且CAN接收器由BAT供電;
VCC: 該電源一方面作為5V電源輸入給到TJA1145系統模塊進行監控是否過壓或欠壓,另一方面則給到CAN總線供電,且CAN發送器由VCC供電;
VIO: 該電源一方面作為電源輸入到TJA1145系統模塊進行監控是否過壓或欠壓,另一方面則作為SPI通信的電平轉換;
圖3 TJA1145內部供電詳解圖
ECU休眠喚醒概念
為了讓大家更好的了解休眠喚醒控制原理,小T將按照AUTOSAR文檔中針對休眠喚醒的定義給大家做個總結,可分為如下三種場景:
冷啟動式休眠喚醒
冷啟動式休眠喚醒具備如下幾個特點:
MCU處于掉電狀態;
ECU的部分外圍電路如CAN發器處于供電狀態(如KL30供電);
喚醒事件能夠被CAN收發器識別;
CAN收發器能夠根據喚醒源決定是否喚醒MCU,給到MCU供電;
CAN通道式休眠喚醒
CAN通道式休眠喚醒具備如下幾個特點:
MCU始終處于正常供電狀態;
至少ECU的部分外圍電路如CAN收發器處于供電狀態;
CAN收發器處于Standby狀態;
喚醒事件能夠被CAN收發器識別;
CAN收發器識別到有效喚醒源后能夠產生一個軟中斷喚醒MCU或者MCU周期性的去檢查是否存在有效喚醒源;
CAN通道與MCU式休眠喚醒
CAN通道與MCU式休眠喚醒具備如下幾個特點:
MCU處于低功耗狀態;
至少ECU的部分外圍電路如CAN收發器處于供電狀態;
CAN收發器處于Standby狀態;
喚醒事件能夠被CAN收發器識別;
CAN收發器識別到有效喚醒源后能夠產生一個軟中斷喚醒MCU;
休眠喚醒控制原理
通過上述對休眠喚醒類型的總結,想必大家都可以集合自己工作中碰到的休眠場景一一對應起來,小T就結合最為常見的冷啟動式休眠喚醒從硬件與軟件兩個層面跟大家一起交流休眠喚醒控制基本原理。
硬件層面:
如下圖4所示,小T將從MCU芯片供電以及TJA1145狀態獲取控制兩方面來講解硬件層面的休眠喚醒控制原理:
S1:MCU滿足休眠條件時,通過發送SPI相應指令讓TJA1145進入Sleep狀態;
S2:TJA1145進入到Sleep狀態后,INH引腳就會拉低,控制5V或者3V關閉電源輸出,間接導致MCU整個系統處理掉電狀態,此時TJA1145始終處于供電狀態(由于BAT始終有電),整個ECU成功進入到休眠狀態;
S3:TJA1145雖然處于Sleep狀態,屬于極低功耗狀態,同步也檢測著網絡是否存在有效喚醒源;
S4:當TJA1145發現有效喚醒源之后,就會自動從Sleep狀態切換成Standby狀態,在Standby狀態下INH引腳拉高,此時5V與3V便會正常輸出,從而MCU被正常供電,程序開啟正常運行;
圖4 TJA1145休眠喚醒機制硬件實現
軟件層面:
基于AUTOSAR軟件架構,休眠喚醒的檢測處理機制統一有EcuM模塊來實現,有關EcuM的詳細介紹可參考文章《AUTOSAR基礎篇之EcuM》。關于通訊模塊的開啟則是由ComM模塊來負責,BswM在此階段可實現一些自定義的控制行為來滿足各個項目的特別要求。
本文不會過多闡述細節,僅在說明整個休眠喚醒過程在軟件邏輯層面具體如何來實現,參考如下圖5所示:
圖5 休眠喚醒軟件控制邏輯
S1:當MCU Power ON之后由EcuM模塊便會檢查喚醒源是否有效,若有效,則通知ComM模塊開啟通信,進而通過SPI通信控制TJA1145進入Normal狀態,同時通知BswM模塊開啟其他BSW模塊的控制以及讓EcuM進入到RUN模式;
S2:當MCU PowerON之后由EcuM模塊識別喚醒源無效,便會直接走下電流程,最終控制TJA1145進入到Sleep狀態;
S3:在系統正常工作后如果滿足休眠條件(如外界沒有NM報文),MCU便會控制TJA1145進入到Sleep狀態;
S4:當TJA1145處于Sleep狀態下會檢測休眠前設定的喚醒源,如果喚醒源滿足條件,TJA1145切換至Standby狀態,從而Power ON MCU,最終走向EcuM喚醒源檢測驗證流程;
TJA1145控制
如上述過程MCU通過SPI總線接口實現了針對TJA1145狀態的控制與獲取。針對TJA1145的控制過程可分為TJA1145 Operating Mode的控制以及內部CAN Operating Mode兩種類型。
TJA1145 Operating Mode
在TJA1145內部存在一系統控制器包含如下五種運行狀態機:Normal,Standby,Sleep,Overtemp,Off狀態。接下來將針對這五種狀態進行一一講解每個狀態的基本特征以及相應的SPI控制指令。
Normal: 該模式下TJA1145處于全功能模式下,所有功能均可用,可通過MC=111從Standby或者Sleep狀態切換至Normal狀態;
Standby: 該模式下TJA1145處于低功耗狀態,不過不能夠正常收發數據,但是INH引腳可以始終保持拉高狀態;
如果此時寄存器CWE=1,那么此時receiver會持續監控總線電平狀態,如果寄存器CPNC=PNCOK=1,那么就開啟了特定幀喚醒,否則就是標準CAN喚醒(010101切換就可喚醒,即所說的任意幀喚醒);
當電壓滿足特定下限時便會自動從Off狀態切換至Standby狀態;
當監測到溫度沒有再次發生過溫便會自動從Overtemp狀態切換至Standby狀態;
在Sleep狀態下檢測下喚醒源便會自動切換至Standby狀態;
通過SPI指令MC=100將狀態從Normal或者Sleep狀態切換至Standby狀態;
在Normal狀態下發送指令MC=001準備切換至Sleep狀態,但此時存在喚醒源或者所有的喚醒源檢測全部關閉,該特性從一定程度上避免了死鎖;
Sleep: 該模式下TJA1145處于最低功耗狀態下,且不能正常收發數據,同時INH引腳處于高阻狀態,電源供電一般會通過該引腳進行拉低關閉輸出。同時其狀態變化存在如下幾種可能:
一個有效喚醒源或者中斷事件(除去SPIF事件)或者SPI指令(SPI通訊速率不能過高)則可以喚醒TJA1145從Sleep狀態切換至Standby狀態;
在Normal或者Standby狀態下通過發送MC=001便可以進入到Sleep狀態,同步須確保至少存在一個喚醒源使能(如CAN喚醒或者Wake pin喚醒)且沒有pending狀態下的喚醒源;
如果VCC或者VIO持續一段事件低于某個閾值,那么該低電壓事件將會強制讓TJA1145進入到Sleep狀態,與此同時所有的Peding的喚醒源將會被清除,CWE=1以及WPFE=WPRE=1使能同時特定幀喚醒功能將會被Disable(CPNC=0);
該強制進入到Sleep狀態可通過TJA1145主狀態寄存器(03h)中的FSMS狀態位來獲取,如果FSMS為1表示最近一次進入到Sleep狀態是由于低電壓進入到Sleep狀態,否則是通過SPI指令完成的狀態切換。
**Overtemp: ** 該狀態是由于TJA1145放置溫度過高導致被損壞的一個功能,一旦在Normal狀態下溫度超出一定閾值就會自動切換至OverTemp保護狀態;
為了放置數據的丟失,TJA1145在溫度超過預警閾值時會主動觸發一個Warning,該Warning發生時就會觸發OTWS置位,中斷產生(即OTW=1)如果OTWE使能的前提下;
在該模式下,CAN收發器將不能正常工作,CAN pin腳始終處于高阻狀態,喚醒源將不會被檢測,但是如果存在Pending的喚醒源,那么RXD引腳就會被拉低;
當溫度低于特定閾值時,那么該狀態便會自動切換至Standby狀態;
如果Bat電壓引腳低于某個特定閾值,則會自動從該狀態切換至OFF狀態;
Off: 在該狀態下電壓由于低于特定閾值導致供電不足,當Bat首次連接時這是TJA1145的初始狀態,只要Bat電壓低于某特定閾值,那么TJA1145將會從任意狀態直接切換至Off狀態。在Off狀態下,CAN pin腳以及INH引腳始終處于高阻狀態;
當電壓高于某個特定閾值時,TJA1145便會重新啟動觸發初始化過程,從而經歷特定時候后進入到Standby狀態;
圖6 TJA1145 Operating Mode狀態遷移圖
如下圖7所示,展示了TJA1145 Operation Mode與SPI通信,INH引腳,內部CAN模塊狀態以及RXD引腳的之間的關系。從中特別值得關注的有以下幾點:
Standby狀態下INH引腳可以拉高控制MCU各級電源輸入,CAN無法正常收發通信;
Normal狀態下SPI可正常通信,INH引腳拉高,CAN模塊的狀態取決于CMC值,僅在Active狀態下才能夠開啟正常通信,且僅在CMC=01/10/11下才能夠正常收發;
Sleep狀態下INH引腳處于高阻狀態,此時MCU各級電源可關閉,CAN始終處于Offline狀態,無法正常收發通信;
在Off狀態與Overtemp狀態下SPI都無法正常通信,在Sleep狀態僅在VIO供電正常的情況下才可以,且通信速率不能太高;
僅在Standby與Sleep狀態下才檢測喚醒事件,即僅在CAN處于Offline模式下才能夠開啟喚醒事件的檢測;
圖7 TJA1145各模式狀態關系
Can Operating Mode
TJA1145內部集成的CAN收發器存在四種狀態:Active,Listen-Only,Offline,Offile Bias狀態。存在如下兩種基本組合:
當TJA1145處于Normal狀態時,CAN收發器狀態取決于CMC值,如進入Offline或者Active或者Listen-only等;
當TJA1145處于Standby或者Sleep狀態,則CAN收發器始終處于Offline狀態;
?
圖8 TJA1145內部CAN收發器狀態遷移圖
CAN Active Mode
CAN收發器在此模式下能夠正常發送或接收數據;
當CMC=0x01時,CAN收發器處于Active狀態,VCC低壓檢測使能,如果出現VCC電壓,就會直接切換到CAN Offline或者Offline Bias狀態;
當CMC=0x10時,CAN收發器處于Active狀態,且VCC電壓檢測被抑制,如果出現VCC電壓異常,不會影響到CAN Active正常切換;(實際應用過程中優先統一配置成CMC=0x10,以降低狀態不斷反復切換)
CAN Listen-only Mode
該模式下CAN發送器被關閉,當TJA1145處于Normal狀態且CMC=0x11時,CAN收發器狀態就會處于Listen-only狀態;
在該模式下如果TJA1145處于Normal狀態且CMC=0x1,同時VCC電壓低于90%,那么就會始終在這個Listen-Only狀態;
CAN Offline與Offline Bias Mode
在CAN Offline模式下CAN收發器便會檢測CAN總線以查看是否存在喚醒事件,同時CWE=1,CAN H與CAN L始終偏置接地;
在CAN Offline Bias Mode下也會檢測CAN總線是否存在喚醒事件,只不過CAN H與CAN L會偏置2.5V,當超過一段事件總線沒有活動,便會回歸至CAN Offline模式下;
當TJA1145切換至Standby或者Sleep狀態則會直接切換成此狀態;
當TJA1145狀態為Normal且CMC=0x0,則會將狀態切換成CAN Offline模式;
當TJA1145狀態為Normal且CMC=01同時VCC<90%,則也會將狀態切換成CAN Offline模式;
CAN Off Mode
當TJA1145狀態為Off狀態或者Overtemp狀態時;
當Bat電壓低于CAN接收器某個特定閾值電壓時,當BAT電壓回升至某個特定閾值時,便會進入到CAN Offline模式下;
常見寄存器配置說明
在對TJA1145進行正常使用時,無論是初始化過程還是正常對其進行控制,我們都需要針對常見的TJA1145寄存器進行控制,因此小T結合項目實戰需要給大家列舉了常用寄存器以及相關功能,如下圖9所示:
圖9 常見寄存器配置說明
TJA1145注意事項
使用TJA1145時,如果需要使用其CAN FD Passive功能(0x2F寄存器設置 CFDC=1),那么需要選用型號TJA1145/FD才具備;
TJA1145默認僅支持CAN幀格式的特定幀喚醒;
如果使能了VCC/VIO電壓欠壓監控,如出現在緩升緩降的過程中,就會導致TJA1145狀態直接切換成sleep狀態,因此一般優先選擇CMC=0x10,則抑制了電壓欠壓檢測。
審核編輯:劉清
-
ecu
+關注
關注
14文章
886瀏覽量
54525 -
供電系統
+關注
關注
3文章
414瀏覽量
27633 -
CAN收發器
+關注
關注
2文章
166瀏覽量
25644 -
狀態寄存器
+關注
關注
0文章
39瀏覽量
7091
原文標題:一文搞懂ECU休眠喚醒之利器-TJA1145
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論