最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

「技術(shù)干貨」工業(yè)觸摸屏之驅(qū)動(dòng)開(kāi)發(fā)及異常分析(連載)

2022-06-10 10:07 作者:武漢萬(wàn)象奧科  | 我要投稿

觸摸屏作為嵌入式產(chǎn)品中常用的交互設(shè)備,具有交互直觀,編程簡(jiǎn)易等特點(diǎn),本系列文章將以多種角度分析如何選擇合適的觸摸屏方案及常見(jiàn)的故障解決方法。本文主題為電阻屏的驅(qū)動(dòng)組成以及多數(shù)觸摸屏的異常分析。

1.1 測(cè)試環(huán)境

處理器:AM335x

內(nèi)核版本:Linux-3.2

硬件條件:四線電阻屏、五線電阻屏

1.2 驅(qū)動(dòng)組成部分

觸摸屏的處理流程離不開(kāi),響應(yīng)中斷上報(bào)事件,對(duì)于電容屏同樣有效的。所以對(duì)于觸摸屏,只需僅僅把握中響應(yīng)中斷上報(bào)事件的流程,即可定位是軟件還是硬件故障。

以AM335x的電阻屏為例,涉及的驅(qū)動(dòng)子系統(tǒng)列表如表1.1所示。觸摸子系統(tǒng)是對(duì)觸摸屏的抽象層,輸入子系統(tǒng)提供符合上層應(yīng)用使用的接口,中斷子系統(tǒng)負(fù)責(zé)接收外設(shè)的中斷信號(hào),ADC子系統(tǒng)負(fù)責(zé)提供電場(chǎng)信號(hào)以及采集電壓值。

表1.1 電阻屏相關(guān)驅(qū)動(dòng)

電阻屏相關(guān)驅(qū)動(dòng)


1.3 AM335x電阻屏驅(qū)動(dòng)

相關(guān)代碼位置如表1.2所示。

表1.2 電阻屏代碼路徑

電阻屏代碼路徑


板級(jí)文件記錄下ADC模組中哪些通道用作觸摸功能,哪些通道用作模數(shù)轉(zhuǎn)換功能,如代碼清單1.1所示。

代碼清單1.1 板級(jí)描述文件

路徑:arch/arm/mach-omap2/board-am335xevm.c

代碼清單1.1 板級(jí)描述文件


ADC模塊驅(qū)動(dòng)是對(duì)ADC通道的抽象整理,會(huì)涉及部分觸摸的寄存器。例如《【應(yīng)用技術(shù)】觸摸屏技術(shù)之二:原理分析》中提到CTRL Register的AFE_Pen_Ctrl Bits用于選擇中斷觸發(fā)信號(hào)輸入腳,如代碼清單1.2所示。

代碼清單1.2 ADC模塊驅(qū)動(dòng)

路徑:drivers/mfd/ti_tscadc.c

代碼清單1.2 ADC模塊驅(qū)動(dòng)


最后就來(lái)介紹負(fù)責(zé)抽象整個(gè)觸摸設(shè)備的觸摸屏驅(qū)動(dòng)文件,觸摸驅(qū)動(dòng)內(nèi)封裝了中斷、ADC模組的寄存器操作、輸入事件的上報(bào)工作。

設(shè)置X軸采集時(shí)的配置如代碼清單1.3所示。結(jié)合《【應(yīng)用技術(shù)】觸摸屏技術(shù)之二:原理分析》的《四線屏寄存器配置》和《五線屏寄存器配置》內(nèi)容可知,stepconfigx為X軸采集時(shí)的通用配置,當(dāng)系統(tǒng)設(shè)備為四線模式時(shí),開(kāi)啟XPP、XNN形成電場(chǎng),INP值代表采集引腳為AN2。當(dāng)系統(tǒng)設(shè)備為五線模式時(shí),開(kāi)啟XPP、YNN、XNN、YPP形成電場(chǎng),INP_5代表采集引腳為AN4。

代碼清單1.3 X軸ADC配置

路徑:drivers/input/touchscreen/ti_tsc.c

代碼清單1.3 X軸ADC配置

設(shè)置Y軸采集時(shí)的配置如代碼清單1.4所示,stepconfigy為Y軸采集時(shí)的通用配置,當(dāng)系統(tǒng)設(shè)備為四線模式時(shí),開(kāi)啟YPP、YNN形成電場(chǎng),INP值沒(méi)有設(shè)置,默認(rèn)使用AN0。當(dāng)系統(tǒng)設(shè)備為五線模式時(shí),開(kāi)啟XPP、YNN、XNP、YPN形成電場(chǎng),INP_5代表采集引腳為AN4。

代碼清單1.4 Y軸ADC配置

路徑:drivers/input/touchscreen/ti_tsc.c

代碼清單1.4 Y軸ADC配置

處理器完成ADC采集后,需要觸發(fā)一個(gè)中斷,中斷處理函數(shù)的注冊(cè)代碼如代碼清單1.5所示。對(duì)于用戶層來(lái)說(shuō),最直觀的就是查看此中斷在系統(tǒng)中觸發(fā)幾次,所以此時(shí)的中斷名就是request_irq內(nèi)傳入的中斷名參數(shù)。

代碼清單1.5 中斷函數(shù)設(shè)計(jì)

路徑:drivers/input/touchscreen/ti_tsc.c

代碼清單1.5 中斷函數(shù)設(shè)計(jì)

最后一點(diǎn)就是對(duì)輸入子系統(tǒng)的封裝,在觸摸屏代碼內(nèi)必不可少的就是input子系統(tǒng)的調(diào)用,代碼如代碼清單1.6所示,input_report即為輸入子系統(tǒng)上報(bào)函數(shù)族,上報(bào)事件包括:按鍵按下、按鍵彈起、絕對(duì)坐標(biāo)、相對(duì)坐標(biāo)等。所以對(duì)于系統(tǒng)來(lái)說(shuō),最終只要input_report能順利執(zhí)行,那么觸摸信號(hào)就能正常獲取。

代碼清單1.6 輸入子系統(tǒng)設(shè)計(jì)

路徑:drivers/input/touchscreen/ti_tsc.c

代碼清單1.6 輸入子系統(tǒng)設(shè)計(jì)

1.4 用戶空間的排查方法

此處整理了電阻屏的問(wèn)題定位方法,如表1.3所示。

表1.3 用戶空間排查方法

用戶空間排查方法

接下來(lái)我們結(jié)合一些具體案例來(lái)具體看看如何排查觸摸問(wèn)題。

1.4.1 觸摸沒(méi)反應(yīng)

問(wèn)題:接上觸摸屏沒(méi)反應(yīng)。

分析步驟:

查看dmesg | grep touch,查看系統(tǒng)是否有加載觸摸驅(qū)動(dòng);此部分有內(nèi)核配置選擇,沒(méi)有信息則定位為驅(qū)動(dòng)異常,查看內(nèi)核配置或初始化函數(shù)。

查看/proc/interrupts文件,看中斷計(jì)數(shù)是否有變化。若點(diǎn)擊屏幕,中斷計(jì)數(shù)沒(méi)變化,根據(jù)之前所說(shuō)的中斷輸入引腳,說(shuō)明此情況下中斷引腳沒(méi)有接到對(duì)應(yīng)引腳上。

1.4.2 觸摸抖動(dòng)

問(wèn)題:使用ts_test查看,發(fā)現(xiàn)光標(biāo)在不停閃爍。

分析思路:通過(guò)cat /proc/interrupts,查看中斷計(jì)數(shù),若一直有增加,再用hexdump命令查看輸出信息,一般這種不規(guī)則情況,是由于中斷信號(hào)輸入引腳接到錯(cuò)誤位置,例如五線屏的感應(yīng)引腳,接到地之后,相當(dāng)于屏幕一直被按下,所以會(huì)不斷上報(bào)錯(cuò)誤事件。也有可能是感應(yīng)引腳接到不穩(wěn)定的電平,一直產(chǎn)生高低變化的擾動(dòng),系統(tǒng)把這種高低變化的擾動(dòng)當(dāng)作觸摸屏被按下的信號(hào)。

1.4.3 觸摸不準(zhǔn)

問(wèn)題:使用五線屏?xí)r,四個(gè)邊角總有一個(gè)無(wú)法觸摸得到。

分析思路:ADC模組有一個(gè)輸入的參考電壓,一般接1.8V,但有些意外情況,將其接到GND,相當(dāng)于采集點(diǎn)一直無(wú)法采集到正常數(shù)據(jù)。

1.4.4 觸摸異常

問(wèn)題:使用五線屏?xí)r,數(shù)據(jù)亂跳。

分析思路:由上篇文章“【應(yīng)用技術(shù)】觸摸屏技術(shù)之原理分析”分析可知,五線屏的正常四個(gè)角如圖1.1所示,(H,H)與(L,L)形成對(duì)角分布,在這樣X(jué)、Y軸的電場(chǎng)才能形成相互垂直的分布,但如果出現(xiàn)圖1.2中(H,H)與(L,L)在同一個(gè)方向時(shí),就無(wú)法形成相互垂直的電場(chǎng),此時(shí)采集出來(lái)的感應(yīng)點(diǎn)數(shù)據(jù)就是紊亂的。

正常五線屏電極分布

圖1.1 正常五線屏電極分布

異常五線屏電極分布

圖1.2 異常五線屏電極分布





「技術(shù)干貨」工業(yè)觸摸屏之驅(qū)動(dòng)開(kāi)發(fā)及異常分析(連載)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
错那县| 仁寿县| 台前县| 饶阳县| 永济市| 镇原县| 太康县| 临洮县| 马公市| 辽中县| 洪雅县| 德保县| 库车县| 长沙县| 西贡区| 甘泉县| 科尔| 牙克石市| 剑河县| 运城市| 宜丰县| 乡城县| 云林县| 元氏县| 砀山县| 岗巴县| 都江堰市| 宣汉县| 保靖县| 灵宝市| 平和县| 新丰县| 民权县| 海原县| 贵阳市| 游戏| 平武县| 新密市| 肇庆市| 泰安市| 侯马市|