岳明臣,常龍,公棟梁,翁峰
山東科技大學機械電子工程學院,山東青島 266590
礦用新能源電機車以鋰離子蓄電池為動力源,具有體積小、重量輕、容量大、壽命長、綠色環保、使用安全等優點[1],越來越受到各煤礦企業的重視[2]。但是鋰離子蓄電池在使用的過程中各參數異常都會嚴重影響電池的壽命,進而影響電機車的性能。所以對礦用新能源電機車運行過程中能否全面、實時、準確地監測電池各項參數成為了礦用新能源電機車顯示系統的核心技術。隨著顯示技術的發展,以液晶顯示器為代表的平板顯示技術迅速崛起[3]。與傳統電機車的數碼管顯示相比,液晶顯示具有顯示信息量大、功耗低、壽命長、接口方便等優點[4-5],因此,礦用新能源電機車的顯示系統在設計中采用了液晶顯示技術。
μC/OS-II作為市場上最具代表性的嵌入式實時操作系統,以其源碼公開、執行效率高、實時性優等優點,在世界范圍內得到廣泛的使用[6],并且μC/OS-II已經通過了美國航天管理局的安全認證,可用于飛機、航天器等人命攸關的控制系統中,因此μC/OS-II在對實時性需求比較高的領域中發揮著重要的作用[7]。在礦用新能源電機車液晶顯示系統中嵌入μC/OS-II實時操作系統,使該液晶顯示系統能夠實時、準確地顯示電機車運行參數,符合礦用新能源電機車對于參數顯示的要求。
本設計液晶屏選用的是由ILI9481液晶控制器驅動的 S8233型閃耀 35系列 3.5寸液晶屏。ILI9481控制器的主要特點在于:支持8、9、16、18位并口數據傳輸以及串口數據傳輸;能夠進行睡眠模式和正常顯示模式間轉換;能夠設置顯示圖像的位置和方向,減少軟件設計困難;自帶345 600 bytes RAM,采用 RGB色彩顯示模式,顯示色彩高達262K;內部設有DC/DC轉換器,只要外接3.3 V電源就能提供LCD顯示所需電壓。
相比于普通的240×320點陣式3.5寸液晶屏,內置ILI9481控制器的液晶顯示屏能夠驅動480×320點陣,分辨率提高一倍。背光采用六顆正白高亮LED燈,并且使用增亮銀底偏光片,亮度比普通3.2寸液晶屏高50%,功耗僅上升10%,顯示更清晰,戶外使用更方便。
文中以ST公司的基于Cortex-M3內核的STM32F103ZET6為控制器來進行液晶顯示系統的設計。該控制器是基于ARM的32位微控制器,其內部的CAN接口兼容規范2.0A和2.0B協議,位速率高達1 MB/s;同時其內部具有靈活的靜態存儲器控制器——FSMC模塊,它的主要作用是將AHB傳輸信號轉換成適當的外部設備協議,同時能夠滿足訪問外部設備的時序要求。
液晶顯示器與微控制器的硬件連接如圖1所示:RESX是液晶外部復位引腳,用于液晶顯示器的復位;CSX是片選輸入引腳,用于選中該液晶顯示器;D/CX是數據/命令控制引腳,用于控制總線傳輸的是數據信息還是命令信息;WRX/SCL是寫/時鐘引腳;RDX是讀控制引腳;DB[17∶0]是18條總線,用于傳輸數據信息或者命令信息。UART接口模塊用于與上位機連接進行程序的調試,CAN模塊接口用于接收并處理報文信息,處理后將顯示在TFT液晶屏上。

圖1 液晶顯示系統硬件連接
在本設計中,采用STM32控制器自帶的FSMC模塊與ILI9481控制器進行通信。FSMC數據寬度可以支持到8位、16位和32位,為了與ILI9481的位寬匹配,數據總線采用16位數據模式,數據信號D[15∶0]對應ILI9481控制器的低16位,即LCD液晶屏RGB色彩顯示模式采用5∶6∶5分配形式[8](如表1所示)。選用 NE[1]信號、NOE信號和NEW信號分別作為ILI9481控制器的片選信號、讀選通信號和寫選通信號,ILI9481的命令字和數據分別對應到 STM32地址的 0x60000000和0x60020000。

表1 RGB色彩顯示模式5∶6∶5形式分配表
μC/OS-II的文件結構分為3部分,如圖2所示。第1部分為與處理器無關的內核代碼,如 OS_CORE.C、OS_TASK.C、OS_TIME.C 等;第 2 部分為與應用程序有關的配置文件,包括INCLUDES.H(內核需要的頭文件)、OS_CFG.H(內核配置的頭文件);第3部分為與移植有關的代碼,包括OS_CPU.H、OS_CPU_A_ASM、OS_CPU_C.C。因此移植 μC/OS-II的關鍵就是修改與移植有關的這3個文件[9]。
1)OS_CPU.H的基本配置和定義。
a)與編譯器相關的數據類型不可移植;
b)修改OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()兩個宏定義;
(2)一段還原過程中氫氣露點的提高能有效促進還原反應的遷移效果,得到形貌均勻、還原充分的二氧化鉬顆粒。
c)通過OS_STK_GROWTH定義棧的增長方式;
d)定義宏OS_TASK_SW()。

圖2 μC/OS-II文件結構
2)OS_CPU_A.ASM中移植4個與處理器有關的匯編函數。
a)OSStartHighRdy()被uC/OS-II啟動函數OSStart()調用,主要完成運行任務就緒表中優先級最高的任務功能;
b)OSCtxSw()在任務調度函數OS_Sched()被調用,通過SWI或TRAP人為地制造中斷來實現任務級的任務切換;
c)OSIntCtxSw()在退出中斷服務函數OSIntExit()中被調用,用來實現中斷級任務的切換;
d)OSTickISR()是時鐘節拍服務函數,為μC/OS-II提供一個周期性的時鐘源,用來實現時間的延遲和精確的中斷功能。
3)OS_CPU_C.C中修改與操作系統相關的函數。
在μC/OS-II運行應用程序前,必須對操作系統進行初始化和啟動操作。主要包括:μC/OS-II運行環境的初始化、目標板初始化、任務(CAN模塊任務和液晶顯示模塊任務)的創建和μC/OS-II啟動,其流程圖如圖4所示。
μC/OS-II在啟動前必須調用 OSInit()對 μC/OS-II的運行環境進行初始化。OSInit()主要負責建立空閑任務、初始化μC/OS-II中的變量及數據結構,包括信號量、郵箱、消息隊列等。在操作系統完成初始化后,需要初始化目標板,包括系統時鐘初始化、滴答定時器初始化、CAN控制器初始化、靜態存儲器控制器(FSMC)初始化、中斷初始化等,將STM32系列微控制器獨有的滴答定時器設置為μC/OS-II系統的時鐘節拍,在滴答定時器中斷服務函數中通過調用OSTimeTick()函數來實現任務的切換。目標板初始化完成之后,系統調用OSTaskCreate()函數來對本設計中的CAN模塊任務和液晶顯示任務進行創建,同時進行了任務優先級的設置。最后,系統調用啟動函數OSStart(),選擇任務就緒表中優先級最高的任務來啟動多任務環境并運行任務。

圖4 μC/OS-II系統啟動流程
本礦用新能源電機車液晶顯示系統的任務設計主要包括兩類,分別是CAN模塊任務的設計和液晶顯示任務的設計。
CAN模塊任務屬于事件觸發類任務,其任務函數的結構為:

由以上函數結構可知,在獲得這個信息之前該任務處于等待狀態,CPU將運行權轉給就緒表中優先級最高的任務,當另一個任務(或ISR)發出相關信息時,OS就使該任務進入就緒狀態,并且通過任務調度,使任務的實體代碼獲得運行權。在CAN模塊任務的設計中,需要等待CAN接收中斷事件,才能進行后續任務實體代碼的運行,即CAN報文處理函數,此函數將接收到的報文數據解碼成數據信息用于液晶屏的顯示。由于CAN接收中斷服務函數中需要對接收到的報文進行存儲,為了減少系統的中斷響應時間,CAN中斷服務函數將只進行報文數據的緩存而不進行處理,并將返回的緩存地址指針發送給CAN任務模塊,因此CAN中斷服務函數發送的時間選擇消息隊列事件,此事件能在發送信號的同時攜帶數據,其任務流程如圖5所示。液晶顯示任務主要完成數據信息的刷新和顯示界面的切換。數據信息的刷新設置成周期性任務,通過調用OSTimeDly()函數來設置數據的刷新周期;顯示界面通過調用OSMboxAccept()函數來判斷是否需要進行界面切換,然后調用顯示界面函數Display_Interface_Select()對界面進行顯示。液晶屏顯示任務程序流程如圖6所示。

圖5 CAN模塊任務流程

圖6 液晶顯示任務流程
對上述液晶顯示系統進行實驗測試,CAN總線波特率為400 Kb/s。單體電池顯示界面如圖7所示,用于顯示各單體電池電壓、溫度、SOC以及溫度傳感器狀態等信息,并通過灰白顏色交錯的信息以區別各相鄰單體的數據信息。

圖7 單體電池顯示界面
在此顯示界面中,同時顯示8節單體電池組成的模塊的各種信息,如模塊SOC、模塊狀態等以便總體掌握整個模塊的信息。模塊信息顯示界面是針對各模塊的信息進行顯示,包括模塊電壓、電流、SOC以及模塊狀態等,顯示效果如圖8所示。

圖8 模塊信息顯示界面
以礦用新能源電機車液晶顯示系統為研究對象,將μC/OS-II移植到該液晶顯示系統中,在此基礎上編寫了液晶顯示系統的應用程序。對此系統進行實驗,結果顯示:當總線的波特率為400 Kb/s時,該液晶顯示系統能夠準確地完成各界面的顯示功能。為使系統更加完善,下一步的工作包括:1)增加觸摸屏功能,這樣可以更加方便的進行界面的切換;2)系統低功耗處理,如延時背光燈自動關閉,警報時自動喚醒或者可通過按鍵喚醒等。
[1]ARMAND M,TARASCON J M.Building better batteries[J].Nature,2008,451:652-657.
[2]樊海軍,丁學明,徐紅平.鋰電池組智能管理系統設計及實現[J].電源技術,2011,35(5):510-513.
[3]黃健.液晶屏控制系統的研制[D].西安:西安電子科技大學,2007:2-3.
[4]付先成,鄒雪城,雷鑑銘.LCD控制器中央控制單元的設計[J].微電子學與計算機,2006,23(6):1-4.
[5]彭志紅,袁野,林韻英,等.國內液晶顯示技術的發展概況[J].電視技術,2013,37(S2):425-426.
[6]張小芳,李向華,陸起涌.uC/OS-Ⅱ在儀器儀表中的應用[J].儀器儀表學報,2003,24(4):131-133.
[7]劉明波,孫永燦,耿文建.基于uC/OS-II的嵌入式網絡監控系統的設計與實現[J].計算機工程與設計,2010,31(24):5211-5215.
[8]周立功.深入淺出ARM7[M].北京:北京航空航天大學出版社,2008:79-139.
[9]劉紅霞,印文達.一種火災報警系統研究與實現[J].煤炭技術,2010,29(12):95-96.
[10]趙劉強,林永君,馬良玉,等.基于uC/OS-II嵌入式系統的數據采集系統[J].微計算機信息,2010,26(2):65-66.