SP5V210的嵌入式電容觸摸屏驅動(dòng)設計
引言
本文引用地址:http://dyxdggzs.com/article/201609/303798.htm目前,隨著(zhù)手機和平板電腦的廣泛使用,電容式觸摸屏已成為電子產(chǎn)品的重要組成部分,電容觸摸屏的多點(diǎn)觸摸功能是紅外式、電阻式觸摸屏所不具備的,其線(xiàn)性度、透明度和耐久度也有著(zhù)明顯優(yōu)勢。蘋(píng)果公司的多點(diǎn)觸摸技術(shù)使人們的生活方式有了極大變化,且隨著(zhù)嵌入式設備和技術(shù)的成熟,電容觸摸屏作為新興的輸入設備必將得到廣泛應用。
SP5V210是基于Cortex—A8架構的32位處理器,帶有內存管理單元MMU,最高主頻為1.0 GHz,內部集成圖像處理器可以高效顯示與處理圖像,且可以十分流暢地運行Linux和Android高級系統;GT811為5點(diǎn)電容屏控制芯片,其內部觸摸檢測網(wǎng)絡(luò )由10路感應通道與16路驅動(dòng)通道構成,通過(guò)內部的數模轉化模塊、模擬放大電路和MPU采集實(shí)時(shí)的觸摸信息,并由I2C總線(xiàn)傳輸到主控處理器。
本設計以SP5V210處理器和Linux2.6.25內核為系統的硬件與軟件平臺,用GT811作為電容式觸摸屏的控制器,設計了一種基于SP5V210的嵌入式多點(diǎn)電容觸摸屏驅動(dòng)。
1 電容式觸摸屏
目前大部分電容屏是投射式互容電容屏。本文以投射式電容觸摸屏為例,應用OGS方案,即將氧化銦錫(ITO)導電膜直接鍍在保護玻璃上形成傳感器,此時(shí)保護玻璃具有了觸摸傳感功能。該電容觸摸屏采用單層ITO(SITO)結構,水平X和垂直Y電極通過(guò)蝕刻ITO層形成,電極交叉處有絕緣層,這樣X(jué)電極與Y電極之間形成了耦合電容CM。
通過(guò)檢測觸摸屏整個(gè)二維平面的互電容大小來(lái)計算觸摸位置,首先觸摸屏控制器會(huì )控制X電極依次發(fā)出激勵信號,Y電極同時(shí)接收,得到所有XY電極交叉處的電容值,當手指觸摸時(shí)會(huì )使觸摸位置局部電容CM減小,這樣根據二維電容數據變化量就可以計算出每個(gè)觸摸位置的真實(shí)坐標。
本設計采用三星公司的SP5V210處理器作為主機,通過(guò)I2C總線(xiàn)接口與電容式觸摸屏控制芯片GT811相連,GT811集成在柔性線(xiàn)路板上通過(guò)綁定技術(shù)連接到7寸電容觸摸屏屏體上。圖1為系統硬件連接示意圖。觸摸屏控制器GT811驅動(dòng)端依次從drv00到drv15發(fā)出激勵脈沖,感應端sens00~sens09同時(shí)接收,并轉換為數字信號,此時(shí)為原始數據rawdata,經(jīng)數據處理后再由內部MPU通過(guò)I2C總線(xiàn)與處理器SP5V210完成觸摸坐標信息的交互。

2 觸摸屏驅動(dòng)程序設計
本文利用處理器SPSV210、觸摸屏控制器GT811和Linux輸入子系統來(lái)實(shí)現多點(diǎn)電容觸摸屏的驅動(dòng),程序流程如圖2所示。

2.1 I2C總線(xiàn)設備注冊
GT811是一個(gè)I2C設備,需向Linux內核注冊才可被使用。注冊GT811的I2C模塊先在Linux內核文件arch/arm/mach-s5pv210/mach-tq210.c的I2C通道2結構體中加入TC的I2C地址,也就是0x5d,添加后如下:

系統初始化時(shí)會(huì )根據板級I2C總線(xiàn)設備配置信息,創(chuàng )建I2C總線(xiàn)客戶(hù)端設備I2C_client,并將其添加到I2C子系統中。
2.2 I2C總線(xiàn)設備驅動(dòng)注冊
I2C總線(xiàn)設備需要兩個(gè)結構體:struct IIC_driver表示I2C設備驅動(dòng),struct IIC_client用于描述I2C設備:

2.3 驅動(dòng)入口函數
檢查到I2C總線(xiàn)設備進(jìn)入探測函數static int sp5v210_tc_probe(struct IIC client*client,const struct dev_id*id),該函數的主要工作如下:


觸摸屏控制器GT811初始化,通過(guò)初始化函數static int tc_init_panel(struct IIC_client*client)配置各相關(guān)寄存器,檢測是否工作在正常模式。
手指按下時(shí)中斷引腳被拉低,處理器SP5V210調用中斷處理函數tc_irq_handler,首先該處理函數將提交任務(wù)ts→work給工作隊列tc_wq,然后進(jìn)入工作隊列tc_wq中的tc_ work_fun函數。
2.4 觸摸屏工作函數設計
手指觸摸時(shí)電容控制器首先會(huì )采集多幀原始數據進(jìn)行平均值處理并存儲,再進(jìn)行數據處理得到實(shí)時(shí)的坐標信息,通過(guò)I2C總線(xiàn)傳輸觸點(diǎn)坐標給CPU,并在觸摸屏工作函數中完成坐標點(diǎn)的修正、上報以及多點(diǎn)處理功能。由于電容觸摸屏XY電極上一般會(huì )蝕刻成菱形的感應塊(對角線(xiàn)長(cháng)約4~6 mm),這樣手指操作時(shí)會(huì )觸摸到4個(gè)感應塊(如圖3所示),需要采用算法定位坐標。

采用重心法計算觸點(diǎn)坐標位置(Px,P,y):

其中,Sn為第n個(gè)感應塊交叉處的信號值,Nx和Ny分別為X、Y電極方向上感應塊個(gè)數,R為觸摸屏的邏輯分辨率。再由工作函數tc_work_fun(struct worK_struct*work)進(jìn)行數據的讀取與事件上報。
觸摸屏觸點(diǎn)坐標信息會(huì )保存在控制器GT811的輸出信息寄存器中,如表1所列。中斷觸發(fā)后進(jìn)入tc_worK_fun()函數。該函數的主要工作:讀取GT811輸出信息寄存器中的坐標信息;向上層報告對應的事件和坐標信息。

評論