鐘濤+祝玲
【摘要】 嵌入式設(shè)備雖然遍布我們生活中,但嵌入式設(shè)備的人機(jī)交互問(wèn)題還沒(méi)有完美的解決方案;在新環(huán)境下不論是傳統(tǒng)的LCD顯示器或者是OLED顯示屏都已無(wú)法滿足多元的信息交互,在此背景下支持多元素的信息交互系統(tǒng)emWin已經(jīng)誕生并迅速發(fā)展成熟。此項(xiàng)目?jī)?nèi)容為利用STM32為硬件平臺(tái),配合emWin系統(tǒng)實(shí)現(xiàn)圖形應(yīng)用程序下的GSM通信服務(wù),例如文本信息和語(yǔ)音撥號(hào)服務(wù)等。同時(shí)介紹了emWin系統(tǒng)的設(shè)計(jì)方法和開(kāi)發(fā)流程,及系統(tǒng)后期維護(hù)與更新的相關(guān)事宜。
【關(guān)鍵字】 STM32 emWin系統(tǒng) GSM/GPRS A6通信
一、引言
在嵌入式設(shè)備中,提高人機(jī)交互是所有嵌入式設(shè)備設(shè)計(jì)者必須考慮的首要問(wèn)題;與以往不同,隨著科技的發(fā)展和各種電子成像技術(shù)的成熟,讓我們告別了傳統(tǒng)了黑白顯示屏。在嵌入式設(shè)備中,傳統(tǒng)的LCD1602、LCD12864以及OLED屏正逐步被擁有高像素的電容觸摸屏取代;與此同時(shí),圖形應(yīng)用程序的開(kāi)發(fā)也迎來(lái)了一個(gè)新的挑戰(zhàn)。如何讓人機(jī)交互更加智能,如何讓圖像顯示技術(shù)更加美觀,如何在嵌入式系統(tǒng)上設(shè)計(jì)圖形應(yīng)用程序成為了嵌入式設(shè)計(jì)開(kāi)發(fā)的新問(wèn)題。此項(xiàng)目以STM32為嵌入式硬件平臺(tái),搭建emWin系統(tǒng)實(shí)現(xiàn)嵌入式圖形應(yīng)用程序設(shè)計(jì)提供了重要技術(shù)支持。
二、The embedded experts windows manager
The embedded experts windows manager[1]簡(jiǎn)稱emWin,是全球嵌入式大咖公司Segger針對(duì)嵌入式平臺(tái)圖形界面處理的優(yōu)秀作品之一;其通過(guò)豐富的圖形軟件庫(kù),即可讓嵌入式界面應(yīng)用開(kāi)發(fā)變得簡(jiǎn)單而快捷。同時(shí),emWin提供了繪制2D圖形、顯示位圖文件、顯示文字信息、處理用戶輸入等功能大大解決了人機(jī)交互的設(shè)計(jì)難題。與Micrium公司的uC/OS系統(tǒng)相比,由于Segger公司向ST公司出售了emWin版權(quán),所以當(dāng)我們?cè)赟TM32芯片上使用emWin時(shí)就免去了昂貴的版權(quán)費(fèi)用。
三、項(xiàng)目架構(gòu)
3.1 項(xiàng)目總體架構(gòu):STM32+GSM+emWin
利用STM32為硬件支持平臺(tái)并自定義開(kāi)發(fā)出可以在此平臺(tái)上流暢運(yùn)行的emWin系統(tǒng),同時(shí)配置GSM通信功能,實(shí)現(xiàn)STM32單片機(jī)、GSM通信服務(wù)和emWin系統(tǒng)結(jié)合,達(dá)到利用emWin系統(tǒng)處理人機(jī)交互,呈現(xiàn)圖形應(yīng)用等功能,例如開(kāi)發(fā)圖形應(yīng)用程序完成文本短信發(fā)送、撥打語(yǔ)音電話等。
在技術(shù)上,采用兩個(gè)模塊實(shí)現(xiàn)此項(xiàng)目:
其一:emWin系統(tǒng)采用獨(dú)立的STM32單片機(jī)控制,即在一塊STM32單片機(jī)上設(shè)計(jì)并運(yùn)行emWin系統(tǒng),同時(shí)預(yù)留出其串口協(xié)議通信引腳,即RX、TX和GND引腳。
其二:用第二塊STM32單片機(jī)實(shí)現(xiàn)GSM通信功能,然后利用emWin主機(jī)預(yù)留的串口協(xié)議端口進(jìn)行雙機(jī)通信即可使用串口協(xié)議發(fā)送圖形應(yīng)用程序控制指令到enWin機(jī),從而實(shí)現(xiàn)enWin的控制。在人機(jī)交互上,用戶通過(guò)圖形用用程序輸入短信文本信息或者語(yǔ)音撥號(hào)號(hào)碼,emWin獲取后即可配合GSM機(jī)實(shí)現(xiàn)短信或撥號(hào)服務(wù)。
3.2元器選型
在Cortex-M3和Contex-M4家族系列中,由于內(nèi)存大小、外設(shè)支持度、內(nèi)核差異等因素把STM32單片機(jī)分為許多型號(hào),此項(xiàng)目選用型號(hào)為STM32F103ZET6的Cortex-M3單片機(jī)作為emWin系統(tǒng)的硬件平臺(tái)。其72MHz的主頻、64KB的SRAM、512KB的FLASH已經(jīng)足夠運(yùn)行emWin系統(tǒng),同時(shí)由于Cortex-M3系列單片機(jī)支持FSMC接口,所以在讓硬件電路更容易實(shí)現(xiàn)。
市場(chǎng)上支持文本短信內(nèi)容發(fā)送、撥打語(yǔ)言電話的處理芯片很多,例如SIM800A、SIM900A等經(jīng)典應(yīng)用芯片。但,為了項(xiàng)目后期的拓展方便,此項(xiàng)目選擇GSM/GPRS A6作為通信芯片,其支持850、900、1800和1900MHz四個(gè)頻段,同時(shí)支持一個(gè)下載串口,一個(gè)AT命令口,非常易于和STM32單片機(jī)通信。
四、在STM32上進(jìn)行emWin系統(tǒng)設(shè)計(jì)
由于Segger公司向ST公司出售了版權(quán),所以當(dāng)我們?cè)赟TM32上使用emWin時(shí)可以到Segger官網(wǎng)注冊(cè)賬戶并下載emWin基礎(chǔ)軟件庫(kù)即可。在emWin基礎(chǔ)軟件庫(kù)中包含Config、Documentation、inc、Lib、OS、Software等目錄;其中Config文件用于配置emWin的存儲(chǔ)空間等信息,inc文件包含了emWin基礎(chǔ)庫(kù)核心頭文件,Lib文件包含了針對(duì)于Cortex-M3和M4不同內(nèi)核、不同開(kāi)發(fā)環(huán)境的庫(kù)文件。
4.1 創(chuàng)建自定義庫(kù)
在emWin提供的基礎(chǔ)源碼庫(kù)上創(chuàng)建自定義庫(kù)是較為容易的。首先復(fù)制基礎(chǔ)庫(kù)中Sample\Makelib到根目錄下,并根據(jù)需要進(jìn)行必要修改;其中Makelib.bat為啟動(dòng)文件,Prep. bat為要使用的工具鏈準(zhǔn)備環(huán)境,cc.bat由Makelib.bat調(diào)用。
4.2 emWin輸入輸出交互
經(jīng)過(guò)對(duì)emWin基礎(chǔ)庫(kù)的改寫(xiě)和二次封裝我們可以讓emWin輕松幫助我們完成一些輸出交互任務(wù),例如輸出字符可以調(diào)用:GUI_DispString("Hello world!");除此之外emWin還可以很輕松幫助我們顯示圖形,應(yīng)值得注意的是目前emWin僅支持顯示BMP、JPEG、GIF和PNG格式的圖片文件,其原因是因?yàn)閑mWin內(nèi)核暫不支持其他格式的圖象文件;但對(duì)于嵌入式設(shè)備來(lái)說(shuō),emWin支持這四種格式已經(jīng)非常強(qiáng)大了,因?yàn)榍度胧皆O(shè)備的專用性決定了其使用場(chǎng)景。
除此之外,emWin還支持包含觸摸屏、鼠標(biāo)、游戲操作桿等指針輸入設(shè)備,可以說(shuō)只要有設(shè)備適當(dāng)?shù)尿?qū)動(dòng),想要實(shí)現(xiàn)多元豐富emWin的輸入交互是完全有可能的。例如當(dāng)我們想要判斷用戶的鼠標(biāo)輸入是否啟動(dòng),我們可以調(diào)用GUI_ PID_GetState()函數(shù)來(lái)實(shí)現(xiàn),每當(dāng)鼠標(biāo)執(zhí)行按下或者松開(kāi)動(dòng)作時(shí)GUI_PID_GetState()都會(huì)記錄下其狀態(tài),其中用1表示鼠標(biāo)被按下,否則用0表示鼠標(biāo)松開(kāi)。
4.3 讓emWin支持多種語(yǔ)言
在傳統(tǒng)的人機(jī)交互設(shè)備中,基本上不支持除英語(yǔ)外的其他語(yǔ)言;隨著emWin成長(zhǎng),多國(guó)外語(yǔ)支持已經(jīng)不再是嵌入式設(shè)備多元交互的難題。EmWin支持根據(jù)Unicode標(biāo)準(zhǔn)定義的字符或者字符串,但前提是要預(yù)先使用GUI_UC_ ConvertUTF82UC( )將UTF-8文本轉(zhuǎn)換成C編碼。
另外,emWin作為嵌入式圖形應(yīng)用開(kāi)發(fā)系統(tǒng)來(lái)說(shuō)較為神奇的是其支持阿拉伯語(yǔ)和泰語(yǔ);由于阿拉伯語(yǔ)是從右往左書(shū)寫(xiě),并且不區(qū)分大小寫(xiě),所以傳統(tǒng)的Unicode處理方式對(duì)阿拉伯語(yǔ)并不適用,此時(shí)emWin使用記號(hào)形式來(lái)表示字符。對(duì)泰語(yǔ)而言,由于其采用了符合字符,要想完成對(duì)泰語(yǔ)的編碼和解碼,這時(shí)候就需要?jiǎng)?chuàng)建一個(gè)擴(kuò)展類(lèi)型的字體文件。
4.4 模擬驗(yàn)證
當(dāng)我們用PC設(shè)計(jì)好自己的圖形界面應(yīng)用后,可以使用Microsoft Visual C++來(lái)模擬、驗(yàn)證圖形應(yīng)用的功能是否完善。具體方法操作如下:
第1步:雙擊SimulationTrial.dsw,打開(kāi)Visual C++工作空間
第2步:從菜單欄選擇Build/Rebuild All,重建項(xiàng)目
第3步:從菜單欄選擇Build/Start Debug/Go,啟動(dòng)模擬
應(yīng)特別注意:使用PC軟件模擬時(shí)由于其硬件平臺(tái)與嵌入式平臺(tái)差異,所以在響應(yīng)時(shí)間、圖像呈現(xiàn)、分辨率上存在一定差異。所以謹(jǐn)慎使用模擬功能。