歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

一線觸摸有沒有劫持了LCD顯示屏?

首先申明一下一線觸摸沒有劫持了什麼LCD顯示屏,
只是劫持了lcd的背光控制而已,有關一線觸摸具體是怎麼回事,請繼續往下看

最近下載了個linux2.6.38的源碼 ,對照的友善的內核從頭做移植,想一步步剖析友善的移植過程
但到LCD這塊卡了3天,一直不清楚怎麼回事。lcd驅動明明移植好了,引導信息正常,可是lcd卻沒有顯示,讓人匪夷所思
LCD及觸摸移植過程見 http://www.linuxidc.com/Linux/2012-01/52086.htm

一開始理所當然認為是背光的原因,事實上就是背光的原因,
不過一開始沒有詳細看友善驅動代碼時,被友善誤導了,
以為drivers/video/mini6410_backlight.c就是背光控制的驅動,實際上它是給使用普通觸摸方案時使用的背光控制,使用一線觸摸後,它根本不管用

呵呵,先來說說一線觸摸到底是個什麼東東吧


=700) window.open('http://www.arm9home.net/attachment/59_32071_8ee480095e9934f.jpg');" src="http://www.arm9home.net/attachment/59_32071_8ee480095e9934f.jpg" onload="if(this.width>'700')this.width='700';" border=0>

這是友善觸摸屏的接口,圖中的GPE0 is used as OneWire也是誤導人的

看這圖
=700) window.open('http://www.arm9home.net/attachment/59_32071_ffc7cc4342d3525.jpg');" src="http://www.arm9home.net/attachment/59_32071_ffc7cc4342d3525.jpg" onload="if(this.width>'700')this.width='700';" border=0>
很明顯GPE0是用來進行背光控制控制的,驅動drivers/video/mini6410_backlight.c中代碼
           unsigned long tmp;
        tmp = readl(S3C64XX_GPEDAT);
        tmp = (tmp & ~0x1) | (!!state);
        writel(tmp, S3C64XX_GPEDAT);
也說明了這一點,只不過,使用一線觸摸後,GPE0不在能夠控制背光了,所有的觸摸消息和128級背光都通過PWM1來控制了。


=700) window.open('http://www.arm9home.net/attachment/59_32071_40d232d65eec044.jpg');" src="http://www.arm9home.net/attachment/59_32071_40d232d65eec044.jpg" onload="if(this.width>'700')this.width='700';" border=0>
從LCD後面的電阻跳線可以看到連接R34-R37這幾個電阻,說明使用了TouchOne的方式,也就是說從CPU引出的TSXM,TSYM,TSXP,TSYP都是懸空的

原來一線觸摸的原理就是不使用S3C6410自帶的觸摸屏接口,不使用arm內部的AD轉化,將觸摸屏引出的4根線連到了自己的一個AD轉化芯片上,
至於怎麼處理我們不得而知了,然後再通過PWM1線把數據直接轉給CPU,友善順便通過PWM1線把背光也控制了,這就是他們宣傳的128級背光控制的原理。


=700) window.open('http://www.arm9home.net/attachment/59_32071_21061e0cbfd3850.jpg');" src="http://www.arm9home.net/attachment/59_32071_21061e0cbfd3850.jpg" onload="if(this.width>'700')this.width='700';" border=0>
這就是那個單片機,背光和觸摸屏都被它控制了,想更深了解一線觸摸的朋友應該沒有辦法了,友善不會給出這顆單片機裡的程序,實際上我也不太想看

友善的一線觸摸驅動在drivers/input/touchscreen/mini6410_1wire_host.c中,它會生成兩個設備節點
一個是背光控制/dev/backlight-1wire,另一個是觸摸屏/dev/touchscreen-1wire,

友善的觸摸屏驅動不是標准的輸入設備驅動,應為它沒有向輸入子系統使用input_register_device,也不是使用input_report_abs來報告觸摸屏事件,
所以設備節點不會出現/dev/input中,它按照混雜設備的方式自己處理的觸摸屏事件
Copyright © Linux教程網 All Rights Reserved