SP5V210的嵌入式電容觸摸屏驅(qū)動(dòng)設(shè)計(jì)
引言
本文引用地址:http://www.ex-cimer.com/article/201609/303798.htm目前,隨著手機(jī)和平板電腦的廣泛使用,電容式觸摸屏已成為電子產(chǎn)品的重要組成部分,電容觸摸屏的多點(diǎn)觸摸功能是紅外式、電阻式觸摸屏所不具備的,其線性度、透明度和耐久度也有著明顯優(yōu)勢(shì)。蘋果公司的多點(diǎn)觸摸技術(shù)使人們的生活方式有了極大變化,且隨著嵌入式設(shè)備和技術(shù)的成熟,電容觸摸屏作為新興的輸入設(shè)備必將得到廣泛應(yīng)用。
SP5V210是基于Cortex—A8架構(gòu)的32位處理器,帶有內(nèi)存管理單元MMU,最高主頻為1.0 GHz,內(nèi)部集成圖像處理器可以高效顯示與處理圖像,且可以十分流暢地運(yùn)行Linux和Android高級(jí)系統(tǒng);GT811為5點(diǎn)電容屏控制芯片,其內(nèi)部觸摸檢測(cè)網(wǎng)絡(luò)由10路感應(yīng)通道與16路驅(qū)動(dòng)通道構(gòu)成,通過(guò)內(nèi)部的數(shù)模轉(zhuǎn)化模塊、模擬放大電路和MPU采集實(shí)時(shí)的觸摸信息,并由I2C總線傳輸?shù)街骺靥幚砥鳌?/p>
本設(shè)計(jì)以SP5V210處理器和Linux2.6.25內(nèi)核為系統(tǒng)的硬件與軟件平臺(tái),用GT811作為電容式觸摸屏的控制器,設(shè)計(jì)了一種基于SP5V210的嵌入式多點(diǎn)電容觸摸屏驅(qū)動(dòng)。
1 電容式觸摸屏
目前大部分電容屏是投射式互容電容屏。本文以投射式電容觸摸屏為例,應(yīng)用OGS方案,即將氧化銦錫(ITO)導(dǎo)電膜直接鍍?cè)诒Wo(hù)玻璃上形成傳感器,此時(shí)保護(hù)玻璃具有了觸摸傳感功能。該電容觸摸屏采用單層ITO(SITO)結(jié)構(gòu),水平X和垂直Y電極通過(guò)蝕刻ITO層形成,電極交叉處有絕緣層,這樣X(jué)電極與Y電極之間形成了耦合電容CM。
通過(guò)檢測(cè)觸摸屏整個(gè)二維平面的互電容大小來(lái)計(jì)算觸摸位置,首先觸摸屏控制器會(huì)控制X電極依次發(fā)出激勵(lì)信號(hào),Y電極同時(shí)接收,得到所有XY電極交叉處的電容值,當(dāng)手指觸摸時(shí)會(huì)使觸摸位置局部電容CM減小,這樣根據(jù)二維電容數(shù)據(jù)變化量就可以計(jì)算出每個(gè)觸摸位置的真實(shí)坐標(biāo)。
本設(shè)計(jì)采用三星公司的SP5V210處理器作為主機(jī),通過(guò)I2C總線接口與電容式觸摸屏控制芯片GT811相連,GT811集成在柔性線路板上通過(guò)綁定技術(shù)連接到7寸電容觸摸屏屏體上。圖1為系統(tǒng)硬件連接示意圖。觸摸屏控制器GT811驅(qū)動(dòng)端依次從drv00到drv15發(fā)出激勵(lì)脈沖,感應(yīng)端sens00~sens09同時(shí)接收,并轉(zhuǎn)換為數(shù)字信號(hào),此時(shí)為原始數(shù)據(jù)rawdata,經(jīng)數(shù)據(jù)處理后再由內(nèi)部MPU通過(guò)I2C總線與處理器SP5V210完成觸摸坐標(biāo)信息的交互。
2 觸摸屏驅(qū)動(dòng)程序設(shè)計(jì)
本文利用處理器SPSV210、觸摸屏控制器GT811和Linux輸入子系統(tǒng)來(lái)實(shí)現(xiàn)多點(diǎn)電容觸摸屏的驅(qū)動(dòng),程序流程如圖2所示。
2.1 I2C總線設(shè)備注冊(cè)
GT811是一個(gè)I2C設(shè)備,需向Linux內(nèi)核注冊(cè)才可被使用。注冊(cè)GT811的I2C模塊先在Linux內(nèi)核文件arch/arm/mach-s5pv210/mach-tq210.c的I2C通道2結(jié)構(gòu)體中加入TC的I2C地址,也就是0x5d,添加后如下:
系統(tǒng)初始化時(shí)會(huì)根據(jù)板級(jí)I2C總線設(shè)備配置信息,創(chuàng)建I2C總線客戶端設(shè)備I2C_client,并將其添加到I2C子系統(tǒng)中。
2.2 I2C總線設(shè)備驅(qū)動(dòng)注冊(cè)
I2C總線設(shè)備需要兩個(gè)結(jié)構(gòu)體:struct IIC_driver表示I2C設(shè)備驅(qū)動(dòng),struct IIC_client用于描述I2C設(shè)備:
2.3 驅(qū)動(dòng)入口函數(shù)
檢查到I2C總線設(shè)備進(jìn)入探測(cè)函數(shù)static int sp5v210_tc_probe(struct IIC client*client,const struct dev_id*id),該函數(shù)的主要工作如下:
觸摸屏控制器GT811初始化,通過(guò)初始化函數(shù)static int tc_init_panel(struct IIC_client*client)配置各相關(guān)寄存器,檢測(cè)是否工作在正常模式。
手指按下時(shí)中斷引腳被拉低,處理器SP5V210調(diào)用中斷處理函數(shù)tc_irq_handler,首先該處理函數(shù)將提交任務(wù)ts→work給工作隊(duì)列tc_wq,然后進(jìn)入工作隊(duì)列tc_wq中的tc_ work_fun函數(shù)。
2.4 觸摸屏工作函數(shù)設(shè)計(jì)
手指觸摸時(shí)電容控制器首先會(huì)采集多幀原始數(shù)據(jù)進(jìn)行平均值處理并存儲(chǔ),再進(jìn)行數(shù)據(jù)處理得到實(shí)時(shí)的坐標(biāo)信息,通過(guò)I2C總線傳輸觸點(diǎn)坐標(biāo)給CPU,并在觸摸屏工作函數(shù)中完成坐標(biāo)點(diǎn)的修正、上報(bào)以及多點(diǎn)處理功能。由于電容觸摸屏XY電極上一般會(huì)蝕刻成菱形的感應(yīng)塊(對(duì)角線長(zhǎng)約4~6 mm),這樣手指操作時(shí)會(huì)觸摸到4個(gè)感應(yīng)塊(如圖3所示),需要采用算法定位坐標(biāo)。
采用重心法計(jì)算觸點(diǎn)坐標(biāo)位置(Px,P,y):
其中,Sn為第n個(gè)感應(yīng)塊交叉處的信號(hào)值,Nx和Ny分別為X、Y電極方向上感應(yīng)塊個(gè)數(shù),R為觸摸屏的邏輯分辨率。再由工作函數(shù)tc_work_fun(struct worK_struct*work)進(jìn)行數(shù)據(jù)的讀取與事件上報(bào)。
觸摸屏觸點(diǎn)坐標(biāo)信息會(huì)保存在控制器GT811的輸出信息寄存器中,如表1所列。中斷觸發(fā)后進(jìn)入tc_worK_fun()函數(shù)。該函數(shù)的主要工作:讀取GT811輸出信息寄存器中的坐標(biāo)信息;向上層報(bào)告對(duì)應(yīng)的事件和坐標(biāo)信息。
評(píng)論