黃繼梅
(同濟(jì)大學(xué)汽車學(xué)院 上海市 201804)
在科學(xué)技術(shù)高速發(fā)展和生活水平持續(xù)提高的當(dāng)今社會(huì),汽車已經(jīng)逐漸成為了人們?nèi)粘I钪休^為常用的代步工具,人們也逐漸開始對(duì)汽車的舒適性、經(jīng)濟(jì)性、安全性等方面提出更高的需求,從而帶動(dòng)了汽車電子控制系統(tǒng)技術(shù)的快速發(fā)展,也使得汽車上的電子產(chǎn)品逐年增多,相應(yīng)地,汽車靜態(tài)電流也隨電子產(chǎn)品的增多而增大。汽車靜態(tài)電流由汽車上各個(gè)電子控制單元的靜態(tài)電流組成,過大的靜態(tài)電流可能導(dǎo)致車輛蓄電池虧電,靜態(tài)電流越大則蓄電池的能量消耗越快,蓄電池作為車輛冷起動(dòng)的唯一能量提供者,如果能量消耗過多則會(huì)導(dǎo)致無法正常起動(dòng)車輛[1]。因此,合理管理電子控制單元的低功耗已經(jīng)成為了一個(gè)重要研究方向,而低功耗管理的一個(gè)重要部分就是對(duì)電子控制模塊的正常工作模式和低功耗工作模式進(jìn)行合理切換,也就是常說的電子控制模塊的喚醒模式與休眠模式之間的切換。本文以一種乘用車車身控制模塊為例,介紹一種低功耗軟件的實(shí)現(xiàn)方法。
車身控制模塊是車身控制系統(tǒng)的核心,它主要是通過微控制器來采集開關(guān)、傳感器、遙控鑰匙、CAN 或LIN 總線等輸入信號(hào),并按照一定的功能邏輯來控制前后外燈、內(nèi)飾燈、繼電器、門鎖電機(jī)、前后雨刮電機(jī)、前后噴水電機(jī)、車窗電機(jī)等電器負(fù)載[2]。車身控制模塊的低功耗模式通常包括網(wǎng)絡(luò)休眠和本地休眠兩種模式,其中,網(wǎng)絡(luò)休眠指車身控制模塊中CAN 總線和LIN 總線網(wǎng)絡(luò)休眠,本地休眠是指車身控制模塊中微控制器及板間外設(shè)進(jìn)入低功耗模式,一般網(wǎng)絡(luò)休眠先于本地休眠, 這兩種休眠模式下,當(dāng)操作車身控制系統(tǒng)的部分開關(guān)、遙控鑰匙按鍵或CAN、LIN 相關(guān)輸入信號(hào)時(shí),車身控制模塊能夠及時(shí)喚醒并響應(yīng)相應(yīng)的動(dòng)作,但本模塊被誤喚醒時(shí)不能喚醒整車網(wǎng)絡(luò),以降低整車靜態(tài)功耗。
要有效地降低車身控制模塊的靜態(tài)功耗,需要先從模塊的硬件設(shè)計(jì)環(huán)節(jié)抓起。根據(jù)輸入輸出信號(hào)的特性,可以將車身控制模塊的硬件設(shè)計(jì)分成如下幾個(gè)功能模塊:微控制器模塊、電源管理模塊、數(shù)字輸入信號(hào)采集模塊、模擬輸入信號(hào)采集模塊、輸入捕捉信號(hào)采集模塊、CAN/LIN 總線收發(fā)模塊、射頻接收模塊、高邊驅(qū)動(dòng)輸出控制模塊、低邊驅(qū)動(dòng)輸出控制模塊、繼電器輸出控制模塊等,如圖1 所示。
微控制器模塊為車身控制模塊的核心部件,它像車身控制模塊的大腦負(fù)責(zé)處理所有的功能邏輯,但它在正常運(yùn)行時(shí)通常會(huì)有比較大的電流損耗,需要在休眠狀態(tài)盡可能降低此模塊的功耗。本文選擇了恩智浦的Bolero 系列32 位低功耗微控制器MPC5606BK,它主要面向汽車和工業(yè)通用應(yīng)用,內(nèi)核充分利用了Power Architecture?的優(yōu)勢(shì),具有低功耗、高性能的特點(diǎn),支持多種用戶功耗模式,如:運(yùn)行模式、暫停模式和停止模式等,軟件設(shè)計(jì)時(shí)可根據(jù)實(shí)際工況來選擇相應(yīng)的功耗模式[3]。
電源管理模塊在完成電源轉(zhuǎn)換的同時(shí),需要負(fù)責(zé)給各個(gè)功能模塊提供電源,為降低靜態(tài)功耗,考慮將低有效輸入信號(hào)的內(nèi)部上拉電源設(shè)計(jì)為可控電源,并根據(jù)輸入信號(hào)的特性分成不帶喚醒功能輸入信號(hào)上拉電源和帶喚醒功能輸入信號(hào)上拉電源兩組,當(dāng)系統(tǒng)進(jìn)入低功耗模式時(shí),關(guān)閉這兩組上拉電源,并通過實(shí)時(shí)時(shí)鐘中斷定時(shí)打開用于帶喚醒功能輸入信號(hào)的上拉電源查詢喚醒源狀態(tài),如果有有效喚醒源則喚醒系統(tǒng)進(jìn)入正常工作模式,如果未發(fā)現(xiàn)有效喚醒源,則關(guān)閉用于帶喚醒功能輸入信號(hào)的上拉電源,系統(tǒng)進(jìn)入低功耗模式。同時(shí)考慮選用英飛凌的一款集成CAN/LIN 收發(fā)器的系統(tǒng)基礎(chǔ)芯片TLE9263 將12V 電源輸入轉(zhuǎn)換成5V 電源給微控制器、驅(qū)動(dòng)芯片及兩組內(nèi)部上拉電源供電,它在提供5V 電源輸出的同時(shí),還可以提供1 路高速CAN、2 路LIN 的收發(fā)器和4 路高邊輸出[4]。車身控制模塊低功耗模式下,可設(shè)置TLE9263 持續(xù)給微控制器供電,打開喚醒條件監(jiān)控功能后關(guān)閉CAN 收發(fā)器的5V,TLE9263 進(jìn)入自身低功耗模式后將監(jiān)測(cè)CAN、LIN 等喚醒事件,當(dāng)檢測(cè)到喚醒事件時(shí),它將通過硬線INT 腳中斷通知微控制器進(jìn)入正常工作模式。
車身控制模塊的輸入模塊主要由數(shù)字輸入信號(hào)采集模塊、模擬輸入信號(hào)采集模塊、輸入捕捉信號(hào)采集模塊組成,對(duì)于帶喚醒功能的輸入信號(hào),可以使用微控制器通用輸入端口中斷或者定時(shí)查詢的采集方式。
車身控制模塊的輸出模塊以高邊驅(qū)動(dòng)輸出控制模塊、低邊驅(qū)動(dòng)輸出控制模塊、繼電器輸出控制模塊等為主,這些模塊在系統(tǒng)進(jìn)入低功耗模式前需要關(guān)閉輸出,以此降低系統(tǒng)功耗。
此外,射頻接收模塊主要用于接收遙控鑰匙的按鍵信息,選用英飛凌TDA5235 的方案,在系統(tǒng)進(jìn)入低功耗模式前將TDA5235 設(shè)置為自輪詢模式間歇掃描遙控鑰匙按鍵信息,從而降低系統(tǒng)功耗。
在嵌入式系統(tǒng)的設(shè)計(jì)中,軟件的實(shí)現(xiàn)方式對(duì)系統(tǒng)的功耗控制有很大影響。從系統(tǒng)層面上來說,車身控制模塊在休眠喚醒的過程中可以分為三種工作狀態(tài),即網(wǎng)絡(luò)喚醒且本地也喚醒的狀態(tài)、網(wǎng)絡(luò)休眠但本地喚醒的狀態(tài)、網(wǎng)絡(luò)休眠且本地也休眠的狀態(tài),系統(tǒng)復(fù)位后,先進(jìn)入網(wǎng)絡(luò)喚醒且本地也喚醒的狀態(tài),隨后這三種工作狀態(tài)在滿足條件時(shí)會(huì)相互轉(zhuǎn)換。在軟件設(shè)計(jì)層面上,將微控制器的軟件運(yùn)行模式分為喚醒模式和休眠模式,兩種運(yùn)行模式間根據(jù)系統(tǒng)定義的休眠和喚醒的條件來進(jìn)行切換,如圖2 所示。
系統(tǒng)上電或復(fù)位后,微控制器進(jìn)入喚醒模式,打開鎖相環(huán),將系統(tǒng)時(shí)鐘倍頻至60MНz,完成微控制器和其他外設(shè)的初始化后,進(jìn)入運(yùn)行準(zhǔn)備狀態(tài)等待整個(gè)系統(tǒng)輸入穩(wěn)定,隨后延時(shí)進(jìn)入正常運(yùn)行狀態(tài)。
系統(tǒng)正常運(yùn)行狀態(tài)里,由軟件操作系統(tǒng)周期性調(diào)度各功能模塊,根據(jù)輸入狀態(tài)按邏輯控制輸出。根據(jù)軟件操作系統(tǒng)周期調(diào)度的特性,可以將系統(tǒng)功能模塊細(xì)化,每個(gè)功能模塊以任務(wù)形式執(zhí)行,對(duì)于每個(gè)任務(wù)定義休眠喚醒的狀態(tài)和一個(gè)休眠喚醒的狀態(tài)標(biāo)志,任務(wù)在做邏輯運(yùn)算時(shí)認(rèn)為該任務(wù)為喚醒狀態(tài)(如圖2 中Wn),并將該任務(wù)的休眠喚醒標(biāo)志清零;任務(wù)在空閑狀態(tài)時(shí)則認(rèn)為該任務(wù)為休眠狀態(tài)(如圖2 中Sn),并將該任務(wù)的休眠喚醒標(biāo)志置成1。對(duì)于CAN/LIN 網(wǎng)絡(luò)設(shè)計(jì),不管是使用OSEK 網(wǎng)絡(luò)管理還是AUTOSAR 網(wǎng)絡(luò)管理,都可考慮用一個(gè)獨(dú)立的任務(wù)去管理CAN/LIN 總線的休眠和喚醒的條件,根據(jù)這個(gè)任務(wù)的休眠喚醒狀態(tài)標(biāo)志來通知CAN/LIN 網(wǎng)絡(luò)管理模塊切換網(wǎng)絡(luò)狀態(tài),由CAN/LIN 網(wǎng)絡(luò)管理模塊輸出網(wǎng)絡(luò)管理狀態(tài)標(biāo)志作為網(wǎng)絡(luò)是否進(jìn)入休眠的標(biāo)志。當(dāng)所有的任務(wù)都進(jìn)入休眠狀態(tài)時(shí),即所有任務(wù)的休眠喚醒標(biāo)志都為1 時(shí),則認(rèn)為滿足本地睡眠條件,延時(shí)進(jìn)入休眠準(zhǔn)備階段。
圖1:車身控制模塊框圖
圖2:休眠喚醒模式切換框圖
圖3:MPC5606BK 和TLE9263 的模式切換示意圖
在休眠準(zhǔn)備階段,需緊密結(jié)合系統(tǒng)和硬件特性,完成休眠前相關(guān)的準(zhǔn)備工作,使系統(tǒng)平穩(wěn)的進(jìn)入低功耗模式。休眠前相關(guān)的準(zhǔn)備工作按照順序逐一完成,即記錄當(dāng)前有喚醒功能的輸入開關(guān)狀態(tài)、關(guān)閉板間外設(shè)驅(qū)動(dòng)芯片、打開微控制器外部喚醒中斷、關(guān)閉不需要工作的微控制器外設(shè)及外設(shè)時(shí)鐘、使能實(shí)時(shí)定時(shí)中斷、使能低功耗模式下需要工作的微控制器外設(shè)資源等。上述休眠準(zhǔn)備動(dòng)作完成后,就可以將微控制器模式切換成停止模式,使得車身控制模塊進(jìn)入低功耗模式。
討論完休眠前的準(zhǔn)備,下面再來討論一下喚醒部分的相關(guān)步驟。有效喚醒源是系統(tǒng)從休眠模式跳轉(zhuǎn)到喚醒模式的觸發(fā)事件,系統(tǒng)定義的喚醒源主要通過微控制器支持的外部中斷和實(shí)時(shí)定時(shí)中斷掃描的方式進(jìn)行監(jiān)控。對(duì)于暫態(tài)類喚醒源,系統(tǒng)使用微控制器外部中斷來進(jìn)行監(jiān)控,微控制器端口電平跳變的上升沿或下降沿為觸發(fā)源,觸發(fā)喚醒中斷后將此觸發(fā)源作為疑似喚醒源,并使微控制器退出停止模式。對(duì)于常態(tài)類喚醒源,系統(tǒng)使用微控制器實(shí)時(shí)定時(shí)中斷定時(shí)掃描喚醒源,例如設(shè)置100ms 定時(shí)中斷,即系統(tǒng)每100ms 檢測(cè)一遍常態(tài)類喚醒源,如果被檢測(cè)對(duì)象的狀態(tài)與休眠準(zhǔn)備階段記錄的狀態(tài)不一致,則認(rèn)為此檢測(cè)對(duì)象為疑似喚醒源,并使微控制器退出停止模式。如果檢測(cè)到疑似喚醒源,需要將系統(tǒng)切換到喚醒模式對(duì)疑似喚醒源進(jìn)行鑒別。經(jīng)過濾波后如果確認(rèn)是有效喚醒源,則進(jìn)入喚醒準(zhǔn)備階段,按序完成微控制器模式從停止模式切換至運(yùn)行模式、打開微控制器外設(shè)時(shí)鐘、關(guān)閉外部喚醒中斷、打開微控制器外設(shè)、關(guān)閉實(shí)時(shí)定時(shí)中斷、切換TLE9263 到正常模式、記錄喚醒源等步驟后,使能系統(tǒng)進(jìn)入運(yùn)行準(zhǔn)備狀態(tài)并延時(shí)進(jìn)入正常運(yùn)行模式;如果濾波后確認(rèn)是無效喚醒源,則退出喚醒模式并重新回到休眠模式,將微控制器切換回停止模式,使得車身控制模塊再次進(jìn)入低功耗模式。
上述休眠喚醒模式切換的過程中,微控制器和板間外設(shè)的交互需要特別注意,模式切換動(dòng)作需要保持一致。例如,微控制器MPC5606BK 和系統(tǒng)基礎(chǔ)芯片TLE9263 都有各自硬件支持的功耗模式,在不同的工況下為滿足功能需要,都需要在各自的功耗模式間來回切換,相互之間需要緊密協(xié)作。MPC5606BK 為控制主體,需要根據(jù)自身工作模式來控制按需控制TLE9263 的工作模式,即MPC5606BK 需要在初始化時(shí)將TLE9263 切換到正常模式,在休眠準(zhǔn)備狀態(tài)時(shí)將TLE9263 切換到停止模式,在喚醒準(zhǔn)備狀態(tài)時(shí)將TLE9263 切換到正常模式等,TLE9263 在監(jiān)測(cè)到CAN 遠(yuǎn)程喚醒事件時(shí)會(huì)自動(dòng)退出停止模式并通過INT 硬線中斷通知MPC5606BK,MPC5606BK 收到中斷通知并處理完成后需要重新配置TLE9263 的功耗模式,如圖3 所示。
電子控制模塊的低功耗軟件實(shí)現(xiàn)與硬件設(shè)計(jì)原理的關(guān)系極為密切,硬件設(shè)計(jì)是軟件實(shí)現(xiàn)的基礎(chǔ),軟件實(shí)現(xiàn)在硬件使用中起著主導(dǎo)作用,兩者之間需要緊密協(xié)作才能滿足系統(tǒng)低功耗的需求。本文討論的這種基于硬件相關(guān)技術(shù)的低功耗軟件實(shí)現(xiàn)方法,可以完成車身控制模塊的正常工作模式和低功耗工作模式之間的合理切換,并且已經(jīng)應(yīng)用在為某乘用車設(shè)計(jì)的車身控制模塊中,有效地降低了系統(tǒng)靜態(tài)功耗。