XPT2046是一款四線制電阻觸摸屏控制芯片,由深圳市矽普特科技有限公司研發(fā)生產,被廣泛的應用于觸摸屏驅動,堪稱經典之作!他內含12位分辨率125KHz轉換速率逐步逼近型A/D轉換器,支持從1.5V到5.25V的低電壓I/O接口。能通過執(zhí)行兩次A/D轉換查出被按的屏幕位置, 除此之外,還可以測量加在觸摸屏上的壓力。
連接方法:
說明:1、9、10引腳接VCC,6引腳接GND,2、3、4、5引腳接觸摸屏的4條引腳線,16、15、14、12引腳接單片機SPI引腳,11接單片機某個引腳。
工作原理:
把XPT2046第11引腳接到STM32單片機的引腳設置為中斷引腳,觸摸屏沒有被觸摸時,11引腳保持高電平,當有觸摸屏被觸摸時,11引腳變?yōu)榈碗娖?。所以用STM32單片機檢測11引腳的高低電平,就可以知道有沒有觸摸屏觸摸事件發(fā)生。如果發(fā)生了觸摸屏按下事件,單片機通過SPI口,首先發(fā)送讀取X坐標的命令0X90,然后讀出2個字節(jié)的數(shù)據,然后再發(fā)送讀取Y坐標的命令0XD0,然后再讀出2個字節(jié)的數(shù)據。這時候,XY的坐標值就知道了,因為XPT2046是12位精度的ADC,所以讀出的2個字節(jié)中,只有高12位是有效數(shù)據。
關于觸摸校準:
觸摸液晶屏的4個角,采集X和Y坐標的12位值。這時候,就分別得到了X坐標和Y坐標的最小值和最大值,根據液晶屏的分辨率,再通過數(shù)學等比公式,就可以通過采集得到的12位ADC值得出現(xiàn)在觸摸到屏幕的哪個點了。
對于一個資深級的電子人,看了我上面的表述,就知道XPT2046怎么用了。但是,對于觸摸屏的你,上面的表述對你而言就是霧里看花。不要著急,下面我給你從0補起。
首先,你要知道,我上面所講的內容是:使用XPT2046驅動4線電阻式觸摸屏。那么,你見過4線電阻式觸摸屏嗎?沒見過怎么辦?好辦!請看下圖:
大部分的電阻式觸摸屏,都是4線制的,就是引出了4條線的意思。我隨便找了一個
看它引出的排線,共4條線,所以是4線制的,也就是說,這個觸摸屏,就可以用XPT2046驅動。
看到這里,你就賺了,你已經認識了電阻式觸摸屏的真面目了,這就是工作單位要的工作經驗,想要更多干貨,請繼續(xù)往下看吧。
從前面我們了解到,此芯片的供電電壓是常用的3.3V和5V電源都可以。再加上“支持1.5V~5.25V的數(shù)字I/O口”特性。就是說,我們常用的5V的和3.3V的單片機,都可以作為他的控制器了,有沒有覺得在單片機選型上放寬很多了?
XPT2046與MCU連接:
XPT2046與單片機采用SPI連接。分別為引腳16:DCLK(SPI時鐘引腳);引腳15:CS(使能引腳或者叫做片選引腳);引腳14:DIN(數(shù)據輸入引腳);引腳12:DOUT(數(shù)據輸出引腳)。帶SPI模塊的單片機,可以配置SPI模塊與XPT2046通信。不帶SPI模塊的單片機,可以隨便找4個引腳,模擬SPI時序,與XPT2046通信。
除了SPI通信的4個引腳,還有一個引腳必須接:PENIRQ。當觸摸屏有觸摸事件發(fā)生,這個引腳就會拉低,所以我們把這個引腳接到單片機的某個中斷引腳,就可以隨時發(fā)現(xiàn)觸摸屏有被按下(用外部中斷)。
XPT2046的SPI時序
最后提醒朋友們,使用外部中斷別忘了打開AFIO復用時鐘。
來看看觸摸畫板的效果吧