陳 新,張桂香,肖奇云
(1.湖南大學(xué),汽車車身先進設(shè)計制造國家重點實驗室,長沙 410082; 2.湖南人文科技學(xué)院,婁底 417000;3.婁底市大豐和電動車輛有限公司,婁底 417000)
目前汽車儀表主要分為以下幾種。
(1)純機械式 儀表使用電機和機械結(jié)構(gòu)驅(qū)動指針,其它信息通過儀表板上的燈點亮顯示。
(2)插接顯示屏 儀表盤顯示屏仍然使用機械針,但是提供了一個或者多個額外的顯示屏,通常位于量程之間的中心位置。該顯示屏可用于顯示當前油料消耗、溫度或類似的信息。
(3)純液晶顯示屏 全面可配置的儀表盤使用高分辨率的大尺寸顯示屏;沒有使用機械式指針,通過圖形處理呈現(xiàn)出逼真的模擬指針。儀表盤內(nèi)容完全由軟件定義,可靈活地針對具體使用情形調(diào)整。
汽車儀表演變過程中第一步是引入液晶顯示屏來顯示里程信息和其它簡單的字母數(shù)字信息。由于嵌入式系統(tǒng)的發(fā)展和液晶顯示屏價格的下降,這使基于圖形用戶界面的汽車純液晶儀表的解決方案在性能上和價格上變得現(xiàn)實。
目前由于電動汽車的儀表和傳統(tǒng)儀表顯示內(nèi)容有差異,而且電動汽車車型和類別眾多。開發(fā)一個汽車儀表板須重新設(shè)計硬件和外觀,這將導(dǎo)致汽車廠在汽車儀表上投入大量人力和資金。汽車純液晶儀表盤總體思路就是以帶有圖形和動畫顯示的方式顯示汽車復(fù)雜的信息,不少電動汽車公司對純液晶儀表設(shè)計表現(xiàn)出了強烈的興趣和開發(fā)意愿。本文中針對某電動車廠的儀表進行了改造和設(shè)計。
純液晶儀表包含傳統(tǒng)儀表的所有功能,以液晶屏作為顯示終端,將所需的大量、復(fù)雜的信息以圖形和文字方式,靈活、準確地顯示在LCD屏幕上,可以準確、清晰地顯示速度、轉(zhuǎn)速、里程、左右轉(zhuǎn)向、大燈和報警等信息。儀表基本的要求是:高實時性響應(yīng)、高亮度顯示圖形和指針動畫,能接收來自CAN總線和傳感器的信號等。對于儀表硬件的選擇須考慮如下幾點。
(1)屏幕尺寸 根據(jù)實際儀表大小,可選擇7~10英寸的高分辨率液晶。
(2)動畫頻率 為實時顯示指針的快速移動,就必須提供一個較高的動畫頻率,如速度表和轉(zhuǎn)速表中的量程指針。
(3)處理能力和內(nèi)存大小 由于要運行復(fù)雜的圖形系統(tǒng)和處理各種信息,要保證主控芯片有足夠的處理速度;另外為防止刷新屏幕時抖動,須先進行運算等操作,要有足夠大的內(nèi)存空間進行存儲。
整個系統(tǒng)硬件采用了三星公司生產(chǎn)的基于ARM920T內(nèi)核的 S3C2440A,最高運行頻率為400MHz,集成專用DMA的LCD控制器,支持最多4K色STN和256K色TFT液晶,可較方便地連接高分辨率液晶。S3C2440A豐富的外設(shè)方便了用戶的硬件設(shè)計,該儀表包括液晶模塊、大容量NANDFLASH、64M的SDRAM、CAN總線接口、音頻接口、按鍵和EEPROM存儲芯片AT24C08等,如圖1所示。
液晶模塊采用了群創(chuàng)公司生產(chǎn)的7英寸AT070TN83 V.1液晶,分辨率為800×480,采用40腳數(shù)字接口。S3C2440A集成的LCD控制器有1個支持從系統(tǒng)存儲器的視頻緩沖器接收圖像數(shù)據(jù)的專用DMA,可在屏幕上顯示視頻數(shù)據(jù)而無須CPU的介入。LCD控制器包括用于傳輸圖像的數(shù)據(jù)端口VD[23:0]和必要的控制信號,如 VFRAME、VLINE、VCLK、VM等。LCD控制器和AT070TN83 V.1液晶模塊的電路示意圖如圖2所示。除了上述控制線外,LCD中的MODE管腳定義液晶控制模式,L/R和U/D則定義液晶的掃描模式,S3C2440A通過I/O口提供一個200Hz頻率的方波給管腳,利用占空比調(diào)節(jié) LCD 亮度[1]。
CAN總線部分電路原理圖如圖3所示。S3C2440A本身不帶 CAN控制器,須通過外部的CAN控制器來實現(xiàn)CAN總線通信。MCP2510是一種帶有SPI接口的CAN控制器,它支持CAN技術(shù)規(guī)范V2.0 A/B,能發(fā)送或接收標準的和擴展的信息幀,同時具有接收濾波和信息管理的功能。S3C2440A通過SPI接口與MCP2510進行數(shù)據(jù)傳輸,最高數(shù)據(jù)傳輸速率可達5Mb/s。SN65HVD230是德州儀器公司生產(chǎn)的3.3V CAN總線收發(fā)器,該收發(fā)器具備差分收發(fā)能力,最高速率可達1Mb/s。廣泛用于汽車和工業(yè)自動化等相關(guān)領(lǐng)域。
圖形用戶界面是軟件和最終用戶的接口,在很大程度上決定著軟件的成敗和顯示效果。目前嵌入式圖形用戶界面開發(fā)工具主要包括:(1)諾基亞公司的產(chǎn)品Qt,是完全面向?qū)ο蟮目缙脚_圖形用戶界面開發(fā)工具,是Linux系統(tǒng)中最流行的開發(fā)工具之一,也是在 Unix上自由軟件開發(fā)的主流[2];(2)MiniGUI是一個高效、可靠、可定制和小巧靈活的圖形用戶界面支持系統(tǒng),具有跨硬件平臺、跨操作系統(tǒng)的可移植性[3];(3)μC/GUI是 Micrium 公司開發(fā)的通用的嵌入式圖形用戶界面軟件,該界面軟件被設(shè)計用于為任何使用1個圖形LCD的應(yīng)用提供一個有效的不依賴于處理器和LCD控制器的圖形用戶接口。μC/GUI適用于使用任何LCD控制器和CPU的任何尺寸的物理和虛擬顯示,具有源代碼開放和模塊化設(shè)計的特點。
汽車儀表涉及多個任務(wù),如圖形顯示與刷新和CAN總線的通信與語音提示等,圖形界面設(shè)計也須用到消息和多任務(wù)支持,設(shè)計中使用了μC/OS-Ⅱ操作系統(tǒng)+μC/GUI圖形用戶界面的組合,系統(tǒng)軟件的整體架構(gòu)如圖4所示。
μC/OS-Ⅱ的代碼被分為處理無關(guān)的代碼、與應(yīng)用相關(guān)的代碼和與處理器相關(guān)的代碼3個部分。系統(tǒng)移植時只要考慮與處理器相關(guān)的代碼。與處理器相關(guān)的代碼由OS_CPU.H、OS_CPU_C.C和OS_CPU_A.S 3個文件組成。OS_CPU.H中包括數(shù)據(jù)類型的定義和實現(xiàn)宏S_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。OS_CPU_C.C中最主要的是實現(xiàn)任務(wù)的堆棧結(jié)構(gòu),操作系統(tǒng)的一些鉤子函數(shù)也在文件中實現(xiàn)。OS_CPU_A.S包括處理器部分匯編函數(shù)實現(xiàn),其中包括:OSStartHighRdy()來使就緒態(tài)任務(wù)中優(yōu)先級最高的任務(wù)開始運行;OSCtxSw()任務(wù)級上下文切換函數(shù);OSIntCtxSw()中斷任務(wù)退出函數(shù);OSTickISR()時鐘中斷處理函數(shù)[4]。
由于μC/OS-Ⅱ是一個占先式的內(nèi)核,采用基于優(yōu)先級的搶先式調(diào)度算法,有效地保證了實時性的要求。根據(jù)需要,系統(tǒng)的主要任務(wù)為:(1)J1939協(xié)議通信;(2)圖形顯示與刷新;(3)RTC時間讀取;(4)語音播放和按鍵讀取;(5)將里程寫入EEPROM。每個任務(wù)都有自己的堆棧和CPU寄存器,并且被賦予一定的優(yōu)先級。這些任務(wù)優(yōu)先級由低到高,優(yōu)先級高的任務(wù)一旦處于就緒狀態(tài),則立即搶占正在運行的低優(yōu)先級任務(wù)的處理器資源。μC/OS-Ⅱ有任務(wù)級和中斷級兩種任務(wù)調(diào)度方式,其中J1939協(xié)議通信采用了中斷級任務(wù)調(diào)度,其它采用任務(wù)級任務(wù)調(diào)度,這樣保證了J1939協(xié)議通信的實時性和避免其它任務(wù)的干擾。
μC/GUI是一個通用的嵌入式圖形軟件,具有模塊化的特點,由于μC/GUI采用分層結(jié)構(gòu),即具有驅(qū)動接口層和應(yīng)用層;而且μC/GUI的代碼全部用C語言編寫,因此它可方便地移植到各種CPU下使用。μC/GUI目錄結(jié)構(gòu)見表1。
表1 μC/GUI目錄
μC/GUI移植步驟如下。
第一步:S3C2440A內(nèi)置一個LCD控制器,其實現(xiàn)須根據(jù)屏幕的參數(shù)對內(nèi)置的LCD控制器相關(guān)寄存器進行設(shè)置,保證時序、掃描模式和顯示類型等的正確設(shè)置,保證TFT底層驅(qū)動程序正確。
第二步:ADS編譯器加入UCGUI程序包。
第三步:配置 LCDConf.h、GUIConf.h和GUITouchConf.h。LCDConf.h文件中包括分辨率和像素的位數(shù)。GUIConf.h文件中包括操作系統(tǒng)多任務(wù)支持、動態(tài)內(nèi)存的大小、窗口控件支持和抗鋸齒等。其中由于采用高分辨率屏幕和動畫顯示等原因,動態(tài)內(nèi)存分配必須大于4M以上。
第四步:修改 LCDDriver驅(qū)動??筛鶕?jù)示例LCDWin.c進行修改,其中最重要的兩個函數(shù)為底層驅(qū)動設(shè)置像素函數(shù)LCD_SetPixel(x,y,PixelIndex)和獲取像素函數(shù)LCD_GetPixel(x,y)。這兩個函數(shù)是最基本函數(shù),其他函數(shù)比如畫線、點、圓都須調(diào)用該函數(shù)。
第五步:在GUI_X_uCos.c中通過μC/OS-Ⅱ操作系統(tǒng)中的延時程序同μC/GUI掛接實現(xiàn)整合。
在μC/GUI圖形界面移植完成后可直接調(diào)用μC/GUI的API函數(shù)在LCD上顯示各種圖形、文字和特效顯示[5]。
字體和圖片顯示可采用μC/GUI通過點陣來顯示字體和圖片,可利用μC-GUI-FontConvert.exe字體轉(zhuǎn)換器和μC-GUI-BitmapConvert.exe位圖轉(zhuǎn)換器,將矢量字體和圖片轉(zhuǎn)換為C語言代碼,用數(shù)組保存字體相關(guān)信息。通過加入編譯和gui.h中進行聲明,即可調(diào)用API函數(shù)進行字體和圖片顯示。儀表顯示中使用了多種字體,包括宋體中文和數(shù)碼管字體,圖片主要包括警告燈等圖片顯示。
指針動畫顯示可采用如圖5所示的動畫顯示制作流程。動畫顯示主要用到視窗管理器,使用時在一個視窗內(nèi)(屏幕上的一塊區(qū)域)顯示儀表所有內(nèi)容。該區(qū)域作為一個繪制或顯示對象的用戶接口部件,其視窗可以是任意大小,可在屏幕上同時顯示多個視窗,甚至能在其它視窗上部分或完全地顯示。視窗管理器提供了一套函數(shù),使之能很容易地對許多視窗進行創(chuàng)建、移動、尺寸調(diào)整和其它操作。
SAE J1939協(xié)議是美國汽車工程師協(xié)會SAE發(fā)布的以CAN總線為基礎(chǔ)、以CAN2.0B作為網(wǎng)絡(luò)核心協(xié)議的車輛網(wǎng)絡(luò)串行通信和控制協(xié)議。它是以CAN總線為基礎(chǔ)并涉及了應(yīng)用層的上層協(xié)議,可達到250Kb/s的通信速率,是目前最有實用參考價值的車用網(wǎng)絡(luò)協(xié)議,在國內(nèi)汽車行業(yè)中應(yīng)用最廣。它對汽車內(nèi)部ECU的地址配置、命名、通信方式和報文發(fā)送優(yōu)先級等都作了明確的規(guī)定,并對汽車內(nèi)部各個具體的ECU通信內(nèi)容作了詳細說明。在本系統(tǒng)中車速和轉(zhuǎn)速等信號依照J1939協(xié)議從CAN總線獲得[6-7]。在《電動汽車非車載傳導(dǎo)式充電機與電池管理系統(tǒng)通信協(xié)議》中也定義了電池管理系統(tǒng)和充電機的通信協(xié)議[8],通信采用了標準推薦的125Kb/s的通信速率,幀格式采用CAN擴展幀的29位標識符,具體每個位分配的相應(yīng)定義符合SAE J1939—21的規(guī)定。
利用Microchip公司提供的J1939協(xié)議庫函數(shù),大大簡化了軟件開發(fā)的過程。J1939協(xié)議實現(xiàn)流程是:(1)根據(jù) S3C2440A硬件修改 SPI16.C和SPI16.h的底層管腳定義和中斷等實現(xiàn)SPI驅(qū)動,加入庫函數(shù)并根據(jù)實際情況對配置進行修改;(2)利用中斷接收J1939協(xié)議數(shù)據(jù);(3)根據(jù)SAE J1939協(xié)議判斷計算車輛工況和故障代碼等信息[9]。例如儀表地址為0x17,接收到數(shù)據(jù)0C F00400 XX XX XX 4E 20 XX XX XX,根據(jù)協(xié)議報文為PGN61444和SPN190,源地址:發(fā)動機,發(fā)動機轉(zhuǎn)速位置在4~5B,分辨率:0.125(r/min)/b,0偏移。4~5B為0x4E20,發(fā)動機轉(zhuǎn)速可計算為20000×0.125=2500r/min。
液晶儀表模擬真實儀表的外觀,除了可顯示常規(guī)儀表顯示的所有內(nèi)容外,還可顯示時間、漢字說明等。儀表內(nèi)部可設(shè)置幾套顯示界面,用戶可自己根據(jù)喜好選擇,比常規(guī)汽車儀表更加人性化。國家標準規(guī)定電動汽車儀表類別包括指示儀表裝置、警告和指示信號裝置。其中指示儀表裝置包括動力蓄電池指示儀表、荷電狀態(tài)指示器、電壓表、電流表、驅(qū)動電動機指示儀表和轉(zhuǎn)速表。警告和指示信號裝置包括過熱、超速和剩余容量,通過光學(xué)和(或)聲學(xué)信號告知駕駛員[10]。
由于電動汽車用儀表和傳統(tǒng)汽車儀表顯示內(nèi)容的不同,參考電動汽車用儀表國家標準所需的顯示內(nèi)容和ISO標準2575《道路車輛控制裝置、指示器和信息裝置的符號》中規(guī)定的圖形標志,設(shè)計了適合電動汽車使用的LCD儀表界面。儀表顯示示意圖如圖6所示。圖中對國家標準所規(guī)定的顯示內(nèi)容都有指針動畫、數(shù)字指示或者提示圖標顯示,在儀表的最下一行對車輛的重要信息可以提供中文提示和說明。
在電動汽車充電的過程中,液晶屏幕也可通過清晰、直觀的進度條方式顯示目前充電狀態(tài)和電池目前的容量情況等信息,如圖7所示。
圖8為在某電動汽車廠家進行實車測試時的汽車儀表實物圖,測試時能夠通過車輛通信協(xié)議實時讀取車輛參數(shù)并在液晶屏幕上準確顯示,指針動畫轉(zhuǎn)動平滑,反應(yīng)無遲鈍現(xiàn)象,數(shù)字變化正常。
汽車液晶數(shù)字儀表是未來發(fā)展方向,本文中研究和實現(xiàn)了新一代的汽車純液晶數(shù)字儀表,硬件采用了以S3C2440A為主控芯片的高分辨率7英寸液晶屏等。軟件使用了μC/OS-Ⅱ操作系統(tǒng)和μC/GUI圖形顯示界面,軟硬件保證了系統(tǒng)的實時性和圖形界面的顯示效果,通過J1939協(xié)議保證汽車儀表可通過CAN總線讀取車輛實時工況。所設(shè)計的汽車純液晶儀表可滿足實際的使用和顯示需求,節(jié)約了廠家開發(fā)成本,只須適當?shù)能浖薷募纯蓾M足不同客戶的個性化顯示需求。由于μC/GUI圖形顯示界面目前支持的特效較少,還不能達到非常完美的顯示效果。另外由于液晶長寬比原因顯得有點擁擠,加大長寬比可得到更加接近實際汽車儀表尺寸,并滿足駕駛員習(xí)慣。
[1]紀寧寧,孫靈燕.S3C2440A驅(qū)動RGB接口TFT LCD的研究[J].液晶與顯示,2008,23(1):96-100.
[2]倪紅波,周興社,谷建華.基于QT/E的嵌入式圖形支持系統(tǒng)[J].計算機工程,2007,33(20):256-258.
[3]劉昌盛,郭勇,謝習(xí)華.嵌入式Linux環(huán)境下MiniGUI的研究與移植[J].哈爾濱理工大學(xué)學(xué)報,2009,14(1):23-27.
[4]Labrosse Jean J.μC/OS-Ⅱ源碼公開的實時嵌入式操作系統(tǒng)[M].邵貝貝,譯.北京:中國電力出版社,2008.
[5]陳文輝,蔡啟仲.uC/GUI在單片機系統(tǒng)上的移植[J].計算機工程,2007,33(12):275-279.
[6]夏繼強,李曉君,等.SAE J1939協(xié)議棧設(shè)計及μC/OS-Ⅱ系統(tǒng)下的開發(fā)平臺的研究[J].汽車工程,2008,30(12):1069-1074.
[7]閆哲銘,王建,王啟慧,等.基于Luminary LM3S8962的汽車數(shù)字儀表系統(tǒng)設(shè)計[J].汽車工程,2010,32(2):163-137.
[8]GB/T 27930—2011.電動汽車非車載傳導(dǎo)式充電機與電池管理系統(tǒng)通信協(xié)議[S].北京:中國標準出版社,2011.
[9]謝東坡,張儀棟,等.基于SAE J1939協(xié)議的客車ECU參數(shù)測試系統(tǒng)[J].汽車技術(shù),2010(12):45-47.
[10]GB/T 19836—2005.電動汽車用儀表[S].北京:中國國家標準化管理委員會,2005.