孫 波
(江蘇自動化研究所,江蘇連云港222061)
工程車輛顯示終端是諸如挖掘機、起重機等工程機械車輛上的核心單元之一,可以通過柱狀圖、虛擬開關、虛擬儀表盤等可視化界面,實現對車輛水溫、油位、轉速、開關、電磁閥、通信端口等工作狀態的實時顯示。近年來,隨著我國基礎設施建設的深入開展,工程車輛的種類與功能不斷豐富,對工程車輛顯示終端的性能水平、安全可靠性也提出了更高的要求。常見的車輛顯示終端往往采用ARM+Linux的軟硬件架構[1-2],性能較強,但價格較高且開發難度大、開發周期長。本文針對工程機械車輛顯示終端的安全可靠性、顯示實時性等方面的實際需求,提出基于STM32(基于ARM Cortex-M3內核)處理器和μC/OS2操作系統架構的設計思路,以STM32處理器為核心,通過擴展電源管理模塊、通信端口適配模塊以及顯示控制模塊等,實現對車輛上所有傳感器、通信端口、攝像頭視頻、設備工作狀態等信息實時顯示。
工程車輛顯示終端的系統總體框圖如圖1如示,處理器STM32F207為顯示終端的核心,通過FSMC(Flexible Static Memory Controller)機制擴展了SRAM和Flash,分別作為處理器運行時的數據緩存與可視化圖形元素的存儲空間。顯示控制芯片采用EPSON公司的S1D13513,并擴展一片專用的SDRAM作為顯示緩存。STM32處理器與S1D13513之間通過FSMC機制實現數據通信。攝像頭視頻輸入信號經過ADV7180芯片采樣處理后轉換為YUV信號并接入S1D13513,由S1D13513負責LCD液晶屏所有顯示內容的輸出控制。另外,為了適應車輛上電源輸入動態范圍大、干擾多等特點,電源管理模塊利用外部輸入的電壓,輸出多種穩定的工作電平,保證顯示終端穩定工作。

圖1 顯示終端的系統總體框圖
顯示終端需要12 V,5 V,3.3 V和1.8 V 共4種工作電壓,而只能使用來自工程車輛上標稱為24 V的蓄電池作為輸入電源。由于儲電量等因素的不同,蓄電池輸出電壓并不固定,范圍有可能在9~36 V左右緩慢變化。本設計采用Linear公司的LT3980產生12 V與5 V電壓。LT3980可以在3.6~58 V輸入電壓的范圍內工作,具有過壓閉鎖保護,可承受高達80 V的瞬態電壓,該器件非常適用于汽車應用中常見的負載突變和冷車啟動等情況。3.3 V和1.8 V采用LT1117芯片從5 V電壓變換獲得。另外,考慮到車輛上其他設備在啟動、工作時在電源上產生的干擾脈沖,甚至在現場可能產生人為失誤造成的電源正負極反接等情況,在LT3980的前端,需要采取必要的防過壓、抗瞬間干擾、防反接的措施。如圖2所示,二極管D1可以為蓄電池BAT上的瞬間高壓提供一條快速釋放通道,并可保證在電源反接時電壓無法加至后級電路,電感L1與電容C1可以有效抑制電源的瞬態干擾,防止瞬態干擾影響顯示終端的正常工作。

圖2 電源管理模塊
本設計采用ST公司的STM32F207ZE作為主處理器,采用S1D13513作為顯示控制芯片。S1D13513是EPSON公司推出的一款高性能、低功耗的液晶控制器,帶有大容量SDRAM接口,支持片外擴展SDRAM作為顯存,支持單屏RGB接口,最高支持1 024×768的分辨率,支持多種流行CPU的直接或間接訪問,適合移動通信、手持設備及車輛等領域的應用。處理器通過FSMC機制與S1D13513進行通信,相當于將S1D13513映射為一種片外存儲器。本設計中S1D13513采用直接Intel 80模式1。模式選擇依賴CNF[8:0]引腳的上電復位時的配置,其中CNF[8:7]決定了芯片的工作時鐘源,CNF[6]決定了CNF[5:0]的配置對象,CN[5:0]決定了具體的總線接口配置內容。通過配置CNF[8:0]引腳的復位電平,將引腳上電輸入狀態設置為0x144,表明使用OSC1作為時鐘源、工作方式為直接Intel80模式1。S1D13513采用了哈佛架構,在與處理器連接時,地址與數據分開,其與處理器的接口部分包含16位數據線、21位地址線、片選信號、中斷信號及讀寫控制信號等,可以將STM32的FSMC地址、數據總線、片選信號直接與S1D13513連接,如圖3所示。
STM32F207ZE的片外Flash、SRAM擴展電路,以及S1D13513的片外SDRAM擴展電路、攝像頭輸入電路、LCD液晶屏顯示電路等,參考芯片手冊中推薦的電路直接連接即可。

圖3 STM32F207與S1D13513的連接示意圖
由于STM32芯片內部集成了CAN總線協議控制器,因此只需要在外部為其增加CAN總線收發器,實現TTL電平到CAN總線電平的轉換適配[3]。本設計中采用的CAN總線收發器采用了NXP公司的TJA1040T,是一款針對汽車電子行業使用的高性能CAN收發器,其最主要的特點是芯片上有一個SPLIT的平衡電壓輸出端,用于輸出芯片自身的2.5 V電壓,用于抑制由于各節點地電平不同而造成的信號共模電壓差,或者抑制由于其他沒有上電節點造成的反向電流,可以使共模干擾的影響降低到最小,保證正常通信。總線終端節點R1、R2可以分別使用60 Ω的分裂端接電阻,若是總線中間節點使用1.3~2.7 Ω的分裂電阻,C1的典型值可以取47 nF。另外為了防止CAN總線上的瞬間高壓的干擾,二極管V1采用NXP公司的PESD1CAN,L1采用EPCOS公司的B82789作為扼流圈,防止瞬態干擾串入,防止CAN總線數據的錯誤接收(見圖4)。

圖4 CAN總線接口電路
顯示終端的軟件設計全部采用C語言編程,在STM32處理器的基礎上移植構建了μC/OS2操作系統,利用UCGUI圖形開發環境,完成CAN接收FIFO中數據的接收與解析、按鍵輸入處理、顯示控制等功能,并將功能模塊劃分為子任務中斷處理的方式運行,提高了軟件運行的實時性。軟件運行總流程圖如圖5所示。

圖5 軟件運行總流程圖
μC/OS2是一種源碼開放的實時操作系統,此操作系統內核空間小,包括了多種操作系統特性,如任務調度、任務通信、內存管理、中斷管理等。μC/OS2總共包括3個部分:核心代碼部分,該部分代碼與處理器無關;設置代碼部分,該部分可以配置時間控制塊的數據及消息管理相關的配置;與處理器相關的移植代碼部分。針對STM32處理器的μC/OS2移植主要集中在對以下幾個文件的修改[4]:
1)os_cpu_c.c,主要是修改 OSTaskStkInit()函數,用來完成初始化任務堆棧結構。
2)os_cpu_a.s,對STM32處理器的寄存器進行操作,包括 OSSrartHighRdy(),OSCtxSw(),OSInitCtxSw()和 OSTickISR()這4個函數。
3)os_cpu.h,定義和STM32處理器相關的數據結構,定義開關中斷的方式及指令實現,對堆棧的增長方向進行定義。
4)中斷向量表:對啟動文件中的中斷向量表進行修改,主要將PendSV_Handler和SysTick_Handler替換為STM32處理器匹配的中斷向量表。
CAN總線接口軟件的設計主要包括STM32處理器中CAN總線協議控制器的初始化、CAN總線數據的收發、CAN總線數據的解析等方面。CAN總線初始化主要包括CAN功能的使能、波特率的設置、FIFO的指定等內容。在完成CAN總線的初始化后,即可開始CAN總線數據的收發[5]。由于采用了中斷申請的工作方式,在接收到FIFO數據達到閾值后,首先判斷數據的有效性,如果數據有效,再對數據進行拆包解析,根據數據不同的標志位,解析出數據代表的含義,如油位、水位、開關量的狀態等,再將數據提交給顯示控制子任務進行顯示處理。
由于采用了UCGUI的圖形化界面開發環境,顯示控制軟件的設計可以大大簡化,但需要實現對S1D13513的控制,LCD液晶屏的顯示內容實際由S1D13513完成具體操作。LCD顯示屏對于主處理器STM32來說,可以認為是“透明”的。顯示控制軟件的設計,主要包括S1D13513的初始化及控制兩方面。初始化主要包括芯片工作模式配置、攝像頭輸入配置、顯示控件元素庫調入等內容。在顯示控制方面,軟件接收到CAN總線接口子任務發送來的數據后,由STM32解析出需要顯示的數據,并將數據傳送給各個狀態量顯示函數,由S1D13513調用相應的元素庫來刷新LCD液晶屏上的顯示內容。攝像頭輸入視頻的處理,S1D13513直接接收來自ADV7180處理后的YUV信號,由STM32使能S1D13513的該功能,即可實現攝像頭視頻的同步顯示。由于本顯示終端沒有采用Linux操作系統,無啟動等待時間,實現了開機即顯示的功能,提高了系統的工作效率。
經實際測試驗證,本顯示終端啟動時間小于1 s,可達到開機即使用的要求,明顯優于基于ARM+Linux系統15 s左右的啟動時間,CAN總線的可穩定達到1 Mbit/s的波特率,工作溫度范圍可達到-30℃~+70℃,能夠適應工程機械在惡劣環境下的作業需求。本顯示終端的實際運行效果如圖6所示。

圖6 顯示終端實際運行效果(照片)
本設計實現了一種基于STM32和μC/OS2架構的顯示終端,利用CAN總線接收并實時顯示工程車輛上多種設備狀態信息,與常見的ARM+Linux的顯示終端相比,本設計具有啟動時間快、環境適應性強、性價比高、開發周期短的特點,可滿足多種工程車輛的應用需求,具有較好的市場前景。
[1]李頂根,陳軍,吳朝輝.基于Arm-Linux的車載信息平臺的研制[J].浙江大學學報:工學版,2006,40(9):1531-1535.
[2]楊秋萍,李疆.基于ARM-Linux智能車載信息終端的設計[J].科技信息,2012(30):29-30.
[3]佟鳴宇,彭開香.基于ARM芯片的CAN總線接口設計與實現[J].計算機工程與設計,2009,36(7):1574-1576.
[4]任哲.嵌入式實時操作系統μC/OS-II原理及應用[M].2版.北京:北京航空航天大學出版社,2009.
[5]龍志強,李小龍.CAN總線技術與應用系統設計[M].北京:機械工業出版社,2013.