嵌入式操作系統(tǒng)Nucleus下觸摸屏驅(qū)動(dòng)的開發(fā)
發(fā)布時(shí)間:2007/8/30 0:00:00 訪問次數(shù):442
Nucleus 是一款優(yōu)秀的嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),具有搶占式和時(shí)間片輪轉(zhuǎn)任務(wù)調(diào)度方式,主要用在時(shí)間苛刻的嵌入式應(yīng)用當(dāng)中。大約95%的Nucleus用ANSI C 寫成,作為一個(gè)庫(kù)加載到應(yīng)用代碼當(dāng)中。目前手機(jī)行業(yè)有很多使用Nucleus。
1. 觸摸屏控制電路的硬件結(jié)構(gòu)
觸摸屏控制電路主要有一下四部分組成:進(jìn)行數(shù)據(jù)處理、控制功能的MCU,一個(gè)四線電阻式觸摸屏和控制芯片ADS7846, 以及顯示觸摸點(diǎn)坐標(biāo)的顯示部分。
在這里主要對(duì)觸摸屏的硬件電路和驅(qū)動(dòng)設(shè)計(jì)做一個(gè)較詳細(xì)的介紹,ADS7846是美國(guó)TI公司推出的一款四線制電阻式觸摸屏控制器,通過機(jī)械式觸摸,可以迅速得到觸摸點(diǎn)位置信號(hào)。它是一種典型的帶有連續(xù)逼近型寄存器的A/D轉(zhuǎn)換器,內(nèi)部自帶2.5V參考電壓,一個(gè)和微處理器相連的SPI接口,同時(shí)具有測(cè)量溫度、觸摸壓力和電池電壓的功能,有可編程 的8位或12位的分辨率。在2.7V電壓和125kHz的轉(zhuǎn)換速率下, 功耗僅為750uW,在 power down 模式下僅為0.5uW。由于這些優(yōu)良的性能,在移動(dòng)設(shè)備中有大量的應(yīng)用。下表為控制器的主要引腳:
工作原理:圖2是觸摸屏控制器和MCU的連接電路圖。當(dāng)ADS7846檢測(cè)到觸摸屏被按下時(shí),它就會(huì)產(chǎn)生一個(gè)中斷信號(hào)(PENIRQ為低電平)給MCU,MCU選中ADS7846控制器(CS為低),然后通過串行口DIN向ADS7846發(fā)送8位控制字,此后DOUT在DCLK的下降沿得到12位的輸出。圖3為ADS7846在每次轉(zhuǎn)換為24個(gè)時(shí)鐘周期下的時(shí)序圖。
圖2
2.Nucleus下ADS7846的驅(qū)動(dòng)設(shè)計(jì)
驅(qū)動(dòng)設(shè)計(jì)的目的是將觸摸坐標(biāo)即時(shí)的轉(zhuǎn)換為顯示坐標(biāo),直接在LCD屏上顯示出來,然后經(jīng)過輸入識(shí)別軟件的處理(例如漢王的識(shí)別軟件),識(shí)別出輸入的字符,漢字等。
當(dāng)觸摸屏按下時(shí),會(huì)產(chǎn)生一個(gè)中斷,應(yīng)當(dāng)為ADS7846配置一個(gè)中斷。在Nucleus下,中斷分兩種,Low level 中斷(Lisr)和High level 中斷(Hisr),一般的中斷服務(wù)程序在Hisr當(dāng)中處理。一個(gè)較為復(fù)雜的,多任務(wù)嵌入式系統(tǒng)當(dāng)中,中斷服務(wù)程序(優(yōu)先級(jí)比普通任務(wù)的優(yōu)先級(jí)高)不能占用太多的時(shí)間,否則可能會(huì)導(dǎo)致其他任務(wù)不能及時(shí)得到響應(yīng)。例如在觸摸屏中斷服務(wù)程序的處理,在較壞的情況下,觸摸屏可能一直被按下去,其Hisr就會(huì)占用很多的資源,導(dǎo)致別的任務(wù)(例如一個(gè)手機(jī)應(yīng)用當(dāng)中,可能導(dǎo)致接受電話的任務(wù)不能處理,而這是不能讓人接受的,不能想象當(dāng)你寫短信時(shí)不能接受電話的情況,)所以當(dāng)中斷服務(wù)程序需要占用CPU較多的處理時(shí)間時(shí),一般要在另外激活一個(gè)任務(wù),由任務(wù)調(diào)度機(jī)制來處理和系統(tǒng)中其他任務(wù)的關(guān)系,它的流程圖如圖四所示,實(shí)踐證明,這種處理方法是較好的處理方法。
圖3
這里不打算對(duì)怎么創(chuàng)建一個(gè)Lisr,Hisr和激活一個(gè)任務(wù)做太多的介紹,詳細(xì)可以看Nucleus的文檔。重點(diǎn)介紹ADS7846的驅(qū)動(dòng)程序的處理和如何將所得數(shù)據(jù)在LCD上正確顯示出來。
ADS7846處理程序的流程圖如圖所示:
圖4
ADS7846在計(jì)算觸摸坐標(biāo)時(shí)有兩種方式,single ended模式和difference 模式。Single ended模式利用ADS7846內(nèi)部參考電壓或者外部參考電壓,得出的結(jié)果是一個(gè)電壓的AD結(jié)果。 Difference 不需要內(nèi)部或者外部的參考電壓,這種模式得出的結(jié)果是觸摸點(diǎn)在觸摸屏位置上的百分比。這種模式可以消除參考電壓波動(dòng)對(duì)換算結(jié)果的影響。
ADS7846換算結(jié)果在LCD屏幕上的映射
假設(shè)LCD是個(gè)160 x 128 像素大小的屏幕,如圖六所示,假設(shè)A點(diǎn)的坐標(biāo)為(0,0),那么可知道B,C,D是(128,0),(0,160),(128,160)。通過ADS7846得出A,B,C,D的轉(zhuǎn)換結(jié)果分別是(Xa,Ya),(Xb,Yb),(Xc,Yc),(Xd,Yd),再得出屏幕中任意點(diǎn)X轉(zhuǎn)換結(jié)果(Xx,Yx),那么X的坐標(biāo)(x,y)可以通過下式算出來:
 
Nucleus 是一款優(yōu)秀的嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),具有搶占式和時(shí)間片輪轉(zhuǎn)任務(wù)調(diào)度方式,主要用在時(shí)間苛刻的嵌入式應(yīng)用當(dāng)中。大約95%的Nucleus用ANSI C 寫成,作為一個(gè)庫(kù)加載到應(yīng)用代碼當(dāng)中。目前手機(jī)行業(yè)有很多使用Nucleus。
1. 觸摸屏控制電路的硬件結(jié)構(gòu)
觸摸屏控制電路主要有一下四部分組成:進(jìn)行數(shù)據(jù)處理、控制功能的MCU,一個(gè)四線電阻式觸摸屏和控制芯片ADS7846, 以及顯示觸摸點(diǎn)坐標(biāo)的顯示部分。
在這里主要對(duì)觸摸屏的硬件電路和驅(qū)動(dòng)設(shè)計(jì)做一個(gè)較詳細(xì)的介紹,ADS7846是美國(guó)TI公司推出的一款四線制電阻式觸摸屏控制器,通過機(jī)械式觸摸,可以迅速得到觸摸點(diǎn)位置信號(hào)。它是一種典型的帶有連續(xù)逼近型寄存器的A/D轉(zhuǎn)換器,內(nèi)部自帶2.5V參考電壓,一個(gè)和微處理器相連的SPI接口,同時(shí)具有測(cè)量溫度、觸摸壓力和電池電壓的功能,有可編程 的8位或12位的分辨率。在2.7V電壓和125kHz的轉(zhuǎn)換速率下, 功耗僅為750uW,在 power down 模式下僅為0.5uW。由于這些優(yōu)良的性能,在移動(dòng)設(shè)備中有大量的應(yīng)用。下表為控制器的主要引腳:
工作原理:圖2是觸摸屏控制器和MCU的連接電路圖。當(dāng)ADS7846檢測(cè)到觸摸屏被按下時(shí),它就會(huì)產(chǎn)生一個(gè)中斷信號(hào)(PENIRQ為低電平)給MCU,MCU選中ADS7846控制器(CS為低),然后通過串行口DIN向ADS7846發(fā)送8位控制字,此后DOUT在DCLK的下降沿得到12位的輸出。圖3為ADS7846在每次轉(zhuǎn)換為24個(gè)時(shí)鐘周期下的時(shí)序圖。
圖2
2.Nucleus下ADS7846的驅(qū)動(dòng)設(shè)計(jì)
驅(qū)動(dòng)設(shè)計(jì)的目的是將觸摸坐標(biāo)即時(shí)的轉(zhuǎn)換為顯示坐標(biāo),直接在LCD屏上顯示出來,然后經(jīng)過輸入識(shí)別軟件的處理(例如漢王的識(shí)別軟件),識(shí)別出輸入的字符,漢字等。
當(dāng)觸摸屏按下時(shí),會(huì)產(chǎn)生一個(gè)中斷,應(yīng)當(dāng)為ADS7846配置一個(gè)中斷。在Nucleus下,中斷分兩種,Low level 中斷(Lisr)和High level 中斷(Hisr),一般的中斷服務(wù)程序在Hisr當(dāng)中處理。一個(gè)較為復(fù)雜的,多任務(wù)嵌入式系統(tǒng)當(dāng)中,中斷服務(wù)程序(優(yōu)先級(jí)比普通任務(wù)的優(yōu)先級(jí)高)不能占用太多的時(shí)間,否則可能會(huì)導(dǎo)致其他任務(wù)不能及時(shí)得到響應(yīng)。例如在觸摸屏中斷服務(wù)程序的處理,在較壞的情況下,觸摸屏可能一直被按下去,其Hisr就會(huì)占用很多的資源,導(dǎo)致別的任務(wù)(例如一個(gè)手機(jī)應(yīng)用當(dāng)中,可能導(dǎo)致接受電話的任務(wù)不能處理,而這是不能讓人接受的,不能想象當(dāng)你寫短信時(shí)不能接受電話的情況,)所以當(dāng)中斷服務(wù)程序需要占用CPU較多的處理時(shí)間時(shí),一般要在另外激活一個(gè)任務(wù),由任務(wù)調(diào)度機(jī)制來處理和系統(tǒng)中其他任務(wù)的關(guān)系,它的流程圖如圖四所示,實(shí)踐證明,這種處理方法是較好的處理方法。
圖3
這里不打算對(duì)怎么創(chuàng)建一個(gè)Lisr,Hisr和激活一個(gè)任務(wù)做太多的介紹,詳細(xì)可以看Nucleus的文檔。重點(diǎn)介紹ADS7846的驅(qū)動(dòng)程序的處理和如何將所得數(shù)據(jù)在LCD上正確顯示出來。
ADS7846處理程序的流程圖如圖所示:
圖4
ADS7846在計(jì)算觸摸坐標(biāo)時(shí)有兩種方式,single ended模式和difference 模式。Single ended模式利用ADS7846內(nèi)部參考電壓或者外部參考電壓,得出的結(jié)果是一個(gè)電壓的AD結(jié)果。 Difference 不需要內(nèi)部或者外部的參考電壓,這種模式得出的結(jié)果是觸摸點(diǎn)在觸摸屏位置上的百分比。這種模式可以消除參考電壓波動(dòng)對(duì)換算結(jié)果的影響。
ADS7846換算結(jié)果在LCD屏幕上的映射
假設(shè)LCD是個(gè)160 x 128 像素大小的屏幕,如圖六所示,假設(shè)A點(diǎn)的坐標(biāo)為(0,0),那么可知道B,C,D是(128,0),(0,160),(128,160)。通過ADS7846得出A,B,C,D的轉(zhuǎn)換結(jié)果分別是(Xa,Ya),(Xb,Yb),(Xc,Yc),(Xd,Yd),再得出屏幕中任意點(diǎn)X轉(zhuǎn)換結(jié)果(Xx,Yx),那么X的坐標(biāo)(x,y)可以通過下式算出來:
 
熱門點(diǎn)擊
- VxWorks下UDP協(xié)議棧效率的研究與改進(jìn)
- 硬實(shí)時(shí)操作系統(tǒng)-RTLinux
- 基于Qt/Embedded的微波信號(hào)發(fā)生器軟
- 單片機(jī)IP技術(shù)在智能小區(qū)系統(tǒng)中的應(yīng)用
- 關(guān)于ISA設(shè)備的驅(qū)動(dòng)程序轉(zhuǎn)換為PCI設(shè)備的W
- 在MOTOROLA A68K系列MCU上移植
- 矢量字庫(kù)在嵌入式機(jī)頂盒中的應(yīng)用
- 基于單片機(jī)的便攜式電子秤
- 具有DSP功能的16位微控制器80296SA
- PPSM嵌入式RTOS中的窗口系統(tǒng)開發(fā)
推薦技術(shù)資料
- 羅盤誤差及補(bǔ)償
- 造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車用精準(zhǔn)定位
- 高效先進(jìn)封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究