基于S3C2410微處理器的觸摸屏設(shè)計
圖4 定時中斷服務(wù)程序流程圖
在s3c2410_ts_init()中的另一個重要任務(wù)是執(zhí)行接口函數(shù)s3c2410_ts_open(),在這個函數(shù)中初始化緩沖區(qū)的頭尾指針、觸摸屏狀態(tài)變量及觸摸屏事件等待隊列。
module_exit()
該函數(shù)調(diào)用s3c2410_ts_exit(),主要任務(wù)是撤銷驅(qū)動程序向內(nèi)核的登記以及釋放申請的中斷資源。
接口函數(shù)s3c2410_ts_read( )
這個函數(shù)實現(xiàn)的任務(wù)是將事件隊列從設(shè)備緩存中讀到用戶空間的數(shù)據(jù)緩存中。實現(xiàn)的過程主要是通過一個循環(huán),只有在事件隊列的頭、尾指針不重合時,才能成功的從tsdev.tail指向的隊列尾部讀取到一組觸摸信息數(shù)據(jù),并退出循環(huán)。否則調(diào)用讀取函數(shù)的進程就要進入睡眠。
坐標(biāo)讀取函數(shù)s3c2410_get_XY()
在定時器中斷處理程序中,當(dāng)查詢到與相連的EINT5/GPF5為低電平時,即表示有有效事件,應(yīng)該調(diào)用s3c2410_get_XY()函數(shù)采集筆觸信息。
ADS7843有多種轉(zhuǎn)換時序,時序規(guī)定了芯片與設(shè)備及CPU間是如何配合工作的。設(shè)計中采用16個時鐘周期啟動一次轉(zhuǎn)換的坐標(biāo)轉(zhuǎn)換方式。ADS7843的操作時序如圖5所示。坐標(biāo)的讀取是通過多次采集取平均值的方法,以X坐標(biāo)的讀取為例,其讀取過程如圖6所示。循環(huán)過程中的每一步都在8個時鐘周期內(nèi)完成,數(shù)據(jù)的處理嚴格按照時序進行,Y坐標(biāo)的采集與X坐標(biāo)類似。
圖5 ADS7843操作時序
圖6 X坐標(biāo)采集流程
結(jié)語
在觸摸屏的設(shè)計中,抗干擾設(shè)計是難點和重點,直接關(guān)系到觸摸屏的工作性能。實驗發(fā)現(xiàn)坐標(biāo)采集時,丟棄第一次采集值讀取的坐標(biāo)轉(zhuǎn)換值效果較好。本文所介紹的驅(qū)動程序已經(jīng)在博創(chuàng)公司的教學(xué)實驗設(shè)備UP-NETARM2410-S平臺上經(jīng)過實際驗證,從數(shù)據(jù)穩(wěn)定性和系統(tǒng)負載的角度看,效果良好。同時通過修改程序內(nèi)部的定時器時鐘頻率可以改變筆在屏上移動所產(chǎn)生的數(shù)據(jù)量。
參考文獻:
1. 毛德操,胡希明著.Linux內(nèi)核源代碼情景分析.杭州:浙江大學(xué)出版社,2001
2. 孫天澤,袁文菊,張海峰等.嵌入式設(shè)計及Linux驅(qū)動開發(fā)指南.北京:電子工業(yè)出版社,2005
3. R Love. Linux內(nèi)核設(shè)計與實現(xiàn). 陳莉君,康華,張波等譯.北京:機械工業(yè)出版社,2006
4. 殷惠莉,劉少君,黃道平.基于uClinux觸摸屏的設(shè)計.電子工程師.2004(2) .
評論