美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区

產(chǎn)品分類

當(dāng)前位置: 首頁 > 工業(yè)控制產(chǎn)品 > 自動(dòng)化控制 > 工業(yè)觸摸屏

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
工業(yè)觸摸屏

基于Linux系統(tǒng)的觸摸屏驅(qū)動(dòng)方案

發(fā)布日期:2022-10-09 點(diǎn)擊率:42

      引言
     觸摸屏作為一種輸入設(shè)備,具有堅(jiān)固耐用、反應(yīng)速度快、節(jié)省空間、易于交流等優(yōu)點(diǎn),提供簡(jiǎn)單、方便、自然的人機(jī)交互方式,目前被廣泛應(yīng)用于工業(yè)控制、電子查詢、消費(fèi)性電產(chǎn)品領(lǐng)域。
     Linux作為是目前最流行的操作系統(tǒng)之一,在桌面系統(tǒng)、服務(wù)器領(lǐng)域有大量用戶,具有源代碼開放,支持的硬件豐富、高可移植等優(yōu)點(diǎn),在嵌入式領(lǐng)域也備受青睞。Linux根據(jù)不同設(shè)備,將驅(qū)動(dòng)程序分為字符設(shè)備驅(qū)動(dòng)、塊設(shè)備驅(qū)動(dòng)、網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)三種,Linux輸入子系統(tǒng)u是對(duì)字符類型輸入設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)方式的抽象,是對(duì)分散的、多種不同類別的輸入設(shè)備進(jìn)行統(tǒng)一處理的內(nèi)核驅(qū)動(dòng)模型。輸入子系統(tǒng)具高效、無Bug和可重用等優(yōu)點(diǎn)。本文對(duì)基于Linux輸入子系統(tǒng)的觸摸屏驅(qū)動(dòng)進(jìn)行深入的討論。
     1  硬件平臺(tái)
     S3C2440是三星公司推出的采用ARM920t內(nèi)核的MCU,集成了豐富的外圍設(shè)備,其中包括4線電阻式觸摸屏控制器和8通道多路復(fù)用ADC。
     觸摸屏由觸摸檢測(cè)部件和觸摸屏控制器構(gòu)成,對(duì)應(yīng)S3C2440平臺(tái)的四線電阻觸摸屏的外接電路和S3C2440芯片自帶的A/D轉(zhuǎn)換控制部分。四線電阻觸摸屏的外接電路控制上下兩層導(dǎo)電層的通斷情況以及如何取電壓,取電壓之后由S3C2440芯片中的A/D將模擬量轉(zhuǎn)換成數(shù)字量。S3C2440芯片的A/D轉(zhuǎn)換器有8個(gè)輸入通道,轉(zhuǎn)換結(jié)果為10bit數(shù)字,轉(zhuǎn)換過程在芯片內(nèi)部自動(dòng)實(shí)現(xiàn),轉(zhuǎn)換的結(jié)果從寄存器中取值,再進(jìn)行一定的轉(zhuǎn)后可直接得到觸摸點(diǎn)的坐標(biāo)。S3C2440提供的ADC和觸摸屏接口如圖1所示,觸摸屏直接與引腳XP,XM,YP和YM連接,對(duì)觸摸屏兩個(gè)導(dǎo)電層的通斷通過XP,XM,YP和YM4個(gè)引腳控制。通過讀寫指定的特殊寄存器,S3C2440的觸摸屏控制器將自動(dòng)控制觸摸屏接口打開或關(guān)閉,按指定操作模式完成觸點(diǎn)數(shù)據(jù)的采集。


圖1 S3C2440ADC和觸摸屏接口結(jié)構(gòu)

     2  輸入子系統(tǒng)體系結(jié)構(gòu)簡(jiǎn)介
     設(shè)備驅(qū)動(dòng)程序在Linux內(nèi)核中占很重要地位,設(shè)備驅(qū)動(dòng)以內(nèi)核模塊方式實(shí)現(xiàn),可動(dòng)態(tài)加載和卸載。Linux設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)只需根據(jù)內(nèi)核提供的一組相關(guān)數(shù)據(jù)結(jié)構(gòu)和驅(qū)動(dòng)接口標(biāo)準(zhǔn),完成關(guān)鍵數(shù)據(jù)結(jié)構(gòu)初始化和回調(diào)函數(shù)的編寫。對(duì)字符設(shè)備驅(qū)動(dòng)內(nèi)核提供cdev數(shù)據(jù)結(jié)構(gòu)和file_operations結(jié)構(gòu)體及操作方法,實(shí)現(xiàn)字符設(shè)備驅(qū)動(dòng)只需完成cdev的初始化、file_operations中操作函數(shù)的實(shí)現(xiàn)并向內(nèi)核注冊(cè)。
     Linux輸入子系統(tǒng)是對(duì)物理形態(tài)各異的功能相似的輸入設(shè)備的抽象,是內(nèi)核中字符設(shè)備驅(qū)動(dòng)接口的封裝。輸入子系統(tǒng)由設(shè)備驅(qū)動(dòng)層、核心層和事件處理層構(gòu)成。設(shè)備驅(qū)動(dòng)層提供對(duì)硬件各寄存器的讀寫訪問和將底層硬件對(duì)用戶輸入訪問的響應(yīng)轉(zhuǎn)換為標(biāo)準(zhǔn)的輸入事件,通過核心層提交給事件處理層;核心層對(duì)設(shè)備驅(qū)動(dòng)層提供編程接口,對(duì)事件處理層的也提供編程接口;事件處理層為用戶空間的應(yīng)用程序提供了統(tǒng)一訪問設(shè)備的接口和驅(qū)動(dòng)層提交來的事件處理?;谳斎胱酉到y(tǒng)設(shè)計(jì)驅(qū)動(dòng)時(shí)要實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)層的驅(qū)動(dòng)和事件處理層的驅(qū)動(dòng),而輸入子系統(tǒng)在事件處理層為觸摸屏提供標(biāo)準(zhǔn)的事件接口,所以只要須完成設(shè)備驅(qū)動(dòng)層的驅(qū)動(dòng),即硬件寄存器的操作和提交輸入事件信息?;谳斎胱酉到y(tǒng)的設(shè)備驅(qū)動(dòng)層驅(qū)動(dòng)的實(shí)現(xiàn)過程如下:
     1)驅(qū)動(dòng)模塊加載函數(shù)中設(shè)置輸入設(shè)備支持輸入子系統(tǒng)的事件;Linux內(nèi)核用input_dev代表一個(gè)輸入設(shè)備,對(duì)于觸摸屏通過對(duì)input_dev實(shí)例的evbit[0]的設(shè)置來支持同步(EN_SYN)、按鍵(EN_KEY)和絕對(duì)坐標(biāo)(EV_ABS)事件。
     2)通過內(nèi)核提供的input_register_device0函數(shù)向輸入子系統(tǒng)注冊(cè)輸入設(shè)備。
     3)輸入設(shè)備發(fā)生輸入操作時(shí)提交所發(fā)生的事件及對(duì)應(yīng)鍵值或坐標(biāo)等狀態(tài)信息。觸摸屏使用輸入子系統(tǒng)提供的通用輸入事件驅(qū)動(dòng)程序Evdev,將事件信息打包成Input_event類型進(jìn)行報(bào)告。
     3  Linux觸摸屏驅(qū)動(dòng)的實(shí)現(xiàn)
     3.1 觸摸屏觸點(diǎn)數(shù)據(jù)采集
     S3C2440觸摸屏控制器有四種工作模式,通過讀寫ADCTSC、ADCDA、ADCDATl和ADCDLY寄存器完成觸摸屏控制器工作模式的選擇和觸摸屏觸點(diǎn)數(shù)據(jù)采集。由于觸摸動(dòng)作時(shí)間的隨機(jī)性,驅(qū)動(dòng)設(shè)計(jì)時(shí)選擇中斷工作方式。設(shè)置ADCTSC寄存器為0xD3使觸摸屏控制器進(jìn)入等待中斷模式,設(shè)置ADCDLY采樣延遲時(shí)間。當(dāng)觸摸屏被按下,觸摸屏控制器將產(chǎn)生INT_TC中斷:在ⅡTC中斷處理程序中,設(shè)置ADCTSC寄存器為0x0C,觸摸屏控制器切換為自動(dòng)X/Y坐標(biāo)轉(zhuǎn)換模式,將自動(dòng)轉(zhuǎn)換觸點(diǎn)對(duì)應(yīng)的x,y坐標(biāo)值,并分別寫入ADCDAT0寄存器和ADCDTA1寄存器,發(fā)出INTADC中斷表示ADC轉(zhuǎn)換完成;進(jìn)入INT_ADC中斷處理程序讀取ADCDAT0寄存器和ADCDTA1寄存器中坐標(biāo)數(shù)據(jù)并進(jìn)行相應(yīng)轉(zhuǎn)換,數(shù)據(jù)采集后重新設(shè)置ADCTSC寄存器為0xD3使觸摸屏控制器進(jìn)入等待中斷模式,等待觸摸屏被按下。
     3.2 驅(qū)動(dòng)初始化模塊
     Linux驅(qū)動(dòng)程序以內(nèi)核模塊方式加載運(yùn)行。實(shí)現(xiàn)驅(qū)動(dòng)加載函數(shù)s3c2440ts_init()并通過module_init(s3c2440ts_init)向內(nèi)核注冊(cè)。在驅(qū)動(dòng)加載函數(shù)主要完成:?jiǎn)⒂肁DC所需要的時(shí)鐘、映射10地址、初始化ADC和觸摸屏控制器相關(guān)的寄存器、申請(qǐng)INT_TS和INT_ADC中斷、初始化輸入設(shè)備、將輸入設(shè)備注冊(cè)到輸入子系統(tǒng)。關(guān)鍵代碼如下:


 

     3.3 中斷處理程序及事件報(bào)告
     用戶對(duì)觸摸屏進(jìn)行按下、抬起和拖動(dòng)等操作時(shí),觸發(fā)中斷INT_TS,內(nèi)核進(jìn)入到中斷處理函數(shù)tc_irq0進(jìn)行中斷處理。tcirq0中,通過ADC—LOCK鎖機(jī)制保證只有一個(gè)驅(qū)動(dòng)程序使用ADC的中斷線,通過讀取ADCDAT0和ADCDAT1寄存器,判斷觸摸操作的狀態(tài),觸摸筆按下時(shí)調(diào)用ts_timer_fireO進(jìn)行數(shù)據(jù)轉(zhuǎn)換。當(dāng)數(shù)據(jù)轉(zhuǎn)換完成時(shí)產(chǎn)進(jìn)INT_ADC中斷,內(nèi)核進(jìn)入中斷處理函數(shù)adc—irqO,adc_irq()完成觸點(diǎn)信息采集并調(diào)用ts_timer_fire()進(jìn)行事件報(bào)告。事件報(bào)告流程如圖2所示。

圖2 事件報(bào)告流程
圖2 事件報(bào)告流程
 

     ts_timer_fire0是主要完成觸點(diǎn)坐標(biāo)信息向應(yīng)用層報(bào)告。updown、count為靜態(tài)全局變量,updown觸點(diǎn)狀態(tài),count代表1個(gè)jiffies時(shí)間內(nèi)ADC轉(zhuǎn)換的次數(shù),count為0,設(shè)置自動(dòng)X/Y軸坐標(biāo)轉(zhuǎn)換模式,轉(zhuǎn)換完成后產(chǎn)生相應(yīng)的INT_ADC中斷通知轉(zhuǎn)換完畢。count不為0,input_report_abs()函數(shù)向輸入子系統(tǒng)報(bào)告X,Y絕對(duì)坐標(biāo)事件,inputreport_key()觸摸屏對(duì)應(yīng)按鍵被按下事件,輸入子系統(tǒng)使用inputsync()將報(bào)告的事件組成一個(gè)evdev包,通過/dev/input/eventX發(fā)送出去,應(yīng)用程序通過讀取/dev/input/eventX即可獲得事件信息。關(guān)鍵代碼如下:


 

     4  結(jié)論
     隨著信息技術(shù)的快速發(fā)展,嵌入式技術(shù)與人們的生活越來越緊密,觸摸屏作為一種新型輸入設(shè)備因具有輕便、占用空間少、方便靈活等優(yōu)點(diǎn),應(yīng)用逐漸普及,甚至在工業(yè)領(lǐng)域也得到了大量的應(yīng)用,提高了我國(guó)工控自動(dòng)化的水平。要充分發(fā)揮觸摸屏的優(yōu)點(diǎn),嵌入式中驅(qū)動(dòng)設(shè)計(jì)至關(guān)重要。嵌入式Linux中基于輸入子系統(tǒng)實(shí)現(xiàn)觸摸屏驅(qū)動(dòng)時(shí),利用了Linux輸入子系統(tǒng)提供標(biāo)準(zhǔn)事件接口,簡(jiǎn)化了驅(qū)動(dòng)設(shè)計(jì),驅(qū)動(dòng)設(shè)計(jì)的重點(diǎn)變成了觸摸屏控制器相關(guān)的硬件操作及功能實(shí)現(xiàn),充分體現(xiàn)Linux內(nèi)核代碼的高可重性,對(duì)其他類型輸入設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)有一定參考作用。


下一篇: PLC、DCS、FCS三大控

上一篇: 軟件和應(yīng)?程序1

美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        日韩理论片在线观看| 日本伊人午夜精品| 欧美一区二区三区电影| 欧美性一二三区| 欧美日韩视频一区二区| 欧美三片在线视频观看| 欧美一区二区三区日韩| 精品久久一区二区| 国产精品三级av| 亚洲一区二区三区激情| 美女网站视频久久| 波多野结衣中文字幕一区| 91精品国产综合久久久久久丝袜| 久久只精品国产| 久久亚洲私人国产精品va媚药| 欧美国产日韩精品免费观看| 又紧又大又爽精品一区二区| 久草在线在线精品观看| 成人黄色电影在线| 久久一区免费| 欧美三级视频在线播放| 久久久久久久久久久黄色| 中文字幕一区二区三区在线播放 | 杨幂一区欧美专区| 欧美午夜精品一区二区蜜桃| 91精品国产美女浴室洗澡无遮挡| 国产丝袜在线精品| 亚洲大片在线观看| 国产精品一区二区x88av| 国产精品久久久久久久久久久久午夜片| 欧美第一黄网| 欧美丝袜自拍制服另类| 国产亚洲精品久| 日韩vs国产vs欧美| 91猫先生在线| 色综合中文字幕国产 | 亚洲一区二区三区在线| 精品制服美女丁香| 国产精品免费一区二区三区四区 | 在线视频一区观看| 久久亚洲精品国产精品紫薇| 亚洲mv在线观看| 99久久久精品| 色88888久久久久久影院野外| 精品国产乱码久久久久久免费| 中文字幕一区二区三区乱码在线| 理论电影国产精品| 久久艳妇乳肉豪妇荡乳av| 69堂精品视频| 亚洲一区二区三区四区在线| 成人av动漫在线| 色综合久久中文综合久久牛| 亚洲国产精华液网站w | 欧美成人第一区| 欧美一级电影网站| 亚洲风情在线资源站| 999国产在线| 久久99深爱久久99精品| 91国产在线免费观看| 欧洲另类一二三四区| 亚洲精品乱码久久久久久黑人| caoporen国产精品视频| 在线观看亚洲精品视频| 日韩毛片在线免费观看| 99精品热视频| 欧美一区永久视频免费观看| 日本最新不卡在线| 色女人综合av| 1000精品久久久久久久久| 99久久99久久精品免费观看| 欧美日韩国产在线观看| 日韩av网站在线观看| 欧洲亚洲一区| 国产精品久久久久久久久快鸭| 成人性视频免费网站| 欧美日韩亚洲高清一区二区| 日一区二区三区| 亚洲国产婷婷香蕉久久久久久99| 一区免费观看视频| 成人激情av| 久久久久国产成人精品亚洲午夜| 国产精品一品二品| 欧美偷拍一区二区| 日韩va欧美va亚洲va久久| 欧美在线播放一区二区| 自拍偷自拍亚洲精品播放| 不卡视频一区二区三区| 久久久蜜桃精品| 97精品电影院| 久久伊人蜜桃av一区二区| 国产91丝袜在线18| 欧美久久婷婷综合色| 久久99精品久久久久久动态图 | 日本美女一区二区三区| 日本一区二区三区四区在线观看 | 日本特黄久久久高潮| 先锋影音日韩| 亚洲电影一级片| 亚洲一一在线| 五月天一区二区| 色综合夜色一区| 日本欧美韩国一区三区| 欧美色偷偷大香| 国产精品一区二区在线播放| 欧美浪妇xxxx高跟鞋交| 高清beeg欧美| 亚洲国产成人在线| 欧美精品欧美精品系列c| 亚洲国产日韩在线一区模特| 一区二区三区欧美在线| 蜜桃视频在线观看一区| 91精品国产高清一区二区三区| 欧美色区777第一页| 国产专区欧美精品| 欧美变态tickle挠乳网站| 91原创在线视频| 中文字幕一区二区三区不卡在线 | 欧美精品久久久| 一级精品视频在线观看宜春院| 亚洲第一综合| 轻轻草成人在线| 日韩天堂在线观看| 国产精品大全| 一级女性全黄久久生活片免费| 亚洲欧美成人一区| 国产自产v一区二区三区c| 久久久久国产精品人| 欧美福利一区二区三区| 青青国产91久久久久久| 91精品婷婷国产综合久久| 97人摸人人澡人人人超一碰| 一区二区三区丝袜| 欧美日韩国产一二三| 99久久久久久| 亚洲1区2区3区视频| 欧美日韩国产综合视频在线观看| 97se狠狠狠综合亚洲狠狠| 亚洲欧美怡红院| 在线观看日韩一区| 99久久精品久久久久久清纯| 一区二区三区在线视频播放| 欧美日韩在线免费视频| 国产高清精品一区二区三区| 亚洲大片在线观看| 日韩一本二本av| 久久伦理网站| 国产乱码精品一区二区三区忘忧草| 国产欧美精品在线观看| 宅男噜噜99国产精品观看免费| 成人小视频在线| 亚洲图片欧美一区| 日韩欧美久久久| 日韩一区二区三区高清| 成人黄色av网站在线| 午夜伦理一区二区| 国产日韩精品一区二区浪潮av| 一区二区三区四区视频在线| 精品日韩欧美一区二区| 日本一区二区三区四区高清视频 | 亚洲一区二区三区四区在线| 欧美一级黄色大片| 涩涩涩999| 99久久精品国产观看| 日本亚洲免费观看| 中文欧美字幕免费| 欧美剧在线免费观看网站 | 欧美性xxxxxx少妇| 久久狠狠久久综合桃花| 粉嫩aⅴ一区二区三区四区五区| 一区二区免费视频| 国产日韩欧美高清| 欧美电影一区二区| 中文字幕一区二区三区最新| 精品999在线观看| 99久久夜色精品国产网站| 蜜臀精品久久久久久蜜臀| 尤物av一区二区| 国产日韩精品一区| 日韩一区二区免费在线电影 | 国产日韩欧美精品一区| 欧美丰满少妇xxxbbb| 午夜精品一区二区在线观看| 999国内精品视频在线| 国产激情偷乱视频一区二区三区| 亚洲成a人片在线不卡一二三区| 国产精品女人毛片| 久久久亚洲综合| 在线播放日韩导航| 欧美综合久久久| 亚洲成人网上| 欧美日本韩国国产| 成人情视频高清免费观看电影| 粉嫩aⅴ一区二区三区四区| 蜜臀国产一区二区三区在线播放| 夜夜夜精品看看| 一区二区高清免费观看影视大全| 国产精品乱码一区二三区小蝌蚪| 91免费版网站在线观看| 国产电影一区在线| 久久不见久久见免费视频1 |