摘 要:隨著多媒體信息查詢的與日俱增,人們越來越多地談到觸摸屏,因為觸摸屏不僅適用于多媒體信息查詢,而且觸摸屏具有堅固耐用、反應速度快、節省空間、易于交流等許多優點。傳統8位、16位單片機的主頻比較低,很難直接驅動TFT觸摸屏。ARM 32位的Cortex-M3 CPU的主頻較高,可直接驅動TFT顯示屏。將Cortex-M3內核和TFT觸摸屏應用到無線環境監控系統中,并對其進行了分析研究,驗證了第二代Cortex-M3內核MCU驅動TFT觸摸屏的可能性。
關鍵詞:TFT; 觸摸屏; Cortex-M3; μCOS-Ⅱ
中圖分類號:TP274 文獻標識碼:A
文章編號:1004-373X(2010)13-0198-03
Application of TFT Touch-screen Display Based on Cortex-M3
in Environmental Monitoring System
DENG Ming-hua, LUO Pei-dong, ZHONG Jia-ming
(Engineering and Commerce College, South-Central University for Nationalities, Wuhan 430065, China)
Abstract: With the increase of multimedia information query, people are talking about the touch screen more and more, because it applies not only to the touch-screen multimedia information query, but the touch screen is sturdy, durable and easy to exchange, and has the advantages of high-speed reaction and space-saving. The main frequency of traditional 8 b and 16 b single chip computers is too low to drive TFT touch-screen display directly. Since the main frequency of Cortex-M3 CPU with ARM 32 b is higher, TFT touch screen can be drived directly. And the highest frequency of MCU is to 100 M. In this paper, Cortex-M3 and TFT touch-screen display is analyzed and studied in combination with practical examples of wireless environmental monitoring systems.
Keywords: TFT; touch screen; Cortex-M3; μCOS-Ⅱ
0 引 言
觸摸屏是一種新型的電子輸入設備,是目前最簡單、方便、自然的一種人機交互方式,它賦予了多媒體以嶄新的面貌,是極富吸引力的全新多媒體交互設備。將ARM Cortex-M3內核和TFT觸摸屏結合在一起,以環境監控系統為應用,對ARM公司的Cortex-M3內核進行了分析,并研究了Cortex-M3內核驅動TFT液晶屏幕的可行性。
1 系統工作原理
無線環境監控系統總體的設計框圖如圖1所示。以基于第二代Cortex-M3內核的LPC1758為核心,以TFT觸摸屏為顯示和控制單元,以24 GHz無線模塊為通信單元,合理移植μCOS-Ⅱ系統,對環境參數進行監測和控制。
圖1 總體功能框圖
2 硬件電路設計與實現
2.1 電源方案
硬件電路降壓穩壓電路采用降壓穩壓芯片SPX1117-3.3 V。電路在啟動過程中會產生較大的沖擊電流,會對其他電路造成電磁干擾,系統在電源中增加容值較大的電解電容以滿足系統中各項要求。降壓穩壓電路如圖2所示。
硬件電路升壓穩壓電路是為TFT液晶屏提供直流12 V電壓驅動而設計的。該電路選用PT4102芯片,PT4102是一款由單節鋰電池(持續電流)來驅動至多個串聯LED的升壓轉換器,采用固定頻率電流模式來調節LED電流,并通過一個外部電流監測電阻來測量此電流,95 mV的低反饋電壓可降低功耗和提高效率,PT4102還含有電流限制以避免在輸出過載時對器件造成損害。升壓穩壓電路如圖3所示。
圖2 降壓穩壓電路
圖3 升壓穩壓電路
2.2 MCU方案
基于Cortex-M3的MCU選用的是荷蘭Philips公司LPC1000系列的LPC1758。運行頻率高達100 MHz,支持8個區域的存儲器保護單元(MPU),高達512 KB片內FLASH程序存儲器[1]。增強型的FLASH存儲器加速器使能高速的100 MHz操作,而無需等待狀態(with zero wait states)[2]。互連的多層AHB矩陣為每個AHB主機提供獨立的總線。這種互連所提供的通信不會有仲裁延時分開的APB總線允許高吞吐量,幾乎不會在CPU和DMA之間出現中止[3]。
系統采用12 MHz的無源晶振,為了保證晶振的諧振頻率和輸出幅度,在晶振的兩個引腳上加入了兩個22 pF的負載電容。在不影響電路正常工作的情況下,為了簡化電路設計,沒有將數字電路和模擬電路區分開來,VDDA與VDD直接相連、GNDA與GND直接相連。但是為了追求更優秀的模擬性能(ADC和模擬比較器模塊),可以另外安排一路33 V電源,連接到VDDA和GNDA,使其與VDD和GND分開[4]。LPC1758部分電路圖如圖4所示。
系統采用如圖5所示的RC 復位電路。復位電路中的二極管是為了解決電源毛刺和電源緩慢下降等問題,而104電容可避免高頻諧波對電路的干擾。
2.3 TFT觸摸屏方案
TFT液晶顯示方案包括觸摸控制和液晶顯示兩個部分。為了保證顯示的速度要求和系統的穩定性,觸摸屏控制器選用的是TI公司的TSC2046,該控制器為SPI接口,具有觸摸中斷功能,性價比很高。而液晶屏選用的是SPFD5408A,該屏幕為3.5英寸,具有高速8,9,16,18位并行接口。可以顯示16位和18位的RGB色彩。
圖4 LPC1758部分原理圖
圖5 系統復位電路
觸摸屏控制電路主要是TSC2046的外圍電路。MISO,MOSI是TSC2046與MCU之間的信號線。SCK是時鐘線。X+/-,Y+/-是觸摸屏的信號,INT中觸摸中斷信號。VCC和VCC1是電路的供電信號。在輸入引腳為了保證電源的波形穩定性,避免高頻諧波對TSC2046的干擾,加入了1個01 μF的濾波電容。觸摸屏控制電路如圖6所示。
圖6 觸摸屏控制器電路
TFT液晶顯示電路包括模式選擇,16位接口,觸摸屏接口三個部分。SPFD5408A接口模式有7種模式,本設計中用的是16位并行接口模式。X+/-,Y+/-是四線電阻式觸摸屏的輸出線[5]。
3 軟件設計與實現
為了提高系統的性能和滿足多任務處理的要求,系統中合理地移植了μCOS-Ⅱ操作系統。
μCOS-Ⅱ可以簡單地看作是一個多任務的調度器,在這個任務調度器之上完善并添加了很多任務操作系統相關的一些系統服務[6]。μCOS-Ⅱ 90%的代碼用C語言編寫,具有可移植性。移植工作的絕大部分都集中在多任務切換的實現上,因為這部分代碼主要是用來保存和恢復處理器現場(即相關寄存器),因此不能用C語言,只能使用特定的處理器匯編語言完成[7]。為了使適時內核μCOS-Ⅱ能在Cortex-M3處理器上運行,同時為了保證代碼不依賴于編譯器和良好的擴展性。采用了不依賴于編譯器的數據類型,使用軟中斷SWI作為底層接口。移植μCOS-Ⅱ到Cortex-M3內核需要3個文件:C語言頭文件(OS_CPU.H),C程序源文件(OS_CPU_C.C),匯編程序源文件(OS_CPU_A.ASM)。除此之外,還有一個文件定義的匯編宏也是移植的重點,它是μCOS-Ⅱ為Cortex-M3通用的中斷服務程序的匯編和C函數的接口代碼。
圖7 μC/OS-Ⅱ的硬件和軟件體系結構
OS_ CPU.H中包含兩部分的代碼,數據類型定義代碼和與處理器相關的代碼。其中數據類型重定義代碼是用C語言中short,int,long等,數據類型是與特定的處理器相關的,因此在μCOS-Ⅱ重新定義為移植性很強的定義方式。在OS_CPU.H剩下的部分是移植必須定義底層函數的聲明。在LPC1758的移植中為了使底層接口函數與處理器的狀態無關,同時使任務調用相應的函數不需要知道函數的位置。在本移植中使用軟中斷指令SWI作為底層接口,使用不同的功能號來區分各函數。調用這些底層函數,只需要使用一條SWI指令并跟上一個功能號來區別你要調用那個函數即可。任務切換函數為OS_TASK_SW(void),并使用軟中斷0x00。CPU_C.C中主要是軟中斷的實現和底層函數的實現及初始化任務堆棧函數的實現[8],其偽代碼如下:
/*任務堆棧初始化函數*/
OS_TK*OSTaskStkInit(void(*task)(void*pd),void plata, OS_STK ptos, INT16U opt)
{
定義任務堆棧;
使用滿棧遞減方式初始化任務堆棧結構;
返回堆棧結構;
}
/*軟中斷實現*/
Void SWI_Exception(int SWI_N,int *Regs)
{
根據不同的Num值跳轉到不同的底層服務函數地址
如:
case 0x00:任務切換函數OS-TASK-SW
}
處理器能支持一定數量的數據存儲硬件堆棧;用C語言可以開中斷/關中斷,根據不同的Num值跳轉到不同的底層服務函數地址。
系統的應用程序包括三個任務:實時顯示屏幕數據任務,采集數據函數,觸摸屏響應任務。設計中采用了任務嵌套的方式,將數據采集和觸摸屏響應嵌套到實時顯示屏幕數據任務之中,這樣數據在各個任務之間的傳遞很有邏輯性,整個系統比較健壯。任務間的通信如圖8所示。
圖8 任務間的層次和通信
移植μCOS-Ⅱ是為了在自己系統中使用μCOS-Ⅱ,要在自己的系統中使用μCOS-Ⅱ編寫應用程序。應用程序包括相應的頭文件,任務堆棧的宏文件和任務相關的文件。由于每個任務都是獨立的,所以堆棧部分的宏定義的代碼是應用程序必須要有的。建立任務之前必須初始化任務并建立一個空閑的任務。在建立多任務時,必須通過OSTaskCreat()函數建立至少一個用戶任務。建立好任務后,利用OSStart()函數開始任務。應用函數主函數如下:
#include ″config.h″
OS_STK TaskStartStk[TASK_STK_SIZE];
int main(void)
{
OSInit();
OSTaskCreat(Task1,(void*)0,TaskStartStk[TASK_STK_SIZE-1], 0);
}
4 結 語
利用LPC1758處理器成功驗證了采用ARM公司Cortex-M3內核的MCU驅動TFT觸摸屏的可能,包括以上硬件方案的提出和軟件系統移植的實現,TFT觸摸屏單元提供友好的人機界面,且具有堅固耐用、反應速度快、節省空間、易于交流等許多優點。隨著多媒體查詢的與日遞增,在未來的電子產品中,觸摸屏無疑將成為輸入設備的主流。
參考文獻
[1]杜春雷,ARM體系結構與編程[ M] .北京:清華大學出版社,2003.
[2]周立功.ARM微控制器基礎與實踐[ M] .北京:北京航空航天大學出版社,2005.
[3]ARM Corporation. The ARM-THUMB procedure call standard[ M] . 北京:ARM Corporation, 1999.
[4]ARM Corporation. The architecture reference manual[ M] . 北京: ARM Corporation, 1999.
[5]吳明輝.基于ARM的嵌入式系統開發應用[ M] .北京:人民郵電出版社,2006.
[6]譚會生.現代電子設計技術研究[ J] .株洲工學院學報,2002,16(4):111-112.
[7]王田苗.嵌入式實時操作系統與實例開發:基于ARM微處理器與μCOS-Ⅱ實時操作系統[ M] . 北京:清華大學出版社,2005.
[8]鄭宗漢.實時系統軟件基礎[ M] .北京:清華大學出版社,2003.
作者簡介: 鄧明華 女,1981年出生,湖北恩施人,碩士。主要研究方向為嵌入式技術。