當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀] 基于BU21023的電阻式觸摸屏兩點(diǎn)觸控功能設(shè)計(jì)

摘要:隨著觸摸屏的普及,兩點(diǎn)/多點(diǎn)觸控功能成為人們新的關(guān)注點(diǎn)。本文介紹了電阻式觸摸屏兩點(diǎn)觸摸控制芯片BU21023的功能與應(yīng)用,并基于嵌入式Linux系統(tǒng)實(shí)現(xiàn)了電阻式觸模屏的兩點(diǎn)觸控功能。該方案可以用于普通四線電阻式觸摸屏上,而且能夠有效地降低實(shí)現(xiàn)兩點(diǎn)觸控功能所需的硬件成本。
關(guān)鍵詞:電阻式觸摸屏;兩點(diǎn)觸控;嵌入式系統(tǒng)

引言
    隨著技術(shù)的進(jìn)步,便攜式電子設(shè)備已經(jīng)成為人們生活中必不可少的工具,而普通用戶的巨大數(shù)量使得便攜式電子設(shè)備的人機(jī)接口成為開發(fā)者關(guān)注的重點(diǎn)。目前,絕大多數(shù)的手機(jī)和平板電腦都使用觸摸屏作為主要輸入設(shè)備,以提供友好的人機(jī)界面和良好的用戶體驗(yàn)。目前,在便攜式電子設(shè)備上使用最廣泛的觸摸屏主要是電容式和電阻式兩種。電容式觸摸屏最大的優(yōu)勢(shì)在于其多點(diǎn)觸控技術(shù)已繹比較完善,廣泛應(yīng)用于眾多電子產(chǎn)品中;但是電容式觸摸屏價(jià)格昂貴,且對(duì)工作環(huán)境、機(jī)械與電路設(shè)計(jì)有較高要求。而電阻式觸摸屏成本低、設(shè)計(jì)簡(jiǎn)單,此前制約其應(yīng)用的主要因素在于僅能夠進(jìn)行單點(diǎn)觸控。事實(shí)上,對(duì)于電阻式觸摸屏兩點(diǎn)觸控的研究成果已經(jīng)達(dá)到可以大規(guī)模應(yīng)用的階段。本文利用ROHM公司的兩點(diǎn)觸摸控制芯片BU21023實(shí)現(xiàn)了電阻式觸摸屏的兩點(diǎn)觸控功能。

1 BU21023簡(jiǎn)介
    BU21023內(nèi)置10位的ADC,并內(nèi)置一顆8位的MCU 用于坐標(biāo)的計(jì)算,提供的分辨率最高為1024×1024。BU21023的結(jié)構(gòu)框圖如圖1所示。


    該芯片通過觸摸屏接口的4個(gè)引腳與普通四線電阻式觸摸屏相連接。存MCU的Host接口方面,BU21023提供兩種通信方式——4線SPI或2線串行通信(類似于I2C總線協(xié)議),用戶可以使用IFSEL引腳選擇通信方式。4線SPI協(xié)議可以提供最高15 Mbps的通信速度,但是根據(jù)協(xié)議,這種方式需要獨(dú)占4個(gè)引腳;而2線串行通信方式只占用2個(gè)引腳,且可以與其他設(shè)備共用總線,但是最高只能提供400kbps的通信速度。實(shí)際應(yīng)用中MCU的Host接口引腳資源通常比較緊張,因此采用串行通信較多?;诖朔N考慮,本文也采用2線串行通信。此外,該芯片在工作前需要下載一個(gè)8 192字節(jié)的固件。這段代碼可以存儲(chǔ)在EEPROM中通過EEPROM接口下載,也可以存放在MCU的程序空間通過串行通信下載。本文采取后一種方式。
    BU21023的工作電壓范圍為2.7~3.6 V,符合一般便攜式電子設(shè)備的供電電壓要求。根據(jù)實(shí)際測(cè)量,其工作時(shí)電流消耗約為7 mA,而當(dāng)芯片進(jìn)入休眠模式后,電流消耗下降到30~40μA。因此該芯片非常適合用于各類便攜式電子設(shè)備中。

2 工作機(jī)制
    典型電阻式觸摸屏的工作部分一般由3部分組成:兩層透明的阻性導(dǎo)體層、兩層導(dǎo)體之間的隔離層和電極。觸摸屏工作時(shí),上下導(dǎo)體層相當(dāng)于電阻網(wǎng)絡(luò),一些有壓力施加到觸摸屏上,上下層線路導(dǎo)通。此時(shí),在XP、XN上分別加VREF、0 V電壓,使X面上形成了從0~VREF的電壓梯度,觸摸點(diǎn)至XN端的電壓為該兩端電阻對(duì)VREF的分壓,分壓值代表了觸摸點(diǎn)在X方向的位置。然后,將Y面的一個(gè)電極(如YN)端懸空,可從另一電極(YP)取出這一分壓,將該分壓進(jìn)行A/D轉(zhuǎn)換,并與VREF進(jìn)行比較,便可得到觸摸點(diǎn)的X坐標(biāo)。同理,在YP、YN上分別加VREF、0 V電壓,而將X面的一個(gè)電極(如XN)懸空,從另一電極(XP)上取出觸摸點(diǎn)在Y方向的分壓,即可得到Y(jié)坐標(biāo)。
    這種測(cè)量方式?jīng)Q定了它只能得出一個(gè)觸點(diǎn)的坐標(biāo)。而BU21023則通過采集更多數(shù)據(jù)來(lái)計(jì)算得出兩個(gè)觸點(diǎn)的坐標(biāo)。其工作時(shí)序如圖2所示。


    在1時(shí)段,芯片在XP與YN兩端加上電壓,測(cè)量XN與YP端的電壓;在2時(shí)段,芯片在XP與XN兩端加上電壓,測(cè)量YP與YN端的電壓;在3時(shí)段,芯片在YP與YN兩端加上電壓,測(cè)量XP與XN端的電壓。通過這些測(cè)量獲得數(shù)據(jù)后,在4時(shí)段進(jìn)行計(jì)算得出兩個(gè)觸點(diǎn)的坐標(biāo)。整個(gè)測(cè)量計(jì)算周期耗時(shí)約4 ms,相對(duì)一般的電阻式觸摸屏控制芯片的測(cè)量周期更長(zhǎng),但是仍然足夠檢測(cè)入手的動(dòng)作。在全部測(cè)量計(jì)算完成后,如果有設(shè)定間歇工作模式的話,則會(huì)在5時(shí)段等待到足夠的時(shí)間。

3 系統(tǒng)硬件設(shè)計(jì)
    本文采用的硬件平臺(tái)使用TI公司的OMAP3530作為主機(jī)。OMAP3530采用ARM Cortex-A8架構(gòu),具有豐富的外圍接口,包括3組I2C總線控制器與4組SPI控制器。BU21023部分的硬件連接電路如圖3所示。


    BU21023芯片通過XP、XN、YP和YN四個(gè)引腳與4線電阻式觸摸屏相連接,將IFSEL置高選擇通信方式為2線串行模式,通過SCL和SDA連接Host端的I2C總線控制器,INT為中斷信號(hào)引腳,SEL_CSB和RSTB分別為片選與硬件復(fù)位。

4 驅(qū)動(dòng)軟件設(shè)計(jì)
    本文所采用的系統(tǒng)環(huán)境為Android 2.2版本,使用Linux Kerncl 2.6.32。在Linux系統(tǒng)中,設(shè)備驅(qū)動(dòng)程序是一組相關(guān)函數(shù)的集合。它包括設(shè)備服務(wù)子程序和中斷處理程序。本文的驅(qū)動(dòng)程序中重要的是上電及初始化子程序和中斷處理程序。
4.1 上電及初始化子程序
    在BU21023芯片上電后等待200μs,由主機(jī)將RSTB引腳拉高。然后對(duì)基本寄存器進(jìn)行配置,需要配置的共有20個(gè)寄存器。完成寄存器配置后,通過向SYSTEM(0x40)寄存器寫入0x01來(lái)啟動(dòng)芯片的模擬部分。等待100μs后開始下載固件,通過向CMN_SETUP1(0x31)寄存器寫入0x02,將下載路徑配置為從Host端下載,此后可以向EX_WDAT(0x72)寄存器寫入固件,共8192字節(jié)。在寫入完成后可以通過讀取EX_CHK_SUM1~EX_CHK_ SUM3(0x74~0x76)的值來(lái)校驗(yàn)。如果這個(gè)校驗(yàn)值與固件前8189個(gè)字節(jié)的和相等,則下載成功。完成固件下載后,清除所有中斷信息,然后向SYSTEM(0x40)寄存器寫入0x03以啟動(dòng)芯片的內(nèi)置MCU。在得到啟動(dòng)成功的中斷信息后清除該中斷,則芯片初始化完成,進(jìn)入工作狀態(tài)。
4.2 中斷處理程序
    中斷處理程序是整個(gè)觸控程序的關(guān)鍵部分。
    BU21023的中斷包括6種情況,坐標(biāo)更新和致命錯(cuò)誤足主要的2種,另外4種為程序下載完成、進(jìn)入休眠模式、退出休眠模式和自動(dòng)校準(zhǔn)完成。中斷類型可以從INT_STS寄存器讀出。對(duì)于后4種中斷類型,在中斷處理程序中不需要進(jìn)行處理,直接清除中斷即可。
    若中斷類型為致命錯(cuò)誤,則應(yīng)當(dāng)瀆取ERR_STS寄存器的信息,該信息表明了發(fā)生錯(cuò)誤的原因??赡艿腻e(cuò)誤原因共有14種,包括固件下載異常中斷、自動(dòng)校準(zhǔn)失敗、測(cè)量周期過短和ADC無(wú)響應(yīng)。前3種情況可以通過軟件手段恢復(fù),最后一種錯(cuò)誤,可以嘗試重新上電啟動(dòng)。
    當(dāng)芯片處于正常工作狀態(tài),得到的中斷應(yīng)該都是坐標(biāo)更新。不同版本的固件其產(chǎn)生該類型中斷的條件或有不同,為使得程序具有通用性,采取如下方法處理:將中斷設(shè)置為下降沿觸發(fā),當(dāng)?shù)谝淮伟l(fā)生坐標(biāo)更新的中斷時(shí),屏蔽該類型的中斷,然后讀取芯片的POS_X1_H~POS_ Y2_L(0x20~0x27)這8個(gè)寄存器。這些寄存器內(nèi)存儲(chǔ)的是兩個(gè)觸點(diǎn)的X與Y坐標(biāo)。若兩個(gè)觸點(diǎn)的坐標(biāo)不都為0,則有接觸發(fā)生,此時(shí)將接觸坐標(biāo)處理后上報(bào)至系統(tǒng),并開啟一個(gè)定時(shí)器。利用定時(shí)器定時(shí)讀取坐標(biāo)信息,并將坐標(biāo)處理后上報(bào)至系統(tǒng),直至讀取到兩個(gè)觸點(diǎn)的坐標(biāo)都為0。當(dāng)兩個(gè)觸點(diǎn)的坐標(biāo)都為0時(shí),表明此次觸控操作結(jié)束,將坐標(biāo)上報(bào)后,關(guān)閉定時(shí)器,清除中斷信息,最后解除對(duì)坐標(biāo)更新中斷的屏蔽。這樣,一次完整的觸控操作的檢測(cè)就完成了。
    這種方法的好處有以下兒點(diǎn):
    ①首先,這種方法可以適用于不同版本的固件,當(dāng)固件有升級(jí)時(shí)不需要修改驅(qū)動(dòng)程序。
    ②其次,使用定時(shí)器來(lái)定時(shí)讀取坐標(biāo)可以有效減輕Host MCU的負(fù)擔(dān)。事實(shí)上考慮到人手的移動(dòng)速度,過高頻率地讀取坐標(biāo)完全沒有必要,只會(huì)造成Host MCU的負(fù)擔(dān)增加??梢愿鶕?jù)系統(tǒng)的繁忙程度和采集到的信息情況選取一個(gè)合適的時(shí)間間隔。
    ③采用這種方法,INT引腳在有觸控的時(shí)候保持低電平,在沒有觸控的時(shí)候保持高電平,這也符合目前市場(chǎng)上絕大部分電阻式觸摸屏控制芯片的中斷定義,減輕了開發(fā)時(shí)候的工作量。

5 觸摸屏參數(shù)測(cè)定
    由于不同的觸摸屏其物理參數(shù)不同,因此在實(shí)際使用前需要測(cè)定相關(guān)參數(shù),并寫入芯片相關(guān)寄存器內(nèi),供坐標(biāo)計(jì)算時(shí)使用。
    需要測(cè)定的參數(shù)共有8個(gè),分別存儲(chǔ)于CMN_SETUP2(0x31)、SETUP_X(0x34)、SETUP_Y(0x35)、OFS_X(0x36)、OFS_Y(0x37)、TH_DET_TOUCH(0x3A)、EVR_X(0x63)及EVR_Y(0x64)這8個(gè)寄存器內(nèi)。0x31寄存器存儲(chǔ)的主要是X軸與Y軸的方向設(shè)定信息。由于安裝時(shí)觸摸屏與顯示屏的坐標(biāo)方向可能不同,通過此參數(shù)設(shè)定使觸摸屏的坐標(biāo)系與顯爪屏統(tǒng)一。在完成方向沒定后,需要測(cè)定的參數(shù)為X方向與Y方向的ADC參考電阻阻值,數(shù)據(jù)分別存入0x63與0x64寄存器。之后設(shè)定的為0x3A寄存器,該寄存器存儲(chǔ)的參數(shù)為有觸點(diǎn)與無(wú)觸點(diǎn)的判斷閾值。0x34~0x37寄存器存儲(chǔ)的信息則用來(lái)判定是否兩點(diǎn)接觸并計(jì)算兩點(diǎn)坐標(biāo)。
    此外,BU21023還有手勢(shì)識(shí)別功能,由于Android系統(tǒng)自帶有手勢(shì)識(shí)別,故不使用BU21023的此功能,因此手勢(shì)閾值參數(shù)不做測(cè)定,對(duì)應(yīng)的TH_DET_GESTURE(0x3B)寄存器直接使用初始值。
    需要注意的是,這些參數(shù)測(cè)定的結(jié)果直接影響兩點(diǎn)檢測(cè)時(shí)的準(zhǔn)確度。因此,在開發(fā)時(shí)可以測(cè)定若下組參數(shù)后選取一組效果最佳的參數(shù)。

結(jié)語(yǔ)
    BU21023具有低功耗、易開發(fā)的特點(diǎn),可以在普通四線電阻式觸摸屏上實(shí)現(xiàn)兩點(diǎn)觸控功能。該芯片適用于各類便攜式電子設(shè)備,并可以幫助開發(fā)者用較低的硬件成本實(shí)現(xiàn)較好的用戶體驗(yàn)。因此,該芯片有望大規(guī)模應(yīng)用在移動(dòng)電話或平板電腦開發(fā)中。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉