58.5 電阻式觸摸控制器——XPT2046
為了方便測量觸摸屏的坐標(biāo),芯片廠商設(shè)計了專門的觸摸屏控制芯片,實現(xiàn)觸摸點電壓測量與轉(zhuǎn)換功能。本文采用的XPT2046是一款4導(dǎo)線制觸摸屏控制器,內(nèi)含12位分辨率
125KHz 轉(zhuǎn)換速率逐次逼近型A/D轉(zhuǎn)換器。XPT2046通過執(zhí)行兩次A/D轉(zhuǎn)換便可以計算出觸摸點位置,該芯片兼容 ADS7843 觸摸芯片,其電路原理圖和引腳圖如圖8-6和表8-1、表8-2所示。
XPT2046的電源VCC的范圍為2.7V~5.5V。A/D轉(zhuǎn)換所需的參考電壓可以選擇通過VREF輸入,范圍是1V~VCC;也可以采用內(nèi)部內(nèi)部 2.5V參考電壓,采用內(nèi)部參考電壓時VREF引腳應(yīng)懸空。XPT2046除了作為觸摸驅(qū)動芯片,還可以進(jìn)行電池電壓檢測、溫度測量,以及壓力測量。作為觸摸屏應(yīng)用時,X+、X-、Y+、Y-分別連接電阻觸摸屏的X+、X-、Y+、Y-引腳,測量時芯片會根據(jù)指令自動切換X、Y電極的電壓,并采集觸摸點的電壓進(jìn)行快速A/D轉(zhuǎn)換。
XPT2046的ADC可以配置為單端或差分模式,具體如下:
單端模式是以外部參考電壓VREF為參考,在采樣過程完成后,進(jìn)行A/D轉(zhuǎn)換時可以關(guān)閉驅(qū)動開關(guān),以降低功耗。但這種模式的缺點是精度直接受參考電壓源的精度限制,同時由于內(nèi)部驅(qū)動開關(guān)存在導(dǎo)通電阻,導(dǎo)通電阻與觸摸屏電阻的分壓作用,也會帶來測量誤差。因此該模式主要應(yīng)用于電池監(jiān)測、溫度測量和壓力測量。
差分工作模式是以X、Y電極兩端的電壓作為差分輸入電壓,可消除由于驅(qū)動開關(guān)的導(dǎo)通電阻引入的坐標(biāo)測量誤差。缺點是驅(qū)動開關(guān)一直接通,相對于單端輸入模式而言,功耗變高了。作為觸摸屏應(yīng)用時,為了提高轉(zhuǎn)換精度,應(yīng)該配置為差分模式。
68.6 XPT2046通信接口及控制命令
XPT2046允許采用SPI,SSI,Microwire等串行接口通信,本文采用IO口模擬SPI方式通信。XPT2046一次完整的數(shù)據(jù)轉(zhuǎn)換一般需要24個時鐘周期,即通信時單片機(jī)必須提供24個時鐘周期才能保證XPT2046完成一次數(shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)按照高位在前、低位在后的順序傳輸,當(dāng)CS為低電平時,數(shù)據(jù)在CLK的上升沿鎖存,下降沿輸出(即CPOL=0,CPHA=1的模式)通信時序如8-7所示。
圖8-7 XPT2046 24時鐘周期轉(zhuǎn)換時序圖
結(jié)合時序圖,操作步驟如下:
1、發(fā)送控制字命令。前8個時鐘周期單片機(jī)通過DIN(MOSI)引腳發(fā)送控制字命令,用于配置XPT2046的工作模式??刂泼钣?個數(shù)據(jù)位組成,包括起始位、通道選擇位、分辨率選擇位、輸入方式和低功率模式,控制命令如表8-3所示。
(1)起始位——第一位,即 S 位??刂谱值钠鹗嘉槐仨殲?1,否則所有的輸入將被忽略。
(2)通道選擇位——A2、A1、A0用于選擇對哪一個通道進(jìn)行A/D轉(zhuǎn)換。差分模式下:當(dāng)A2=0,A1=0,A0=1時表示選擇X+通道,即測量Y軸坐標(biāo);當(dāng)A2=1,A1=0,A0=1時表示選擇Y+通道,即測量X軸坐標(biāo)。測量坐標(biāo)時,要分別測量X+和Y+通道。
(3)MODE——模式選擇位,用于設(shè)置 ADC 的分辨率。為0表示下一次的轉(zhuǎn)換為 12 位模式;為1表示下一次的轉(zhuǎn)換將是 8 位模式,默認(rèn)設(shè)置選擇12位模式。
(4)SER/DFR——輸入模式選擇位,單端輸入方式/差分輸入方式選擇位。為1是單端輸入方式,為0是差分輸入方式,觸摸測量時默認(rèn)選擇差分模式,即設(shè)置該位為0。
(5)PD1和PD0——模式選擇位,其功能如表8-4所示。若為11,器件總處于全功耗模式;若為00,器件在A/D轉(zhuǎn)換之間處于低功率模式。同時PD0位還控制是否產(chǎn)生PENIRQ中斷,如果使能PENIRQ中斷,當(dāng)有觸摸動作時,PENIRQ引腳會輸出0,否則輸出1,通過PENIRQ引腳可以判斷是否有觸摸動作,本教材默認(rèn)設(shè)置PD1、PD0為00。
2、電壓采樣。當(dāng)XPT2046接收到5個控制命令位時,即在接收到MODE位后,XPT2046內(nèi)部就可以根據(jù)控制位信息設(shè)置輸入多路選擇器和參考源輸入,并啟動觸摸面板驅(qū)動器,開始進(jìn)入采樣模式,該動作與SPI串行通信是同步的,并不影響剩余控制位的傳輸,如圖8-7種的時序圖所示;3個多時鐘周期后,控制字接收完成,于此同時采樣完畢,轉(zhuǎn)換器進(jìn)入轉(zhuǎn)換狀態(tài),此時XPT2046會將BUSY引腳置高,表示數(shù)據(jù)正在轉(zhuǎn)換。
3、轉(zhuǎn)換結(jié)束后需要提供16個時鐘信號,其中第1個時鐘信號用于清除BUSY位,然后再發(fā)送12個時鐘周期將輸出轉(zhuǎn)換后的12位有效數(shù)據(jù)。最后3個時鐘信號用于輸出剩余3個無效數(shù)據(jù),默認(rèn)為0。
4、注意當(dāng)次讀取的轉(zhuǎn)換數(shù)據(jù),是上一次的轉(zhuǎn)換結(jié)果,而當(dāng)次的時鐘提供的轉(zhuǎn)換數(shù)據(jù),下一次讀取,因此第一次讀取的數(shù)據(jù)是無效數(shù)據(jù)。
78.7 觸摸屏校準(zhǔn)
計算觸摸點位置時需要引入兩個概念——物理坐標(biāo)和邏輯坐標(biāo)。物理坐標(biāo)就是觸摸點在液晶屏上的實際位置,通常以液晶上像素的個數(shù)來度量。本文采用的TFT-LCD的X和Y軸坐標(biāo)范圍分別為0239和0319。邏輯坐標(biāo)指的是觸摸點的電壓值經(jīng)ADC轉(zhuǎn)換后得到的坐標(biāo)值,由ADC精度決定,12位ADC模式下其范圍為0~4095。實際使用時需要通過邏輯坐標(biāo)計算相應(yīng)的實際物理坐標(biāo)。
觸摸屏是由液晶顯示屏(TFT-LCD)疊加一層觸摸層構(gòu)成一個矩形的實際物理平面。一方面由于存在誤差,這兩個平面并不是完全重合;另一方面由于 A/D轉(zhuǎn)換器的前端電路具有高輸入阻抗,因此特別容易受到電氣噪聲的干擾;觸摸屏本身電阻材料的均勻性以及模擬電子開關(guān)的內(nèi)阻和 A/D轉(zhuǎn)換器自身的轉(zhuǎn)換精度都會影響轉(zhuǎn)換后的邏輯坐標(biāo)值?;谝陨蟽煞矫嬖?qū)е聦嶋H的物理坐標(biāo)與軟件通過邏輯坐標(biāo)所計算的物理坐標(biāo)有所偏差。校準(zhǔn)的作用就是要將邏輯平面映射到物理平面上,即得到觸點在液晶屏上的位置坐標(biāo)。
由于電阻式觸摸屏的電壓成線性均勻分布,那么A/D轉(zhuǎn)換后的坐標(biāo)值也成線性。首先假定物理平面和邏輯平面之間的誤差是線性誤差,如果已知觸摸屏上一點A,其物理坐標(biāo)為(X a ,Y a ),相應(yīng)的邏輯坐標(biāo)為(X b ,Y b ),根據(jù)假定的線性關(guān)系,可以得到:
Xa = K ~x ~ * X ~b ~ + D x ;
Ya = K ~y ~ * X ~b ~ + D y ;
其中Kx、Ky分別為觸摸屏X方向和Y方向的縮放比例系數(shù),D x 、Dy為偏差常數(shù),它們由校準(zhǔn)點計算而來。根據(jù)觸摸屏的Kx、Ky、D x 、D y ,就可以通過邏輯坐標(biāo)計算出相對準(zhǔn)確的物理坐標(biāo)。
觸摸屏的校準(zhǔn)方法大致有兩點校準(zhǔn)、三點校準(zhǔn)、四點校準(zhǔn)、五點校準(zhǔn)等。其中校準(zhǔn)的點數(shù)越多,觸摸屏的校準(zhǔn)相對越精確。本文采用五點校正法。五點校正法優(yōu)勢在于可以更加精確的計算出X和Y方向的比例縮放系數(shù),同時提供了中心基準(zhǔn)點,對于一些線性電阻系數(shù)比較差的電阻式觸摸屏有很好的校正作用。
首先在液晶屏的4個角取4個固定物理坐標(biāo)作為測量點,并且在液晶屏中心位置取一個基準(zhǔn)點,然后依次顯示各個校準(zhǔn)點,并讀取該點的觸摸坐標(biāo),最后計算Kx、Ky、D x 、D y ,校準(zhǔn)點如圖8-8所示。
8-8 五點校準(zhǔn)示意圖
校準(zhǔn)流程如下所示:
1、依次顯示并觸摸5個校準(zhǔn)點,并讀取觸摸坐標(biāo);
2、根據(jù)坐標(biāo)計算S1、S2、S3、S4、S5、S6五條線段的長度,并比較S1和S2,S3和 S4,S5和S6的距離,當(dāng)二者的距離小于一定范圍時,默認(rèn)校準(zhǔn)有效,否則無效,重新 校準(zhǔn)。當(dāng)距離差越小時,校準(zhǔn)越準(zhǔn)確。
3、根據(jù)所得的校準(zhǔn)點的邏輯坐標(biāo)計算縮放比例系數(shù)K x 、K y ,和偏差D x 、Dy公式如下:
Kx = ((X2-X1)/ S1+(X4-X3)/ S2)/2
Ky = ((Y3-Y1)/ S3+(Y4-Y2)/ S4)/2
D ~x ~ = (S1- K x *(X1+X2))/2
D ~y ~ = (S1- Ky*(Y1+Y2))/2
4、通過K x 、K y 、D x 、Dy以及中心基點的邏輯坐標(biāo)計算相應(yīng)的物理坐標(biāo),如果計算后的坐標(biāo)與實際坐標(biāo)誤差小于一定范圍,比如5個像素時認(rèn)為校準(zhǔn)成功,否則校準(zhǔn)失敗,需要重新校準(zhǔn)。
88.8 觸摸畫板實驗
根據(jù)液晶屏的觸摸功能設(shè)計了一款簡易的觸摸畫板實驗。觸摸畫板分為兩部分,功能區(qū)和繪畫區(qū),功能區(qū)用來選擇畫筆顏色和清除畫板,然后通過觸摸筆在繪畫區(qū)繪制圖案。
首先將觸摸事件分為按下、滑動、抬起三種事件,不同事件對應(yīng)不同的動作。當(dāng)滑動事件觸發(fā)時,如果觸摸點的坐標(biāo)位于繪畫區(qū),則在對應(yīng)位置通過畫點函數(shù)畫一個2*2的點。當(dāng)抬起動作觸發(fā)時,如果抬起時的坐標(biāo)是否位于功能區(qū),則觸發(fā)相應(yīng)的功能。
具體代碼如下:
-
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120230 -
cpu
+關(guān)注
關(guān)注
68文章
10854瀏覽量
211574 -
實時時鐘
+關(guān)注
關(guān)注
4文章
245瀏覽量
65767 -
STM32F103
+關(guān)注
關(guān)注
33文章
477瀏覽量
63600
發(fā)布評論請先 登錄
相關(guān)推薦
評論