0 引言
觸摸屏是一種新型的電子輸入設(shè)備,是目前最簡(jiǎn)單、方便、自然的一種人機(jī)交互方式,它賦予了多媒體以嶄新的面貌,是極富吸引力的全新多媒體交互設(shè)備。將ARM Cortex-M3內(nèi)核和TFT觸摸屏結(jié)合在一起,以環(huán)境監(jiān)控系統(tǒng)為應(yīng)用,對(duì)ARM公司的Cortex-M3內(nèi)核進(jìn)行了分析,并研究了Cortex-M3內(nèi)核驅(qū)動(dòng)TFT液晶屏幕的可行性。
1 系統(tǒng)工作原理
無(wú)線(xiàn)環(huán)境監(jiān)控系統(tǒng)總體的設(shè)計(jì)框圖如圖1所示。以基于第二代Cortex-M3內(nèi)核的LPC1758為核心,以TFT觸摸屏為顯示和控制單元,以2.4 GHz無(wú)線(xiàn)模塊為通信單元,合理移植μCOS-II系統(tǒng),對(duì)環(huán)境參數(shù)進(jìn)行監(jiān)測(cè)和控制。
2 硬件電路設(shè)計(jì)與實(shí)現(xiàn)
2.1 電源方案
硬件電路降壓穩(wěn)壓電路采用降壓穩(wěn)壓芯片SPXlll7-3.3 V。電路在啟動(dòng)過(guò)程中會(huì)產(chǎn)生較大的沖擊電流,會(huì)對(duì)其他電路造成電磁干擾,系統(tǒng)在電源中增加容值較大的電解電容以滿(mǎn)足系統(tǒng)中各項(xiàng)要求。降壓穩(wěn)壓電路如圖2所示。
硬件電路升壓穩(wěn)壓電路是為T(mén)FT液晶屏提供直流12 V電壓驅(qū)動(dòng)而設(shè)計(jì)的。該電路選用PT4102芯片,PT4102是一款由單節(jié)鋰電池(持續(xù)電流)來(lái)驅(qū)動(dòng)至多個(gè)串聯(lián)LED的升壓轉(zhuǎn)換器,采用固定頻率電流模式來(lái)調(diào)節(jié)LED電流,并通過(guò)一個(gè)外部電流監(jiān)測(cè)電阻來(lái)測(cè)量此電流,95 mV的低反饋電壓可降低功耗和提高效率,PT4102還含有電流限制以避免在輸出過(guò)載時(shí)對(duì)器件造成損害。升壓穩(wěn)壓電路如圖3所示。
2.2 MCU方案
基于CorteX-M3的MCU選用的是荷蘭Philips公司LPCI000系列的LPC1758。運(yùn)行頻率高達(dá)100 MHz,支持8個(gè)區(qū)域的存儲(chǔ)器保護(hù)單元(MPU),高達(dá)512 KB片內(nèi)FLASH程序存儲(chǔ)器。增強(qiáng)型的FLASH存儲(chǔ)器加速器使能高速的100 MHz操作,而無(wú)需等待狀態(tài)(with zero wait states)?;ミB的多層AHB矩陣為每個(gè)AHB主機(jī)提供獨(dú)立的總線(xiàn)。這種互連所提供的通信不會(huì)有仲裁延時(shí)分開(kāi)的APB總線(xiàn)允許高吞吐量,幾乎不會(huì)在CPU和DMA之間出現(xiàn)中止。
系統(tǒng)采用12 MHz的無(wú)源晶振,為了保證晶振的諧振頻率和輸出幅度,在晶振的兩個(gè)引腳上加入了兩個(gè)22 pF的負(fù)載電容。在不影響電路正常工作的情況下,為了簡(jiǎn)化電路設(shè)計(jì),沒(méi)有將數(shù)字電路和模擬電路區(qū)分開(kāi)來(lái),VDDA與VDD直接相連、GNDA與GND直接相連。但是為了追求更優(yōu)秀的模擬性能(ADC和模擬比較器模塊),可以另外安排一路3.3 V電源,連接到VDDA和GNDA,使其與VDD和GND分開(kāi)。LPC1758部分電路圖如圖4所示。
系統(tǒng)采用如圖5所示的RC復(fù)位電路。復(fù)位電路中的二極管是為了解決電源毛刺和電源緩慢下降等問(wèn)題,而104電容可避免高頻諧波對(duì)電路的干擾。
2.3 TFT觸摸屏方案
TFT液晶顯示方案包括觸摸控制和液晶顯示兩個(gè)部分。為了保證顯示的速度要求和系統(tǒng)的穩(wěn)定性,觸摸屏控制器選用的是TI公司的TSC20 46,該控制器為SPI接口,具有觸摸中斷功能,性?xún)r(jià)比很高。而液晶屏選用的是SPFD5408A,該屏幕為3.5英寸,具有高速8,9,16,18位并行接口。可以顯示16位和18位的RGB色彩。
觸摸屏控制電路主要是TSC2046的外圍電路。MISO,MOSI是TSC2046與MCU之間的信號(hào)線(xiàn)。SCK是時(shí)鐘線(xiàn)。X+/-,Y+/-是觸摸屏的信號(hào),INT中觸摸中斷信號(hào)。VCC和VCCl是電路的供電信號(hào)。在輸入引腳為了保證電源的波形穩(wěn)定性,避免高頻諧波對(duì)TSC2046的干擾,加入了1個(gè)0.1μF的濾波電容。觸摸屏控制電路如圖6所示。
TFT液晶顯示電路包括模式選擇,16位接口,觸摸屏接口三個(gè)部分。SPFD5408A接口模式有7種模式,本設(shè)計(jì)中用的是16位并行接口模式。X+/-,Y+/-是四線(xiàn)電阻式觸摸屏的輸出線(xiàn)。
3 軟件設(shè)計(jì)與實(shí)現(xiàn)
為了提高系統(tǒng)的性能和滿(mǎn)足多任務(wù)處理的要求,系統(tǒng)中合理地移植了μCOS-Ⅱ操作系統(tǒng)。
μCOS-Ⅱ可以簡(jiǎn)單地看作是一個(gè)多任務(wù)的調(diào)度器,在這個(gè)任務(wù)調(diào)度器之上完善并添加了很多任務(wù)操作系統(tǒng)相關(guān)的一些系統(tǒng)服務(wù)。μCOS-Ⅱ 90%的代碼用C語(yǔ)言編寫(xiě),具有可移植性。移植工作的絕大部分都集中在多任務(wù)切換的實(shí)現(xiàn)上,因?yàn)檫@部分代碼主要是用來(lái)保存和恢復(fù)處理器現(xiàn)場(chǎng)(即相關(guān)寄存器),因此不能用C語(yǔ)言,只能使用特定的處理器匯編語(yǔ)言完成。為了使適時(shí)內(nèi)核μCOS-Ⅱ能在Cortex-M3處理器上運(yùn)行,同時(shí)為了保證代碼不依賴(lài)于編譯器和良好的擴(kuò)展性。采用了不依賴(lài)于編譯器的數(shù)據(jù)類(lèi)型,使用軟中斷SWI作為底層接口。移植μCOS-Ⅱ到Cortex-M3內(nèi)核需要3個(gè)文件:C語(yǔ)言頭文件(OS_CPU.H),C程序源文件(OS_CPU_C.C),匯編程序源文件(OS_CPU_A.ASM)。除此之外,還有一個(gè)文件定義的匯編宏也是移植的重點(diǎn),它是μCOS-Ⅱ?yàn)镃ortex-M3通用的中斷服務(wù)程序的匯編和C函數(shù)的接口代碼。
OS_CPU.H中包含兩部分的代碼,數(shù)據(jù)類(lèi)型定義代碼和與處理器相關(guān)的代碼。其中數(shù)據(jù)類(lèi)型重定義代碼是用C語(yǔ)言中short,int,long等,數(shù)據(jù)類(lèi)型是與特定的處理器相關(guān)的,因此在μCOS-Ⅱ重新定義為移植性很強(qiáng)的定義方式。在OS_CPU.H剩下的部分是移植必須定義底層函數(shù)的聲明。在LPC1758的移植中為了使底層接口函數(shù)與處理器的狀態(tài)無(wú)關(guān),同時(shí)使任務(wù)調(diào)用相應(yīng)的函數(shù)不需要知道函數(shù)的位置。在本移植中使用軟中斷指令SWI作為底層接口,使用不同的功能號(hào)來(lái)區(qū)分各函數(shù)。調(diào)用這些底層函數(shù),只需要使用一條SWI指令并跟上一個(gè)功能號(hào)來(lái)區(qū)別你要調(diào)用那個(gè)函數(shù)即可。任務(wù)切換函數(shù)為OS_TASK_SW(void),并使用軟中斷0x00。CPU_C.C中主要是軟中斷的實(shí)現(xiàn)和底層函數(shù)的實(shí)現(xiàn)及初始化任務(wù)堆棧函數(shù)的實(shí)現(xiàn),其偽代碼如下:
處理器能支持一定數(shù)量的數(shù)據(jù)存儲(chǔ)硬件堆棧;用C語(yǔ)言可以開(kāi)中斷/關(guān)中斷,根據(jù)不同的Num值跳轉(zhuǎn)到不同的底層服務(wù)函數(shù)地址。
系統(tǒng)的應(yīng)用程序包括三個(gè)任務(wù):實(shí)時(shí)顯示屏幕數(shù)據(jù)任務(wù),采集數(shù)據(jù)函數(shù),觸摸屏響應(yīng)任務(wù)。設(shè)計(jì)中采用了任務(wù)嵌套的方式,將數(shù)據(jù)采集和觸摸屏響應(yīng)嵌套到實(shí)時(shí)顯示屏幕數(shù)據(jù)任務(wù)之中,這樣數(shù)據(jù)在各個(gè)任務(wù)之間的傳遞很有邏輯性,整個(gè)系統(tǒng)比較健壯。任務(wù)間的通信如圖8所示。
移植μCOS-Ⅱ是為了在自己系統(tǒng)中使用μ肛COS-Ⅱ,要在自己的系統(tǒng)中使用μCOS-Ⅱ編寫(xiě)應(yīng)用程序。應(yīng)用程序包括相應(yīng)的頭文件,任務(wù)堆棧的宏文件和任務(wù)相關(guān)的文件。由于每個(gè)任務(wù)都是獨(dú)立的,所以堆棧部分的宏定義的代碼是應(yīng)用程序必須要有的。建立任務(wù)之前必須初始化任務(wù)并建立一個(gè)空閑的任務(wù)。在建立多任務(wù)時(shí),必須通過(guò)OSTaskCreat()函數(shù)建立至少一個(gè)用戶(hù)任務(wù)。建立好任務(wù)后,利用OSStart()函數(shù)開(kāi)始任務(wù)。應(yīng)用函數(shù)主函數(shù)如下:
4 結(jié)語(yǔ)
利用LPC1758處理器成功驗(yàn)證了采用ARM公司Cortex-M3內(nèi)核的MCU驅(qū)動(dòng)TFT觸摸屏的可能,包括以上硬件方案的提出和軟件系統(tǒng)移植的實(shí)現(xiàn),TFT觸摸屏單元提供友好的人機(jī)界面,且具有堅(jiān)固耐用、反應(yīng)速度快、節(jié)省空間、易于交流等許多優(yōu)點(diǎn)。隨著多媒體查詢(xún)的與日遞增,在未來(lái)的電子產(chǎn)品中,觸摸屏無(wú)疑將成為輸入設(shè)備的主流。
歡迎轉(zhuǎn)載,本文來(lái)電子發(fā)燒友網(wǎng)(www.elecfans.com)