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