<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S5PV210(TQ210)學(xué)習(xí)筆記——觸摸屏驅(qū)動(dòng)編寫(xiě)

          S5PV210(TQ210)學(xué)習(xí)筆記——觸摸屏驅(qū)動(dòng)編寫(xiě)

          作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
          電阻式觸摸屏的驅(qū)動(dòng)比較簡(jiǎn)單,可以采用輸入子系統(tǒng)驅(qū)動(dòng)框架來(lái)編寫(xiě),而電容式觸摸屏的驅(qū)動(dòng)程序相對(duì)比較復(fù)雜,因?yàn)殡娙萦|控一般采用I2C接口控制,我在自己編寫(xiě)電容觸控驅(qū)動(dòng)的時(shí)候郁悶了好幾天,當(dāng)然,并不是因?yàn)镮2C電容觸控驅(qū)動(dòng)繁瑣,主要是天嵌TQ210的觸摸屏驅(qū)動(dòng)程序是以模塊方式提供的,并不開(kāi)放源代碼,也沒(méi)有提供觸控的芯片手冊(cè),我曾通過(guò)技術(shù)咨詢?nèi)汉碗娫捵稍兊姆绞阶稍冞^(guò)天嵌相關(guān)人士,想跟他們索取觸控協(xié)議而不要所謂的觸控驅(qū)動(dòng)程序源碼,但受保密協(xié)議限制不提供源碼及手冊(cè)。我們不去追究這些無(wú)聊的問(wèn)題,只要找到觸控芯片的型號(hào)并根據(jù)觸控芯片型號(hào)找到對(duì)應(yīng)的手冊(cè),然后就可以自己編寫(xiě)所謂的電容式觸摸屏驅(qū)動(dòng)了。

          一 觸控芯片分析

          首先,卸下觸摸屏的四個(gè)螺絲并翻過(guò)觸摸屏來(lái)觀察,可以在在觸摸屏排線上看到觸控芯片,仔細(xì)觀察芯片型號(hào)(如果看不清可以用放大鏡配合手電筒觀看),我們可以看到,TQ210的觸摸屏控制芯片是GT811,然后我找到了GT811的芯片手冊(cè)(這些資料都上傳到了我的CSDN資源里,請(qǐng)您支持一下),有了手冊(cè),編寫(xiě)驅(qū)動(dòng)就不難了。

          本文引用地址:http://www.ex-cimer.com/article/201611/322810.htm

          GT811引出了6根腳,分別是VCC、GND、I2CSDA、I2CSCL、INT和RESET,雖然INT腳不是必須的,但是開(kāi)發(fā)高效省資源的觸屏驅(qū)動(dòng)程序往往都采用中斷方式,下面是GT811的引腳圖:

          我用萬(wàn)能表實(shí)際測(cè)量了一下觸控模塊的各個(gè)引腳,實(shí)際線序是GND、SDA、SDL、INT、RESET和VDD。GT811的初始化順序如下:

          1. (1)初始化INT腳為懸浮輸入態(tài)并初始化RESET腳為輸出態(tài),并輸出低電平
          2. (2)延時(shí)1ms
          3. (3)初始化RESET腳為懸浮輸入態(tài),并使能上拉
          4. (4)寫(xiě)入GT811寄存器配置表
          5. (5)根據(jù)需要配置INT腳
          具體的操作可以參見(jiàn)代碼部分。

          二 I2C驅(qū)動(dòng)編寫(xiě)

          I2C驅(qū)動(dòng)也是基于總線結(jié)構(gòu)的,不過(guò)分為兩種,一種是Legacy方式,另一種是New Style方式,其中,Legacy方式在新內(nèi)核中已經(jīng)不支持了,不過(guò)韋東山老師的視頻中還是分析的Legacy方式,New Style方式你可以自己用Source Insight追蹤分析一下,我這里就不多說(shuō)了,具體的可以參考下面的代碼。

          1. #include
          2. #include
          3. #include
          4. #include
          5. #include
          6. #include
          7. #include
          8. #include
          9. conststaticunsignedshortnormal_address[]={0x5d,I2C_CLIENT_END};
          10. staticunsignedgt811_rst;
          11. staticunsignedgt811_int;
          12. staticstructinput_dev*ts_input;
          13. staticstructworkqueue_struct*wq;
          14. staticstructwork_structwork;
          15. staticstructi2c_client*this_client=NULL;
          16. staticunsignedintstatus=0;
          17. staticinti2c_read_bytes(structi2c_client*client,uint8_t*buf,intlen)
          18. {
          19. structi2c_msgmsgs[2];
          20. intret=-1;
          21. msgs[0].flags=!I2C_M_RD;
          22. msgs[0].addr=client->addr;
          23. msgs[0].len=2;
          24. msgs[0].buf=&buf[0];
          25. msgs[1].flags=I2C_M_RD;
          26. msgs[1].addr=client->addr;
          27. msgs[1].len=len-2;
          28. msgs[1].buf=&buf[2];
          29. ret=i2c_transfer(client->adapter,msgs,2);
          30. returnret;
          31. }
          32. staticinti2c_write_bytes(structi2c_client*client,uint8_t*data,intlen)
          33. {
          34. structi2c_msgmsg;
          35. intret=-1;
          36. msg.flags=!I2C_M_RD;
          37. msg.addr=client->addr;
          38. msg.len=len;
          39. msg.buf=data;
          40. ret=i2c_transfer(client->adapter,&msg,1);
          41. returnret;
          42. }
          43. staticconststructi2c_device_idts_id[]={
          44. {"tq210-ts",0},
          45. {}
          46. };
          47. staticintts_init_panel(structi2c_client*client){
          48. shortret=-1;
          49. uint8_tconfig_info[]={
          50. 0x06,0xA2,
          51. 0x12,0x10,0x0E,0x0C,0x0A,0x08,0x06,0x04,0x02,0x00,0xE2,0x53,0xD2,0x53,0xC2,0x53,
          52. 0xB2,0x53,0xA2,0x53,0x92,0x53,0x82,0x53,0x72,0x53,0x62,0x53,0x52,0x53,0x42,0x53,
          53. 0x32,0x53,0x22,0x53,0x12,0x53,0x02,0x53,0xF2,0x53,0x0F,0x13,0x40,0x40,0x40,0x10,
          54. 0x10,0x10,0x0F,0x0F,0x0A,0x35,0x25,0x0C,0x03,0x00,0x05,0x20,0x03,0xE0,0x01,0x00,
          55. 0x00,0x34,0x2C,0x36,0x2E,0x00,0x00,0x03,0x19,0x03,0x08,0x00,0x00,0x00,0x00,0x00,
          56. 0x14,0x10,0xEC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x40,
          57. 0x30,0x3C,0x28,0x00,0x00,0x00,0x00,0xC0,0x12,0x01
          58. };
            上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();