鴻蒙南北向開發(fā)基礎(chǔ)及項目實戰(zhàn)教程 課件4.1電容式觸摸屏驅(qū)動_第1頁
鴻蒙南北向開發(fā)基礎(chǔ)及項目實戰(zhàn)教程 課件4.1電容式觸摸屏驅(qū)動_第2頁
鴻蒙南北向開發(fā)基礎(chǔ)及項目實戰(zhàn)教程 課件4.1電容式觸摸屏驅(qū)動_第3頁
鴻蒙南北向開發(fā)基礎(chǔ)及項目實戰(zhàn)教程 課件4.1電容式觸摸屏驅(qū)動_第4頁
鴻蒙南北向開發(fā)基礎(chǔ)及項目實戰(zhàn)教程 課件4.1電容式觸摸屏驅(qū)動_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

4.1電容式觸摸屏驅(qū)動本章主要講述電容式觸摸屏驅(qū)動方法。通過學(xué)習(xí)本節(jié)將能夠了解電容式觸摸屏驅(qū)動方法。通過本節(jié)學(xué)習(xí)可以熟悉:電容式觸摸屏工作原理觸摸屏模組硬件接入CST816D觸控芯片觸控驅(qū)動開發(fā)電容式觸摸屏工作原理觸摸屏模組硬件接入CST816D觸控芯片觸控驅(qū)動開發(fā)電容式觸摸屏工作原理(1/3)

通常將帶觸摸控制功能的LCD屏稱為觸摸屏模組,它是由負責(zé)獲取用戶觸控坐標的觸摸屏模塊與負責(zé)顯示輸出信息的LCD模塊組成,如圖所示:電容式觸摸屏工作原理(2/3)

電容觸摸屏原理相當(dāng)于在屏幕上鋪上了一層透明的矩陣鍵盤,每個按鍵對應(yīng)屏幕不同的坐標值。通過人體的導(dǎo)電特性,當(dāng)觸摸屏幕時,相當(dāng)于按下觸控位置相應(yīng)的按鍵,然后通過矩陣鍵盤的行列線掃描,找出按下的按鍵,從而獲取觸控位置的坐標值,如圖所示:電容式觸摸屏工作原理(3/3)

為了降低開發(fā)難度,觸摸屏行列線的掃描與轉(zhuǎn)換坐標的工作通常由一個觸控芯片負責(zé)完成。CST816D觸控芯片,作為一款高性能的自電容觸控芯片,廣泛應(yīng)用于1.8寸屏幕的觸摸屏行列線掃描與坐標轉(zhuǎn)換。該芯片通過SnL與SnR引腳掃描觸摸屏的行列線,當(dāng)用戶操作觸摸屏?xí)r,通過IRQ引腳輸出上升沿或下降沿電平變化,產(chǎn)生中斷信號以通知程序接收數(shù)據(jù)。此外,CST816D通過SCL與SDA的I2C接口輸出觸控坐標值,并通過RST引腳實現(xiàn)芯片的復(fù)位及啟動。電容式觸摸屏工作原理觸摸屏模組硬件接入CST816D觸控芯片觸控驅(qū)動開發(fā)觸摸屏模組硬件接入(1/2)采用1.54寸240x240分辨率觸摸屏模組如圖所示,觸摸屏使用CST816D觸控芯片。觸摸屏模組電路如圖所示:觸摸屏模組硬件接入(2/2)

根據(jù)轉(zhuǎn)接板的標識,將觸摸屏模組的排線接入轉(zhuǎn)接板,然后再將轉(zhuǎn)接板與開發(fā)板的引腳連接如下:

轉(zhuǎn)接板

開發(fā)板

INT

-------

IO00

RST

-------

IO01

SCL

-------

IO14

SDA

-------

IO13

VCC

-------

3.3V

GND

-------

GND電容式觸摸屏工作原理觸摸屏模組硬件接入CST816D觸控芯片觸控驅(qū)動開發(fā)CST816D觸控芯片(1/3)

觸控芯片CST816D本質(zhì)上就是一個嵌入式計算機系統(tǒng),運行著觸摸屏處理的固件程序。它通過I2C接口接收配置信息,并輸出觸控信息。在與開發(fā)板的通信中,通過數(shù)據(jù)手冊提供的信息可獲知,它扮演著I2C設(shè)備從機角色,使用0x15設(shè)備地址,同時觸控芯片內(nèi)部存著多個寄存器,用于配置或獲取觸控信息,關(guān)鍵寄存器如圖所示:CST816D觸控芯片(2/3)

地址0x01的寄存器值可獲取用戶觸屏的操作類型;地址0x02的寄存器值可獲取觸屏?xí)r的點數(shù),注意CST816D只能支持單點觸摸;地址0x03、0x04寄存器值可獲取觸點的X坐標值;而地址0x05、0x06寄存器值可獲取觸點的Y坐標值。同時數(shù)據(jù)手冊提供了通過I2C接口配置觸控芯片內(nèi)部寄存器值的通信時序,設(shè)置芯片內(nèi)部0x1F地址的寄存器值為0x01的通信過程如圖所示:CST816D觸控芯片(3/3)

在數(shù)據(jù)手冊中也提供了通過I2C接口連續(xù)讀出觸控芯片內(nèi)部多個寄存器值的通信時序,連續(xù)讀出地址0x21、0x22、0x23寄存器值的通信過程如圖所示:電容式觸摸屏工作原理觸摸屏模組硬件接入CST816D觸控芯片觸控驅(qū)動開發(fā)觸控驅(qū)動開發(fā)(1/5)

在源碼工程的app目錄下創(chuàng)建IoTTouchSwitch文件夾,用于存放當(dāng)前項目所有的源文件及文件夾。接著創(chuàng)建用于實現(xiàn)主程序的IoTMain文件夾,與觸控驅(qū)動的IoTTouchScreen文件夾。在觸控驅(qū)動目錄創(chuàng)建IoTTouchScreen.h頭文件里,聲明觸屏使用的IO口與回調(diào)函數(shù)原型等信息,頭文件具體內(nèi)容如下:#ifndef__IOT_TOUCH_SCREEN_H#define__IOT_TOUCH_SCREEN_H#defineTS_SDA

HI_IO_NAME_GPIO_13

//I2C數(shù)據(jù)引腳#defineTS_SCL

HI_IO_NAME_GPIO_14

//I2C時鐘引腳#defineRSTIO

HI_IO_NAME_GPIO_1

//復(fù)位引腳#defineINTIO

HI_IO_NAME_GPIO_0//中斷引腳#defineDEV_ADDR

0x15//觸控芯片的I2C設(shè)備地址typedefvoid(*IoTTsDownHandler)(intx,inty);//聲明觸屏按下時的回調(diào)函數(shù)原型typedefvoid(*IoTTsUpHandler)(void);//聲明觸屏松手時的回調(diào)函數(shù)原型voidIoTTsRegisterCallback(IoTTsDownHandlerdownHandler,IoTTsUpHandlerupHandler);//注冊觸屏回調(diào)函數(shù)#endif觸控驅(qū)動開發(fā)(2/5)IoTTouchScreen.c源文件關(guān)鍵函數(shù)功能:voidIoTTsRegisterCallback(IoTTsDownHandlerdownCb,IoTTsUpHandlerupCb)//記錄觸屏操作的回調(diào)函數(shù)地址staticvoidtsDown(intx,inty);//觸屏按下觸發(fā)調(diào)用回調(diào)函數(shù)staticvoidtsUp()//觸屏松手時觸發(fā)調(diào)用回調(diào)函數(shù)staticvoidlcdTsGpioInit()//I2C初始化、IO口初始化與注冊中斷staticvoidCST816_WR_Reg(hi_u8*buf,hi_u8len);//配置觸控芯片寄存器staticintCST816_RD_Reg(hi_u8reg,hi_u8*buf,hi_u8len);//連續(xù)讀出多個觸控芯片寄存器值staticvoidtsIsr(void*arg);//觸屏中斷函數(shù),喚醒線程,讓其接收處理觸點坐標staticvoid*threadFunc(void*arg);//讀取觸屏坐標的線程函數(shù)voidIoTTsInit(){lcdTsGpioInit();//觸摸屏初始化//信號量初始化//創(chuàng)建循環(huán)讀取觸屏坐標的線程}觸控驅(qū)動開發(fā)(3/5)在IoTTouchScreen目錄下創(chuàng)建BUILD.gn編譯配置文件,并輸入內(nèi)容如下:static_library("IoTTouchScreen"){sources=["IoTTouchScreen.c",]include_dirs=["./","http://utils/native/lite/include","http://kernel/liteos_m/kal/cmsis","http://base/iot_hardware/peripheral/interfaces/kits","http://device/hisilicon/hispark_pegasus/sdk_liteos/platform/os/Huawei_LiteOS/components/lib/libc/musl/include",]}觸控驅(qū)動開發(fā)(4/5)

觸控模塊功能已完成,接下來在IoTMain模塊中測試調(diào)用并獲取觸屏坐標。在IoTMain目錄下創(chuàng)建IoTMain.c源文件。IoTMain.c關(guān)鍵代碼:staticvoidtsDown(intx,inty){printf("tsdown:%d,%d\n",x,y);}staticvoidtsUp(){printf("tsup\n");}voidIoTMainInit(){IoTTsRegisterCallback(tsDown,tsUp);//注冊觸屏?xí)r觸發(fā)的回調(diào)函數(shù)}APP_FEATURE_INIT(IoTMainInit)

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論