孫 波
(江蘇自動化研究所,江蘇連云港222061)
工程車輛顯示終端是諸如挖掘機、起重機等工程機械車輛上的核心單元之一,可以通過柱狀圖、虛擬開關(guān)、虛擬儀表盤等可視化界面,實現(xiàn)對車輛水溫、油位、轉(zhuǎn)速、開關(guān)、電磁閥、通信端口等工作狀態(tài)的實時顯示。近年來,隨著我國基礎(chǔ)設(shè)施建設(shè)的深入開展,工程車輛的種類與功能不斷豐富,對工程車輛顯示終端的性能水平、安全可靠性也提出了更高的要求。常見的車輛顯示終端往往采用ARM+Linux的軟硬件架構(gòu)[1-2],性能較強,但價格較高且開發(fā)難度大、開發(fā)周期長。本文針對工程機械車輛顯示終端的安全可靠性、顯示實時性等方面的實際需求,提出基于STM32(基于ARM Cortex-M3內(nèi)核)處理器和μC/OS2操作系統(tǒng)架構(gòu)的設(shè)計思路,以STM32處理器為核心,通過擴展電源管理模塊、通信端口適配模塊以及顯示控制模塊等,實現(xiàn)對車輛上所有傳感器、通信端口、攝像頭視頻、設(shè)備工作狀態(tài)等信息實時顯示。
工程車輛顯示終端的系統(tǒng)總體框圖如圖1如示,處理器STM32F207為顯示終端的核心,通過FSMC(Flexible Static Memory Controller)機制擴展了SRAM和Flash,分別作為處理器運行時的數(shù)據(jù)緩存與可視化圖形元素的存儲空間。顯示控制芯片采用EPSON公司的S1D13513,并擴展一片專用的SDRAM作為顯示緩存。STM32處理器與S1D13513之間通過FSMC機制實現(xiàn)數(shù)據(jù)通信。攝像頭視頻輸入信號經(jīng)過ADV7180芯片采樣處理后轉(zhuǎn)換為YUV信號并接入S1D13513,由S1D13513負(fù)責(zé)LCD液晶屏所有顯示內(nèi)容的輸出控制。另外,為了適應(yīng)車輛上電源輸入動態(tài)范圍大、干擾多等特點,電源管理模塊利用外部輸入的電壓,輸出多種穩(wěn)定的工作電平,保證顯示終端穩(wěn)定工作。
圖1 顯示終端的系統(tǒng)總體框圖
顯示終端需要12 V,5 V,3.3 V和1.8 V 共4種工作電壓,而只能使用來自工程車輛上標(biāo)稱為24 V的蓄電池作為輸入電源。由于儲電量等因素的不同,蓄電池輸出電壓并不固定,范圍有可能在9~36 V左右緩慢變化。本設(shè)計采用Linear公司的LT3980產(chǎn)生12 V與5 V電壓。LT3980可以在3.6~58 V輸入電壓的范圍內(nèi)工作,具有過壓閉鎖保護,可承受高達80 V的瞬態(tài)電壓,該器件非常適用于汽車應(yīng)用中常見的負(fù)載突變和冷車啟動等情況。3.3 V和1.8 V采用LT1117芯片從5 V電壓變換獲得。另外,考慮到車輛上其他設(shè)備在啟動、工作時在電源上產(chǎn)生的干擾脈沖,甚至在現(xiàn)場可能產(chǎn)生人為失誤造成的電源正負(fù)極反接等情況,在LT3980的前端,需要采取必要的防過壓、抗瞬間干擾、防反接的措施。如圖2所示,二極管D1可以為蓄電池BAT上的瞬間高壓提供一條快速釋放通道,并可保證在電源反接時電壓無法加至后級電路,電感L1與電容C1可以有效抑制電源的瞬態(tài)干擾,防止瞬態(tài)干擾影響顯示終端的正常工作。
圖2 電源管理模塊
本設(shè)計采用ST公司的STM32F207ZE作為主處理器,采用S1D13513作為顯示控制芯片。S1D13513是EPSON公司推出的一款高性能、低功耗的液晶控制器,帶有大容量SDRAM接口,支持片外擴展SDRAM作為顯存,支持單屏RGB接口,最高支持1 024×768的分辨率,支持多種流行CPU的直接或間接訪問,適合移動通信、手持設(shè)備及車輛等領(lǐng)域的應(yīng)用。處理器通過FSMC機制與S1D13513進行通信,相當(dāng)于將S1D13513映射為一種片外存儲器。本設(shè)計中S1D13513采用直接Intel 80模式1。模式選擇依賴CNF[8:0]引腳的上電復(fù)位時的配置,其中CNF[8:7]決定了芯片的工作時鐘源,CNF[6]決定了CNF[5:0]的配置對象,CN[5:0]決定了具體的總線接口配置內(nèi)容。通過配置CNF[8:0]引腳的復(fù)位電平,將引腳上電輸入狀態(tài)設(shè)置為0x144,表明使用OSC1作為時鐘源、工作方式為直接Intel80模式1。S1D13513采用了哈佛架構(gòu),在與處理器連接時,地址與數(shù)據(jù)分開,其與處理器的接口部分包含16位數(shù)據(jù)線、21位地址線、片選信號、中斷信號及讀寫控制信號等,可以將STM32的FSMC地址、數(shù)據(jù)總線、片選信號直接與S1D13513連接,如圖3所示。
STM32F207ZE的片外Flash、SRAM擴展電路,以及S1D13513的片外SDRAM擴展電路、攝像頭輸入電路、LCD液晶屏顯示電路等,參考芯片手冊中推薦的電路直接連接即可。
圖3 STM32F207與S1D13513的連接示意圖
由于STM32芯片內(nèi)部集成了CAN總線協(xié)議控制器,因此只需要在外部為其增加CAN總線收發(fā)器,實現(xiàn)TTL電平到CAN總線電平的轉(zhuǎn)換適配[3]。本設(shè)計中采用的CAN總線收發(fā)器采用了NXP公司的TJA1040T,是一款針對汽車電子行業(yè)使用的高性能CAN收發(fā)器,其最主要的特點是芯片上有一個SPLIT的平衡電壓輸出端,用于輸出芯片自身的2.5 V電壓,用于抑制由于各節(jié)點地電平不同而造成的信號共模電壓差,或者抑制由于其他沒有上電節(jié)點造成的反向電流,可以使共模干擾的影響降低到最小,保證正常通信??偩€終端節(jié)點R1、R2可以分別使用60 Ω的分裂端接電阻,若是總線中間節(jié)點使用1.3~2.7 Ω的分裂電阻,C1的典型值可以取47 nF。另外為了防止CAN總線上的瞬間高壓的干擾,二極管V1采用NXP公司的PESD1CAN,L1采用EPCOS公司的B82789作為扼流圈,防止瞬態(tài)干擾串入,防止CAN總線數(shù)據(jù)的錯誤接收(見圖4)。
圖4 CAN總線接口電路
顯示終端的軟件設(shè)計全部采用C語言編程,在STM32處理器的基礎(chǔ)上移植構(gòu)建了μC/OS2操作系統(tǒng),利用UCGUI圖形開發(fā)環(huán)境,完成CAN接收FIFO中數(shù)據(jù)的接收與解析、按鍵輸入處理、顯示控制等功能,并將功能模塊劃分為子任務(wù)中斷處理的方式運行,提高了軟件運行的實時性。軟件運行總流程圖如圖5所示。
圖5 軟件運行總流程圖
μC/OS2是一種源碼開放的實時操作系統(tǒng),此操作系統(tǒng)內(nèi)核空間小,包括了多種操作系統(tǒng)特性,如任務(wù)調(diào)度、任務(wù)通信、內(nèi)存管理、中斷管理等。μC/OS2總共包括3個部分:核心代碼部分,該部分代碼與處理器無關(guān);設(shè)置代碼部分,該部分可以配置時間控制塊的數(shù)據(jù)及消息管理相關(guān)的配置;與處理器相關(guān)的移植代碼部分。針對STM32處理器的μC/OS2移植主要集中在對以下幾個文件的修改[4]:
1)os_cpu_c.c,主要是修改 OSTaskStkInit()函數(shù),用來完成初始化任務(wù)堆棧結(jié)構(gòu)。
2)os_cpu_a.s,對STM32處理器的寄存器進行操作,包括 OSSrartHighRdy(),OSCtxSw(),OSInitCtxSw()和 OSTickISR()這4個函數(shù)。
3)os_cpu.h,定義和STM32處理器相關(guān)的數(shù)據(jù)結(jié)構(gòu),定義開關(guān)中斷的方式及指令實現(xiàn),對堆棧的增長方向進行定義。
4)中斷向量表:對啟動文件中的中斷向量表進行修改,主要將PendSV_Handler和SysTick_Handler替換為STM32處理器匹配的中斷向量表。
CAN總線接口軟件的設(shè)計主要包括STM32處理器中CAN總線協(xié)議控制器的初始化、CAN總線數(shù)據(jù)的收發(fā)、CAN總線數(shù)據(jù)的解析等方面。CAN總線初始化主要包括CAN功能的使能、波特率的設(shè)置、FIFO的指定等內(nèi)容。在完成CAN總線的初始化后,即可開始CAN總線數(shù)據(jù)的收發(fā)[5]。由于采用了中斷申請的工作方式,在接收到FIFO數(shù)據(jù)達到閾值后,首先判斷數(shù)據(jù)的有效性,如果數(shù)據(jù)有效,再對數(shù)據(jù)進行拆包解析,根據(jù)數(shù)據(jù)不同的標(biāo)志位,解析出數(shù)據(jù)代表的含義,如油位、水位、開關(guān)量的狀態(tài)等,再將數(shù)據(jù)提交給顯示控制子任務(wù)進行顯示處理。
由于采用了UCGUI的圖形化界面開發(fā)環(huán)境,顯示控制軟件的設(shè)計可以大大簡化,但需要實現(xiàn)對S1D13513的控制,LCD液晶屏的顯示內(nèi)容實際由S1D13513完成具體操作。LCD顯示屏對于主處理器STM32來說,可以認(rèn)為是“透明”的。顯示控制軟件的設(shè)計,主要包括S1D13513的初始化及控制兩方面。初始化主要包括芯片工作模式配置、攝像頭輸入配置、顯示控件元素庫調(diào)入等內(nèi)容。在顯示控制方面,軟件接收到CAN總線接口子任務(wù)發(fā)送來的數(shù)據(jù)后,由STM32解析出需要顯示的數(shù)據(jù),并將數(shù)據(jù)傳送給各個狀態(tài)量顯示函數(shù),由S1D13513調(diào)用相應(yīng)的元素庫來刷新LCD液晶屏上的顯示內(nèi)容。攝像頭輸入視頻的處理,S1D13513直接接收來自ADV7180處理后的YUV信號,由STM32使能S1D13513的該功能,即可實現(xiàn)攝像頭視頻的同步顯示。由于本顯示終端沒有采用Linux操作系統(tǒng),無啟動等待時間,實現(xiàn)了開機即顯示的功能,提高了系統(tǒng)的工作效率。
經(jīng)實際測試驗證,本顯示終端啟動時間小于1 s,可達到開機即使用的要求,明顯優(yōu)于基于ARM+Linux系統(tǒng)15 s左右的啟動時間,CAN總線的可穩(wěn)定達到1 Mbit/s的波特率,工作溫度范圍可達到-30℃~+70℃,能夠適應(yīng)工程機械在惡劣環(huán)境下的作業(yè)需求。本顯示終端的實際運行效果如圖6所示。
圖6 顯示終端實際運行效果(照片)
本設(shè)計實現(xiàn)了一種基于STM32和μC/OS2架構(gòu)的顯示終端,利用CAN總線接收并實時顯示工程車輛上多種設(shè)備狀態(tài)信息,與常見的ARM+Linux的顯示終端相比,本設(shè)計具有啟動時間快、環(huán)境適應(yīng)性強、性價比高、開發(fā)周期短的特點,可滿足多種工程車輛的應(yīng)用需求,具有較好的市場前景。
[1]李頂根,陳軍,吳朝輝.基于Arm-Linux的車載信息平臺的研制[J].浙江大學(xué)學(xué)報:工學(xué)版,2006,40(9):1531-1535.
[2]楊秋萍,李疆.基于ARM-Linux智能車載信息終端的設(shè)計[J].科技信息,2012(30):29-30.
[3]佟鳴宇,彭開香.基于ARM芯片的CAN總線接口設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2009,36(7):1574-1576.
[4]任哲.嵌入式實時操作系統(tǒng)μC/OS-II原理及應(yīng)用[M].2版.北京:北京航空航天大學(xué)出版社,2009.
[5]龍志強,李小龍.CAN總線技術(shù)與應(yīng)用系統(tǒng)設(shè)計[M].北京:機械工業(yè)出版社,2013.