黃志華
(安徽芯核防務裝備技術股份有限公司,安徽合肥,230000)
在新能源汽車行業,相關法規文件越來越完善。應急管理部《CCCF/XFJJ-01電動客車鋰離子動力電池箱火災防控裝置通用技術要求》明確要求車輛停車3日內,火災防控裝置應能正常工作。為了降低煙霧探測器功耗,本設計選用了汽車級主控芯片KEA128,集成了煙霧傳感器ADPD188BI和NTC熱敏電阻傳感器,設計了低功耗休眠模式和喚醒模式,能夠在停車時自動進入休眠模式,整車上電切換到喚醒模式。
鋰電池箱內煙霧探測器,通過感知煙霧和溫度變化判斷鋰離子電池是否發生熱失控,并將報警信息實時上傳至整車/BMS。探測器硬件設計包括主控芯片,光電煙霧傳感器,溫度傳感器,IIC電平信號轉化模塊,電源模塊和通訊模塊等,系統原理框圖如圖1所示。

圖1 系統框圖
KEA128是飛思卡爾針對汽車市場最新開發的MCU,一款汽車級的芯片。采用ARM Cortex-M0+內核,包含CAN模塊,程序flash大小為128KB,運行溫度范圍是-40~125℃,80引腳LQFP封裝,CPU最高頻率為48MHz[1]。
(1)晶振電路。KEA128支持內部時鐘源和外部時鐘源作為MCU的工作時鐘。內部時鐘源ICS可提供時鐘信號范圍31.25~39.0625KHz,誤差在0.8%以內[2]。外部時鐘源具有更高的精度。本設計采用外部8MHz無源晶振,分別連接單片機的 EXTAL,XTAL。
(2)程序調試下載接口。KEA128采用的是ARM Cortex內核,支持SWD接口,比JTAG模式在高速模式下更可靠。數據輸入/輸出線SWDIO對應KEA128的PTA4引腳,時鐘線SWCLK對應PTC4引腳。
(3)電源電路與復位電路。KEA128供電范圍在2.7V~5.5V之間,本設計采用24V轉5V電源供電,通過RESET引腳接地實現單片機復位。
KEA128內部集成了CAN功能的控制器,外部只需連接CAN收發器就能實現CAN通信。本設計選擇TJA1044GTJ作為CAN收發器,支持正常模式和待機模式,通過控制8腳STB高電平進入待機模式,此時功耗為10uA,可通過總線喚醒。
本設計選用光電式煙霧傳感器ADPD188BI。該模塊集成高效率的光電式測量前端、藍光和紅外(IR)發光二極管(LED)以及光電二極管(PD)。這些器件采用特制的封裝,防止光線未先經過煙霧探測腔而直接從 LED 照進光電二極管[3]。其基本原理利用煙霧顆粒散射到光電二極管引起的光電效應檢測煙霧顆粒物濃度。由于采用了兩個LED光源(藍光和紅外),可意味著有兩個不同的折射角,可以區分出煙霧顆粒的大小,分辨出煙霧類型,減少誤報。
ADPD188BI采用1.8V的工作電壓,支持IIC和SPI方式與MCU通信。由于KEA128工作電壓為5V,所以在本設計增加了電平信號轉化芯片SGM4551實現ADPD188BI與KEA128之間的IIC通信。原理圖如圖2所示。

圖2 ADPD188BI原理圖
KEA128支持Run、Wait、Stop模式。Stop模式處于最低功耗模式,少量外設可通過配置開啟,支持中斷喚醒。本設計選擇Stop深度休眠模式,通過CAN總線在接收到外部低功耗指令后,進入深度睡眠模式。配置兩種喚醒方式:通過CAN報文喚醒和通過溫度喚醒。
(1)CAN報文喚醒
在收到休眠指令時,應配置CAN模塊相關寄存器確保單片機休眠時能通過報文喚醒。先設置CAN喚醒方式,設置MSCAN控制寄存器1(MSCAN_CANCTL1)WUPM位為1,即采用集成式低通濾波器來防止 MSCAN 受雜散喚醒影響,僅當CAN總線上出現長度為Twup的顯性脈沖時才會喚醒,而不是CAN上出現任何顯性電平都被喚醒。再設置MSCAN接收器中斷使能寄存器(MSCAN_CANRIER)WUPIE位為1,即喚醒中斷使能,設置RXFIE位為1,報文接收成功事件引起接收器中斷請求。最后設置MSCAN控制寄存器0(MSCAN_CANCTL0)WUPE位為1,即喚醒使能。
進入休眠之前應設置CAN收發器TJA1044第8腳STB高電平進入待機模式,盡可能節省功耗。MSCAN每次被中斷喚醒之后,設置接收器標志寄存器(MSCAN_CANRFLG)WUPIF位為1,即喚醒中斷標志清零。被CAN報文喚醒后,程序首先判斷報文是否為事先約定的報文,如是則單片機喚醒工作,如否立即再進入休眠。KEA128通過CAN喚醒流程圖如圖3所示。

圖3 CAN喚醒流程圖
(2)溫度喚醒
NTC熱敏電阻通過分壓電路接到KEA128的ADC引腳上。收到休眠指令后,設置ADC中斷使能。再設置引腳控制1寄存器 (ADC_APCTL1),將I/O口引腳與ADC關聯。設置狀態和控制寄存器3(ADC_SC3),將ADLPC位置位,ADC進入低功耗模式,ADLSMP置位,長時間采樣模式降低整體功耗,選擇總線時鐘休眠時依然工作。最后設置比較值寄存器(ADC_CV),將NTC測量溫度75℃時對應的ADC采樣值寫入比較寄存器內,在休眠時比較寄存器處于監視狀態,將ADC轉化結果與寄存器內容比較,比較條件成立,則會產生一個ADC中斷,由此喚醒KEA128。
溫度喚醒流程圖如圖4所示。

圖4 溫度喚醒流程圖
在KEA128進入睡眠模式之前,通過I/O口設置LDO控制ADPD188BI的1.8V電源,3.3V和5V電源斷開,關閉SGM4551的5V供電電源,以降低功耗。設置KEA128的IIC控制寄存器,關閉IIC模塊。此外,還可以通過降低時鐘頻率等方式降低探測器休眠功耗[4]。
將探測器通過USB轉CAN卡連接到上位機上,使用高精度安捷倫數字源表U3606A對探測器供電,圖5(a)和圖5(b)分別顯示了探測器正常模式和低功耗模式在12V電源情況下的電流,正常模式16.8mA,低功耗時1.8mA。在休眠狀態下通過上位機發送喚醒指令,或者通過外部加熱,在探測器溫度傳感器采集值達到75℃時探測器自動喚醒。

圖5 實物圖
通過對KEA128時鐘,寄存器,功能模塊等的分析,選擇了最低功耗模式-深度睡眠模式,進入睡眠模式前設置了相關寄存器,同時降低時鐘頻率,關閉了非必要的電源。低功耗模式相比正常工作模式顯著降低了功耗,在異常情形下探測器能自動喚醒,保證了低功耗模式下依然能監測電池箱內的火災。