




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
STM32SPI驅(qū)動觸摸屏(XPT2046)(上)觸摸屏又稱觸控面板,它是一種把觸摸位置轉(zhuǎn)化成坐標(biāo)數(shù)據(jù)的輸入設(shè)備觸摸屏可以分為電阻式觸摸屏和電容式觸摸屏。這里用電阻式觸摸屏來實現(xiàn)觸摸控制。電阻式觸摸屏結(jié)構(gòu)如下圖所示,主要由表面硬涂層、兩個ITO層、間隔點以及玻璃底層構(gòu)成,這些結(jié)構(gòu)層都是透明的,整個觸摸屏覆蓋在液晶面板上,透過觸摸屏可看到液晶面板。表面涂層起到保護作用,玻璃底層起承載的作用,而兩個ITO層是觸摸屏的關(guān)鍵結(jié)構(gòu),它們是涂有銦錫金屬氧化物的導(dǎo)電層。兩個ITO層之間使用間隔點使兩層分開,當(dāng)觸摸屏表面受到壓力時,表面彎曲使得上層ITO與下層ITO接觸,在觸點處連通電路。兩個ITO涂層的兩端分別引出X-、X+、Y-、Y+四個電極,通過這些電極,外部電路向這兩個涂層可檢測電壓。當(dāng)觸摸屏被按下時,兩個ITO層相互接觸,從觸點處把ITO層分為兩個電阻,且由于ITO層均勻?qū)щ?,兩個電阻的大小與觸點離兩電極的距離成比例關(guān)系,利用這個特性,可通過以下過程來檢測坐標(biāo),這也正是電阻觸摸屏名稱的由來。計算X坐標(biāo)時,在X+電極施加驅(qū)動電壓Vref,X-極接地,所以X+與X-處形成了勻強電場,而觸點處的電壓通過Y+電極采集得到,由于ITO層均勻?qū)щ?,觸點電壓與Vref之比等于觸點X坐標(biāo)與屏寬度之比,從而:x=Vy+/Vref*Width計算Y坐標(biāo)時,在Y+電極施加驅(qū)動電壓Vref,Y-極接地,所以Y+與Y-處形成了勻強電場,而觸點處的電壓通過X+電極采集得到,由于ITO層均勻?qū)щ姡|點電壓與Vref之比等于觸點Y坐標(biāo)與屏高度之比,從而:y=Vy+/Vref*Height這里采用XPT2046芯片作為觸摸控制芯片,XPT2046芯片控制4線電阻觸摸屏,STM32與XPT2046采用SPI通訊獲取采集得到的電壓,然后轉(zhuǎn)換成坐標(biāo)。XPT2046原理框XPT2046典型應(yīng)用圖XPT2046是一種典型的逐次逼近型模數(shù)轉(zhuǎn)換器(SARADC),包含了采樣/保持、模數(shù)轉(zhuǎn)換、串口數(shù)據(jù)輸出等功能。同時芯片集成有一個2.5V的內(nèi)部參考電壓源、溫度檢測電路,工作時使用外部時鐘。XPT2046可以單電源供電,電源電壓范圍為2.7V~5.5V。參考電壓值直接決定ADC的輸入范圍,參考電壓可以使用內(nèi)部參考電壓,也可以從外部直接輸入1V~VCC范圍內(nèi)的參考電壓(要求外部參考電壓源輸出阻抗低)。X、Y、Z、VBAT、Temp和AUX模擬信號經(jīng)過片內(nèi)的控制寄存器選擇后進(jìn)入ADC,ADC可以配置為單端或差分模式。選擇VBAT、Temp和AUX時可以配置為單端模式;作為觸摸屏應(yīng)用時,可以配置為差分模式,這可有效消除由于驅(qū)動開關(guān)的寄生電阻及外部的干擾帶來的測量誤差,提高轉(zhuǎn)換準(zhǔn)確度。XPT2046的內(nèi)部2.5V參考電壓源可通過控制位PD1進(jìn)行關(guān)閉或者打開。一般地,內(nèi)部參考電壓只用于單端模式下Vbatt、Temp和AUX輸入測量。使用差分模式,觸摸屏可以獲得最佳性能。外部參考電壓+REF和-REF之間的電壓差決定了模擬輸入的電壓范圍。XPT2046的參考電壓輸入范圍為1V~VCC。參考電壓越低,則ADC輸出的二進(jìn)制數(shù)據(jù)結(jié)果每一個數(shù)字位所代表的模擬電壓也越低。在12位工作方式下,數(shù)據(jù)結(jié)果的最低位所代表的模擬電壓為VREF/4096,其余位依此類推。因此,參考電壓越低,干擾引入的誤差會越大,此時要求盡可能使用低噪聲、低波動的參考電壓源;在設(shè)計電路板時,盡可能減少干擾,輸入的信號噪音也不能太高,否則會直接影響轉(zhuǎn)換精度。單端工作模式SER/DFR置為高電平時,XPT2046工作在為單端模式,單端工作模式的應(yīng)用原理如下圖所示。單端模式簡單,在采樣過程完成后,轉(zhuǎn)換過程中可以關(guān)閉驅(qū)動開關(guān),降低功耗。但這種模式的缺點是精度直接受參考電壓源的精度限制,同時由于內(nèi)部驅(qū)動開關(guān)的導(dǎo)通電阻存在,導(dǎo)通電阻與觸摸屏電阻的分壓作用,也會帶來測量誤差。差分工作模式SER/DFR置為低電平時,XPT2046為差分工作模式,如下圖所示。差分模式的優(yōu)點是:+REF和-REF的輸入分別直接接到Y(jié)P、YN上,可消除由于驅(qū)動開關(guān)的導(dǎo)通電阻引入的坐標(biāo)測量誤差。缺點是:無論是采樣還是轉(zhuǎn)換過程中,驅(qū)動開關(guān)都需要接通,相對單端模式而言,功耗增加了。XPT2046模擬輸入簡圖差分模式輸入配置表中說明了A2、A1、A0和SER/DFR控制位與XPT2046的配置關(guān)系。這些控制位來自DIN腳的串行數(shù)據(jù)。XPT2046是用來采集觸摸屏觸摸點的水平位置與垂直位置的。由表可知,測量Y位置時,需將A2A1A0設(shè)置為001,此時驅(qū)動的模擬輸入為YP和YN:測量X位置時,需將A2A1A0設(shè)置為101,此時驅(qū)動的模擬輸入為XP和XN。其他兩行用于測量觸模時作用于屏幕上的壓力,這里忽略??刂谱值目刂莆幻羁刂谱止?jié)各位描述如果采用單端模式測量X坐標(biāo)、Y坐標(biāo)和觸摸壓力,則需要添加一個外部參考電壓,并且XPT2046的電源也必須來自這個外部參考源。需要特別注意的一點是,當(dāng)使用單端模式時,輸入ADC的電壓不能超過內(nèi)部參考電壓,尤其是當(dāng)工作電壓大于2.7V的時候。注意:差分模式僅用于X坐標(biāo)、Y坐標(biāo)和觸摸壓力的測量,其它測量要求采用單端模式。XPT2046的數(shù)據(jù)接口是串行的,通過該接口可輕易地與單片機或處理器完成互連,處理器和轉(zhuǎn)換器之間的通信需要8個時鐘周期,通過這8個時鐘周期來確定XPT72046轉(zhuǎn)換的模擬通道及采用的轉(zhuǎn)換模式。一次完整的轉(zhuǎn)換需要24個串行同步時鐘來完成。前8個時鐘用來通過DIN引腳輸入控制命令(字節(jié)),當(dāng)轉(zhuǎn)換器獲取有關(guān)下一次轉(zhuǎn)換的足夠信息后,接著根據(jù)獲得的信息設(shè)置輸入多路選擇器和參考源輸入,并進(jìn)入采樣模式,如果需要,將啟動觸摸面板驅(qū)動器,3個多時鐘周期后,控制字節(jié)設(shè)置完成,轉(zhuǎn)換器進(jìn)入轉(zhuǎn)換狀態(tài)。這時,輸入采樣保持器進(jìn)入保持狀態(tài),觸摸面板驅(qū)動器停止工作(單端工作模式)。接著的12個時鐘周期將完成真正的模數(shù)轉(zhuǎn)換。在差分模式時,驅(qū)動器在轉(zhuǎn)換過程中將一直工作,第13個時鐘將輸出轉(zhuǎn)換結(jié)果的最后一位。剩下的3個多時鐘周期將用來完成被轉(zhuǎn)換器忽略的最后字節(jié)(DOUT輸出0)。XPI204624周期的轉(zhuǎn)換時序如圖所示:由圖可知??刂谱止?jié)由DIN送入XPT2046,其包括啟動轉(zhuǎn)換位、尋址位,ADC分辨率設(shè)置位,單端/差分設(shè)置位和掉電控制位,起始位是拉制字的首位,取值恒為1,在DIN引腳檢測到起始位前,所有的輸入都將被忽略。尋址位即A2A1A0,由表可知,當(dāng)A2A1A0為001時,XPT2046采集Y位置,當(dāng)A2A1A0為101時,XPT2046采集X位置。MODE位為模式選擇位,其用于設(shè)置ADC分辨率,當(dāng)MODE為0時,下一次轉(zhuǎn)換將是12位模式:當(dāng)MODE為1時,下一次轉(zhuǎn)換將是8位模式。SER/DFR位用于選擇參考源的模式,當(dāng)SER/DFR為1時,選擇單端模式;當(dāng)SER/DFR為0時,選擇差分模式,為提高AD轉(zhuǎn)換的精度并消除測量誤差,這里選擇12位轉(zhuǎn)換模式和差分模式。最后兩位用于掉電控制,這里將之配置為00,即在兩次AD轉(zhuǎn)換之間掉電,下次轉(zhuǎn)換一開始,芯片立即進(jìn)入完全上電狀態(tài),而無需額外延時,另外,此時PENIRQ是一直使能的。分析可得轉(zhuǎn)換X通道時所對應(yīng)的控制字為0xD0,轉(zhuǎn)換Y通道時所對應(yīng)的控制字為0x90。為方便使用,將這兩個控制字定義為宏:#defineX_CMD0XD0#defineY_CMD0X90接著開始編寫觸摸屏程序,原理圖如下:引腳分別是T_MOSI:PF11、T_MISO:PB2、T_CS:PC13、T_CLK:PB0、T_PEN:PB1。為方便調(diào)用對引腳進(jìn)行的控制進(jìn)行宏定義,。#defineT_CS_H()do{GPIOC->BSRRL=1<<
13;}while(0)#defineT_CS_L()do{GPIOC->BSRRH=1<<
13;}while(0)#defineT_CLK_H()do{GPIOB->BSRRL=1<<
0;}while(0)#defineT_CLK_L()do{GPIOB->BSRRH=1<<
0;}while(0)#defineT_MOSI_H()do{GPIOF->BSRRL=1<<
11;}while(0)#defineT_MOSI_L()do{GPIOF->BSRRH=1<<
11;}while(0)初始化引腳:voidTouch_gpio_Init(){//1.開時鐘RCC->AHB1ENR|=1<<
1|1<<
2|1<<
5;//2.模式、類型、速度、上下拉//PB1/2:輸入GPIOB->MODER&=~(0XF<<
2);GPIOB->PUPDR&=~(0XF<<
2);GPIOB->PUPDR|=(0x1<<
2);//PB0:GPIOB->MODER&=~(0X3<<
0);GPIOB->MODER|=1<<
0;GPIOB->OTYPER&=~(1<<
0);//推挽GPIOB->OSPEEDR&=~(0X3<<
0);//2mHZGPIOB->PUPDR&=~(0X3<<
0);//無上下拉//PC13GPIOC->MODER&=~(0X3<<
26);GPIOC->MODER|=1<<
26;GPIOC->OTYPER&=~(1<<
13);//推挽GPIOC->OSPEEDR&=~(0X3<<
26);//2mHZGPIOC->PUPDR&=~(0X3<<
26);//無上下拉//PF11GPIOF->MODER&=~(0X3<<
22);GPIOF->MODER|=1<<
22;GPIOF->OTYPER&=~(1<<
11);//推挽GPIOF->OSPEEDR&=~(0X3<<
22);//2mHZGPIOF->PUPDR&=~(0X3<<
22);//無上下拉//3.初始狀態(tài)T_CS_H();//片選信號低電平有效,初始時不片選T_CLK_L();}初始化完成,根據(jù)時序編寫對X或Y通道完成一次轉(zhuǎn)換的函數(shù)實現(xiàn)u16Touch_GetADC(u8cmd){u8i=0;u16res=0;T_CLK_L();T_CS_L();Delay_us(1);for(i=0;i<8;i++){if(cmd&0x80)T_MOSI_H();//數(shù)據(jù)有效輸出高電平elseT_MOSI_L();//數(shù)據(jù)有效輸出低電平Delay_us(1);T_CLK_H();Delay_us(1);T_CLK_L();Delay_us(1);cmd<<=1;}T_CLK_H();//ADC需要一個周期Delay_us(1);res=0;for(i=0;i<15;i++){res<<=1;//空出最低位,準(zhǔn)備接收T_CLK_L();Delay_us(1);T_CLK_H();Delay_us(1);if(GPIOB->IDR&(1<<
2))res|=1;Delay_us(1);}T_CLK_L();Delay_us(1);T_CS_H();res>>=3;//最低3位是補充的0,移掉不要returnres;}有了上面的函數(shù),只需依次送入X通道的控制字節(jié)和Y通道的控制字節(jié),即可在一次接觸后,獲取接觸點x、y方向的AD值。但針對AD轉(zhuǎn)換,為了提高轉(zhuǎn)換的準(zhǔn)確性,這里采用中值平均濾波算法進(jìn)行濾波。中值平均算法即將獲取的AD值通過冒泡法排序,然后掐頭去尾,取平均值并返回。具體如下:u16Touch_GetAvgADC(u8cmd,u16*buf,u8size){u8i=0,j=0;u16temp=0;floatres=0;for(i=0;i<size;i++)buf[i]=Touch_GetADC(cmd);for(i=0;i<size-1;i++){for(j=i+1;j<size;j++){if(buf[i]接著,就可以用這個函數(shù)得到一個點的坐標(biāo)。先把點的坐標(biāo)定義為結(jié)構(gòu)體:typedefstruct{u16x;u16y;}Point_Typedef;通過筆中斷引腳判斷是否有觸摸動作,然后分別讀出X和Y的ADC值并返回出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公路項目人員聘請合同范本
- 農(nóng)村房屋安裝維修合同范本
- 公司員工勞動合同范本
- 北京企業(yè)住房合同范本
- 產(chǎn)品交付標(biāo)準(zhǔn)合同范本
- 公司擔(dān)保合同范本6
- 綜合實踐項目《制作細(xì)胞模型》教學(xué)設(shè)計-2024-2025學(xué)年魯科版生物六年級上冊
- 2人合伙合同范本
- 修路混凝土合同范本
- 產(chǎn)品加工定制合同范本
- 民航概論PPT全套教學(xué)課件
- 過敏性肺泡炎課件
- 客運車輛進(jìn)站協(xié)議書
- 藥學(xué)專業(yè)論文3000字-藥學(xué)畢業(yè)論文
- 2022-2023學(xué)年遼寧省葫蘆島市建昌縣數(shù)學(xué)四下期末經(jīng)典試題含解析
- 山東工商學(xué)院馬克思主義基本原理期末復(fù)習(xí)題及參考答案
- 2022-2023學(xué)年杭州市六年級下學(xué)期數(shù)學(xué)期末考試試卷及答案解析
- 文獻(xiàn)檢索與論文寫作-文獻(xiàn)檢索與科技論文寫作138課件
- 公務(wù)員錄用審批表
- 重慶市住宅裝飾裝修工程質(zhì)量驗收標(biāo)準(zhǔn)
- 廢橡膠處理協(xié)議書范本
評論
0/150
提交評論