銀燕杰,唐琳
(1.四川愛創(chuàng)科技有限公司,四川綿陽,62100;2.吉利學院,四川成都,641400)
新能源汽車中的電子部件越來越多,光是ECU就有上百個,這么多的電子單元都要進行信息交互。傳統(tǒng)的點對點通信已經(jīng)不能滿足需求,因此必須采用先進的總線技術(shù)。車用總線就是車載網(wǎng)絡(luò)中底層的車用設(shè)備或車用儀表互聯(lián)的通信網(wǎng)絡(luò)。目前,有四種主流的車用總線:CAN總線、LIN總線、F lexRay總線和Ethernet總線[1]。
其中LIN(Local Interconnect Network)是一種低成本的串行通信網(wǎng)絡(luò),用于實現(xiàn)汽車中的分布式電子系統(tǒng)控制。LIN 的目標是為現(xiàn)有汽車網(wǎng)絡(luò)(例如CAN總線)提供輔助功能,因此LIN總線是一種輔助的總線網(wǎng)絡(luò)。在不需要CAN 總線的帶寬和多功能的場合,比如智能傳感器和制動裝置之間的通信使用LIN 總線可大大節(jié)省成本。
LIN總線有如下特點:
(1)串行通信:線間干擾小,節(jié)省線束,傳輸距離長;(2)單線傳輸:增強的ISO9141 (ISO 15765-1) , 總線電壓基于VBAT;(3)最高速率20Kbit/s:滿足車身上大部分的應(yīng)用需求,常用波特率為9600bit/s、19200bit/s;(4)單主多從結(jié)構(gòu):無需仲裁;(5)基于通用UART/SCI的低成本接口硬件:幾乎所有MCU有具備LIN總線的硬件基礎(chǔ);(6)從節(jié)點無須晶振或陶瓷振蕩器就可以實現(xiàn)同步:大幅度降低成本;(7)一條總線最多可連接16個節(jié)點:由總線電氣特性決定;(8)支持診斷功能:支持UDS服務(wù)。
雖然LIN有如上相關(guān)特點,但是采用LIN通信的相關(guān)ECU無法通過整車OBD接口進行在線程序的刷寫,如果出現(xiàn)ECU軟件BUG,就需要拆除ECU并通過JTAG等接口進行軟件升級。這樣的操作不但操作繁瑣,而且一旦需要花費大量資金用于軟件升級。本文通過設(shè)計一種基于LIN總線的在線刷寫程序設(shè)備即可通過ECU的接插件進行程序升級[2]。
如圖1所示,整體電路分為3個部分:(1)LIN收發(fā)器/供電電路;(2)MCU電路;(3)數(shù)碼管電路[3]。
圖1 整體設(shè)計框圖
采 用Microchip的SBC(system basis chip)芯 片ATA663231即可實現(xiàn)LIN收發(fā)器和電源供電電路的設(shè)計。ATA663231器件系列包括兩個基本功能:一個 LIN 系統(tǒng)基礎(chǔ)芯片 和一個具有兼容封裝的低壓降穩(wěn)壓器。ATA663231是一款完全集成的 LIN 收發(fā)器,根據(jù)符合 LIN 規(guī)范 2.0、2.1、2.2、2.2A、ISO 17987-7 和 SAEJ2602-2,帶有低壓降穩(wěn)壓器(3.3V/5V/85 mA)。穩(wěn)壓器和總線收發(fā)器的組合使得在 LIN 總線系統(tǒng)中開發(fā)簡單但功能強大的從節(jié)點成為可能。 ATA663231設(shè)計用于處理車輛中的低速數(shù)據(jù)通信(例如,在便利電子設(shè)備中)。改進的 LIN 驅(qū)動器斜率控制可確保高達 20 Kbaud 的安全數(shù)據(jù)通信??偩€輸出設(shè)計用于承受高壓。即使在浮動或短路 LIN 總線的情況下,睡眠模式和靜音模式也能確保將電流消耗降至最低。 ATA663231是一款完全集成的低壓降穩(wěn)壓器,具有 3.3V/5V 輸出電壓和 85 mA 電流能力。它專為汽車環(huán)境而設(shè)計。一個關(guān)鍵特性是電流消耗始終低于170μA(無負載),即使電源電壓低于穩(wěn)壓器的標稱輸出電壓。電路圖如圖2所示。
圖2 ATA6623C內(nèi)部框圖
ATA663231具備兩個功能:
LIN數(shù)據(jù)收發(fā):PIN6(LIN)收到整車LIN控制器的指令,內(nèi)部轉(zhuǎn)換后通過PIN1(RXD)發(fā)輸給MCU。另一方面MCU也會將一些反饋數(shù)據(jù),比如故障信息,通過PIN4(TXD)發(fā)送給ATA663221,再通過PIN6(LIN)傳輸給整車的LIN 控制器。ZD1為TVS,能有效抑制浪涌電壓;L1和C8組成LC電路來提升設(shè)備的EMC性能。C8的容值不能選擇過大,否則會導致LIN輸入信號的上升沿和下降沿過緩,最嚴重會導致數(shù)據(jù)丟幀的情況發(fā)生。建議選擇C8為100pF/50V的陶瓷貼片電容。L1可以選擇EPCOS 的B82432-C。L1和C8還需要根據(jù)EMC測試來調(diào)整電容值和電感值。
LDO:整車蓄電池(9~16VDC)的電壓通過PIN7(VS)輸入到ATA663221,內(nèi)部轉(zhuǎn)換后輸出PIN8(3.3V)給MCU供電。電源轉(zhuǎn)換電路的輸入和輸入分別需要一個電解電容用來儲能,一個陶瓷電容用來濾波,這樣的設(shè)計可以抑制電源紋波。還需要注意的是,需要在電源輸入端接防反接二極管ZD2用作保護。ZD2的選擇除了考慮耐壓,還需要選擇壓降小的肖特基二極管或者快恢復二極管。SW1是一個開關(guān),在需要進行供電的時候閉合開關(guān)。
圖3 防反接保護電路
MCU采 用Microchip的dsP IC33CK128MP 505,該MCU具備LIN控制器模塊,它和ATA 663231的LIN收發(fā)器功能共同實現(xiàn)了LIN總線的硬件收發(fā)功能。由于需要通過Bootloader刷寫ECU的程序,F(xiàn)lash需要選擇256KB。電路設(shè)計如圖4所示。
圖4 MCU電路
MCU電路具體如下功能:
(1)晶振電路:晶振可為MCU提供基本的時鐘信號,通常晶振應(yīng)用在MCU系統(tǒng)中,有利于各部分保持同步。C11和C13為兩個起振電容。只有在外部所接電容為匹配電容的情況下,振蕩頻率才能保證在標稱頻率附件的誤差范圍內(nèi)。從原理上講,直接將晶振接到單片機上,單片機也可以正常工作。但是,這樣構(gòu)成的振蕩電路會產(chǎn)生諧波。雖然這些諧波對電路的影響不大,但會導致電路時鐘振蕩器的穩(wěn)定性降低。所以,為了振蕩電路的穩(wěn)定性,建議在晶振的兩個PIN接入兩個陶瓷電容來削減對振蕩電路穩(wěn)定性的影響。但是這兩個電容具體的大小沒有什么普遍意義上的計算公式,不同MCU的要求也是不一樣的。最終選擇兩個起振電容的容值后,需要進行測試來確保振蕩電路的穩(wěn)定性。
(2)按鍵及LED電路:通過KEY1和KEY2兩個按鍵設(shè)置輸入信息;3個LED等D1、D2、D3反饋相關(guān)信息。KEY1到MCU有0和1兩種輸入模式,同樣KEY2也有;因此,總共可以設(shè)置4種輸入模式。沒一個LED也有亮和滅兩種情況;因此,3個LED可以反饋8種模式。
(3)濾波去耦電路:需要在MCU的每對電源引腳(例如,VDD/VSS 和 AVDD/AVSS)上使用去耦電容。電路中的C9、C10、C12、C14為去耦電容。建議使用參數(shù)為 0.1μF(100 nF)、10-20V的電容。該電容應(yīng)具有低ESR,諧振頻率為20MHz 或更高。建議使用陶瓷電容。去耦電容應(yīng)盡可能靠近引腳。建議將電容與器件放置在電路板的同一層。如果空間受限,可以使用過孔將電容放置在 PCB 的另一層,但請確保從引腳到電容的走線長度小于0.25英寸(6mm)。
由于電路只使用了MCU的少數(shù)PIN,為了防止外部干擾導致MCU工作異常,要么將沒有使用的PIN通過電阻下拉到GND,要么通過軟件設(shè)置為MCU內(nèi)部下拉到GND。由于采用軟件下拉到GND可以節(jié)約器件和利于PCB的Layout,最終采用此方案。
由于3個LED只能顯示有效的信息,比如刷寫程序的進度條等信息無法通過LED實時進行顯示,那么設(shè)計必要的顯示電路就顯得尤為重要。數(shù)碼管顯示相對于LCD等液晶屏的顯示,不但成本低,而且軟件易編寫。具體電路如圖5所示。
圖5 數(shù)碼管驅(qū)動電路
數(shù)碼管驅(qū)動芯片選用CH452,它內(nèi)置時鐘振蕩電路,可以動態(tài)驅(qū)動 8 位數(shù)碼管或者 64 位 LED,具有 BCD 譯碼、閃爍、移位、段位尋址、光柱譯碼等功能;同時還可以進行 64鍵的鍵盤掃描;CH452 通過可以級聯(lián)的 4 線串行接口或者 2 線串行接口與單片機等交換數(shù)據(jù);并且可以對單片機提供上電復位信號。
CH452 對數(shù)碼管采用動態(tài)掃描驅(qū)動,順序為 DIG0 至 DIG7,當其中一個引腳吸入電流時,其他引腳則不吸入電流。CH452 內(nèi)部具有電流驅(qū)動級,可以直接驅(qū)動 0.5 英寸至 1 英寸的共陰數(shù)碼管,段驅(qū)動引腳 SEG6~SEG0 分別對應(yīng)數(shù)碼管的段 G~段 A,段驅(qū)動引腳 SEG7 對應(yīng)數(shù)碼管的小數(shù)點,字驅(qū) 動引腳 DIG7~DIG0 分別連接 8 個數(shù)碼管的陰極;CH452 也可以連接 8×8 矩陣的發(fā)光二極管 LED 陣列;CH452 可以改變字驅(qū)動輸出極性以便直接驅(qū)動共陽數(shù)碼管(不譯碼方式),或者通過外接反相驅(qū)動器支持共陽數(shù)碼管,或者外接大功率管支持大尺寸的數(shù)碼管。
數(shù)碼管選擇SMA420564共陰極數(shù)碼管。MCU通過 相 關(guān) 指 令 控 制CH452的PIN4(ADDR)、PIN5(SDA)、PIN6(SCL),然 后CH452的PIN11(DIG3)、PIN12(DIG2)、PIN13(DIG1)、PIN14(DIG0)來控制SMA420564的4位數(shù)碼管的哪一位,而PIN18~PIN24來控制7段中哪一段進行點亮。
原理圖的繪制后,需要通過專用軟件進行PCB的排版。排版的基本原則為分模塊布局,并且美觀。由于本設(shè)計器件較少,但是由于對尺寸空間要求盡量小型化,最終采用雙面板進行PCB的排版。
升級邏輯除了能完成更新程序的基本功能外還應(yīng)當考慮其通用性和對原控制程序的影響。LIN通訊在實際應(yīng)用,各整車廠具體的協(xié)議互不相同,并沒有統(tǒng)一的行業(yè)標準。且各廠也未就升級在協(xié)議中做相關(guān)定義,因此,如果對車廠LIN協(xié)議進行擴展把升級功能加于其中,勢必會破壞原協(xié)議。當整車廠進行協(xié)議調(diào)整或未給出LIN通訊網(wǎng)完整協(xié)議時對車廠協(xié)議進行擴展,存在引發(fā)協(xié)議沖突的風險?;谝陨弦蛩氐目紤],對原APP程序增加一引導程序BOOTLOADER,采用BOOTLOADER+APP這樣的結(jié)構(gòu)形式,把升級功能放入到BOOTLAODER中,由BOOTLOADER再去加載APP應(yīng)用程序。這樣做即不會破壞原APP程序,同時雙具有通用性強的優(yōu)點。
當上電后BOOTLOADER有100ms的時間用于等待升級握手數(shù)據(jù)幀,如此時間段內(nèi)沒有收到上位機發(fā)來的有效握手數(shù)據(jù)幀,進入APP引導邏輯;否則進入到APP升級邏輯。
APP升級邏輯:首先對FLASH中的數(shù)據(jù)進行檢查,如其中數(shù)據(jù)能通過校驗,則進行APP引導,否則回到升級邏輯。
APP升級邏輯:當收到有效升級握手數(shù)據(jù)幀后進行升級準備,此時擦除FLASH中的數(shù)據(jù),并在應(yīng)答數(shù)據(jù)中通知上位機擦除動作是否成功。如成功擦除FLASH中的數(shù)據(jù),此時上位機會把整個APP分解為多個數(shù)據(jù)幀依次發(fā)送過來,此時升級邏輯完成對接收到的數(shù)據(jù)的校驗和寫入數(shù)據(jù),并在應(yīng)答數(shù)據(jù)幀中通知上位其操作的結(jié)果。當APP升級數(shù)據(jù)發(fā)送完成后,升級邏輯完成對FLASH中數(shù)據(jù)的校驗,并在應(yīng)答數(shù)據(jù)幀中通知上位機校驗結(jié)果。同時升啟。
具體軟件框圖如圖6所示。
圖6
由于整車OBD接口不能通過LIN總線來對ECU進行軟件升級。通過基于LIN總線在線更新程序設(shè)備可以避免新能源汽車相關(guān)ECU出現(xiàn)軟件BUG需要拆卸ECU的操作,有效地實現(xiàn)軟件的更新。
本文以Microchip的dsPIC33CK128MP505為系統(tǒng)平臺,通過ATA663231實現(xiàn)和整車的LIN總線通信。并通過BOOTLOADER+APP的形式實現(xiàn)軟件的在線更新。