1、引 言
隨著居民生活水平的提高和氣象意識的增強(qiáng),近年來自動氣象站得到了大力的發(fā)展。自動氣象站需要可視化的人機(jī)界面,既能發(fā)布動態(tài)的氣象數(shù)據(jù),也能對氣象站發(fā)送控制指令。因此,自動氣象站擁有可視化的液晶顯示控制模塊是非常重要的。
為了節(jié)約硬件資源,采用STM32F103VET6單片機(jī)驅(qū)動7寸觸摸屏作為顯示控制模塊的硬件平臺。為實(shí)現(xiàn)多任務(wù)處理,移植經(jīng)過裁剪和修改的UC/OS-II操作系統(tǒng)。同時移植可裁剪的界面設(shè)計(jì)軟件接口UCGUI,實(shí)現(xiàn)可視化人機(jī)界面。構(gòu)建軟硬件可裁剪的自動氣象站控制模塊,即能滿足自動氣象站工作現(xiàn)場的任務(wù)需求,也減少了軟硬件資源的浪費(fèi),充分發(fā)揮了嵌入式產(chǎn)品在工控現(xiàn)場的優(yōu)勢。
2、系統(tǒng)整體框圖
采用STM32F103VET6作為主控制器芯片,利用TFT屏驅(qū)動程序和觸摸驅(qū)動程序驅(qū)動7寸觸摸屏,系統(tǒng)整體框圖如圖1所示。
針對該CPU移植UC/GUI和UC/OS-II是本文的關(guān)鍵。液晶驅(qū)動程序和觸摸驅(qū)動程序配合UCGUI提供的接口函數(shù),搭建可視化人機(jī)交互界面,移植適用于本系列CPU的UC/OS-II實(shí)現(xiàn)多任務(wù)處理。
圖1 ?系統(tǒng)整體
3、驅(qū)動觸摸屏硬件電路設(shè)計(jì)
基于價格和性能的綜合考慮,選擇STM32F103VET6作為主控制器芯片。STM32F103系列CPU采用CORTEX-M3內(nèi)核,最高工作頻率72MHz,擁有256~512KBFLASH程序存儲器,并行LCD接口,兼容8080/6800模式。
LCD模塊采用群創(chuàng)AT070TN90系列TFT屏。該液晶顯示模塊由LCD面板,SSD1963控制電路,電源與調(diào)壓器電路,背光控制電路4部分組成。其中SSD1963控制電路包含了1塊SSD1963控制芯片,負(fù)責(zé)與處理器進(jìn)行通信,根據(jù)處理器傳輸過來的數(shù)據(jù)刷新內(nèi)部顯存,控制LCD面板刷新顯示。
TFT顯示屏與STM32F103的接口如圖2所示。
圖2 ?TFT顯示屏與STM32F103的接口電路
TFT顯示屏表面貼有一塊XPT2046控制的四線制觸摸屏,該觸摸屏的Y+,Y-,X+,X-分別與XPT2046的4個引腳相連。當(dāng)屏幕被按下時,XPT2046內(nèi)部的125KHz轉(zhuǎn)換速率的逐步逼近型12位A/D轉(zhuǎn)換器執(zhí)行2次A/D轉(zhuǎn)換計(jì)算觸摸位置,然后以SPI總線方式傳送給CPU。
4、系統(tǒng)軟件設(shè)計(jì)
4.1、LCD底層控制函數(shù)的實(shí)現(xiàn)
移植GUI接口主要實(shí)現(xiàn)包括畫點(diǎn)、線、矩形、多邊形、位圖等功能。GUI所有的系統(tǒng)函數(shù)都是通過調(diào)用這些接口函數(shù)來實(shí)現(xiàn)的,而這些接口函數(shù)又都是基于畫點(diǎn)函數(shù)來實(shí)現(xiàn),幾乎GUI顯示功能都最終調(diào)用畫點(diǎn)函數(shù),所以LCD驅(qū)動程序重點(diǎn)在畫點(diǎn)函數(shù)的編寫。
/*在指定坐標(biāo)畫指定顏色的點(diǎn)*/
vOIDLCD_SETPOINT(U16X,U16Y,U16C)
{
LCD_WRITECOM(0X002A);
LCD_WRITERAM(X>>8);
LCD_WRITERAM(X&0X00FF);
LCD_WRITERAM(HDP>>8);
LCD_WRITERAM(HDP&0X00FF);
LCD_WRITECOM(0X002B);
LCD_WRITERAM(Y&0X00FF);
LCD_WRITERAM(VDP>>8);
LCD_WRITERAM(VDP&0X00FF);
LCD_WRITECOM(0X002C);
LCD_WRITERAM(C);
}
實(shí)現(xiàn)了對LCD像素的操作,進(jìn)而修改移植UCGUI圖形接口,從而方便UCGUI通過調(diào)用該最底層函數(shù)來實(shí)現(xiàn)豐富的圖形界面。
4.2、UCGUI組織結(jié)構(gòu)
UCGUI是一種小型嵌入式圖形界面接口,獨(dú)立于CPU和LCD控制器,對系統(tǒng)要求很低。8/16/32位CPU,2~6KB的RAM,30~60KB的ROM,2KB的堆棧即可滿足。UCGUI接口完全對外開放,結(jié)構(gòu)如表1所示。
表1 UCGUI源碼組織結(jié)構(gòu)
4.3、修改配置UCGUI頭文件工作
移植UCGUI的前提就是修改配置頭文件。根據(jù)硬件電路設(shè)計(jì),顯示器控制器型號,以及設(shè)計(jì)中將使用UC/OS操作系統(tǒng)的實(shí)際情況,配置頭文件具體修改如下:
將該修改完頭文件的UCGUI源碼包編譯進(jìn)工程,利用GUI自帶的圖形接口函數(shù),便可在LCD屏上任意位置畫任意的圖形。實(shí)現(xiàn)自動氣象站的多任務(wù)處理的功能,給液晶顯示控制模塊移植一個結(jié)構(gòu)小巧的UC/OS-II操作系統(tǒng)也是必不可少的。
4.4、UC/OS-II框架結(jié)構(gòu)
UC/OS-II是免費(fèi)的公開的源代碼,具有可剝奪內(nèi)核。絕大部分代碼用C語言編寫,僅有與CPU相關(guān)的代碼用匯編編寫,總量也僅為200行左右,被壓縮到最低限度以便移植到任意一種CPU上。只要有標(biāo)準(zhǔn)的C交叉編譯器,匯編器和連接器等軟件工具,就可以將UC/OS-II移植到例如STM32這樣的CPU中。因?yàn)槠鋱?zhí)行效率高,占用空間小,實(shí)時性好,可擴(kuò)展性強(qiáng),最小內(nèi)核可編譯至2KB,所以UC/OS-II能完美運(yùn)行于STM32中。
UC/OS-II可大致分成核心、任務(wù)處理、時間處理、任務(wù)同步與通信、CPU的移植等5個部分。
1)核心部分(OSCORE.C)包括操作系統(tǒng)初始化,系統(tǒng)運(yùn)行,中斷進(jìn)出的前導(dǎo)、時鐘節(jié)拍、任務(wù)調(diào)度、事件處理等部分。
2)任務(wù)處理部分(OSTASK.C)包括任務(wù)的建立、刪除、掛起、恢復(fù)等。因?yàn)閁C/OS-II是以任務(wù)為基本調(diào)度單位的,所以該部分也很重要。
3)時鐘部分(OSTIME.C)UC/OS-II中最小時鐘單位是TIMETICK(時鐘節(jié)拍),任務(wù)延遲等操作在此完成。
4)任務(wù)同步與通信部分此部分包括信號量、郵箱、郵箱隊(duì)列、事件標(biāo)志等部分。主要用于任務(wù)間的互相聯(lián)系和對臨界資源的訪問。
5)與CPU的接口部分該部分是UC/OS-II針對CPU移植的部分。該部分牽扯到SP等系統(tǒng)指針,所以通常由匯編語言編寫。
4.5、UC/OS-II修改裁剪工作
UC/OS-II在STM32上移植,前提需要修改3個文件,它們是OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM。
1)臨界代碼段
UC/OS-II為保證某段代碼完整執(zhí)行,需要臨時關(guān)閉中斷,代碼執(zhí)行完成后開啟中斷。UC/OS-II通過OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()2個宏來實(shí)現(xiàn)中斷的打開和關(guān)閉,對于M3內(nèi)核,棧增長方向是向下增長,因此需要宏定義OS_TASK_GROWTH為1。
5、測試結(jié)果
在μVISION4集成開發(fā)環(huán)境中編寫測試代碼。在主函數(shù)MAIN()中,系統(tǒng)函數(shù)OSTASKCREATEEXT()創(chuàng)建系統(tǒng)主任務(wù)APPTASKSTART(),在主任務(wù)中創(chuàng)建2個系統(tǒng)實(shí)際運(yùn)行的任務(wù)APPTASK_LCD()和APPTASK_LED(),設(shè)置任務(wù)優(yōu)先級和任務(wù)棧大小,2個任務(wù)用于液晶顯示和LED閃爍。APPTASK_LCD()和APPTASK_LED()的任務(wù)配置如表2所示。
表2任務(wù)參數(shù)設(shè)置
系統(tǒng)在2個任務(wù)情況下運(yùn)行效果如圖4所示。
圖4 顯示控制模塊
結(jié)果表明多任務(wù)運(yùn)行流暢,工作穩(wěn)定。因此,該自動氣象站控制模塊工作可靠有效。
6、結(jié) 論
設(shè)計(jì)基于STM32的自動氣象站控制模塊。STM32單片機(jī)的高速、低耗的優(yōu)越性能完全可以滿足觸摸屏主控制芯片的要求,TFT液晶顯示器可以滿足更復(fù)雜、多彩、靈活的顯示任務(wù),符合顯示屏性能不斷攀升的發(fā)展趨勢。將UC/OS-II操作系統(tǒng)和UC/GUI圖形接口同時移植到F103系列CPU中,實(shí)現(xiàn)多任務(wù)處理,完全適應(yīng)自動氣象站多變的任務(wù)需求,能承擔(dān)更加靈活的液晶顯示任務(wù)。相比傳統(tǒng)的自動氣象站控制模塊,設(shè)計(jì)在實(shí)現(xiàn)多任務(wù),多界面的前提下,將軟硬件資源的消耗上降到最低,體現(xiàn)了現(xiàn)代電子設(shè)備設(shè)計(jì)的低功耗低成本的特點(diǎn)。
評論