日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于I2C的嵌入式多點(diǎn)觸摸屏幕驅(qū)動設(shè)計(jì)

摘要:采用了三星公司的S3C6410X處理器,通過嵌入式Linux的驅(qū)動管理系統(tǒng)實(shí)現(xiàn)了對Cypress 7958、SnapticsTM1444等基于I2C總線協(xié)議的多點(diǎn)觸摸屏幕的驅(qū)動設(shè)計(jì)。實(shí)踐證明,在基于Linux核心的Qtopia平臺以及Andriod嵌入式操作系統(tǒng)上運(yùn)行流暢,識別度與準(zhǔn)確度很高。
關(guān)鍵詞:多點(diǎn)觸摸屏幕;S3C6410X;I2C總線;嵌入式Linux;電容觸摸屏

引言
    隨著嵌入式設(shè)備的開發(fā)和推廣,觸摸屏作為新式輸入設(shè)備已經(jīng)隨處可見,手機(jī)、PDA、MID以及ATM機(jī)等設(shè)備都已經(jīng)用到了觸摸屏。而科技在不斷發(fā)展,觸摸屏也由一開始的4線式單點(diǎn)電阻觸摸屏發(fā)展到今天的各種多點(diǎn)式電容觸摸屏。本文通過對以Cypress 7958為代表的I2C總線接口電容式多點(diǎn)觸摸屏的研究,設(shè)計(jì)了針對Linux操作系統(tǒng)的多點(diǎn)觸摸的屏幕驅(qū)動,以及不運(yùn)行操作系統(tǒng)前提下的單片機(jī)對觸摸屏的驅(qū)動,取得了良好的效果。

1 研究平臺介紹
1.1 ARM11處理器S3C6410X
    S3C6410X是基于ARM1176JZF-S核的用于手持、移動等終端設(shè)備的通用處理器。S3C6410X是一款低功率、高性價(jià)比、高性能的用于移動電話和通用處理RSIC處理器。為2.5G和3G通信服務(wù)提供了優(yōu)化的硬件性能,采用64/32位的內(nèi)部總線架構(gòu),融合了AXI、AHB、APB總線。還有很多強(qiáng)大的硬件加速器,包括運(yùn)動視頻處理、音頻處理、2D加速、顯示處理和縮放。
1.2 電容式多點(diǎn)觸摸屏
    電容式觸摸屏在觸摸屏4邊均鍍上狹長的電極,在導(dǎo)電體內(nèi)形成一個(gè)低電壓交流電場。在觸摸屏幕時(shí),由于人體電場,手指與導(dǎo)體層間會形成一個(gè)耦合電容,4邊電極發(fā)出的電流會流向觸點(diǎn),而電流強(qiáng)度與手指到電極的距離成正比,位于觸摸屏幕后的控制器會計(jì)算電流的比例及強(qiáng)弱,準(zhǔn)確算出觸摸點(diǎn)的位置。電容觸摸屏的雙玻璃不但能保護(hù)導(dǎo)體及感應(yīng)器,更有效地防止外在環(huán)境因素對觸摸屏造成影響,就算屏幕沾有污穢、塵?;蛴蜐n,電容式觸摸屏依然能準(zhǔn)確算出觸摸位置。與電阻觸摸屏相對比,電容式觸摸屏就是支持多點(diǎn)觸摸的人機(jī)交互方式,普通電阻式觸摸屏只能進(jìn)行單一點(diǎn)的觸控。
1.3 ARM工具鏈
    本文針對ARM核的單片機(jī)使用了arm-none-linux-gnueabi-4.3.2交叉編譯鏈,實(shí)現(xiàn)對ARM支持的二進(jìn)制文件編譯,用以成功編譯ARM-Linux 2.6.28內(nèi)核。
1.4 移植條件
    對于本文所述內(nèi)容,所有支持Linux操作系統(tǒng)運(yùn)行的處理器(包括嵌入式處理器)都可以運(yùn)行,而所有支持I2C總線協(xié)議的單片機(jī)也可以在不使用操作系統(tǒng)的前提下將觸摸屏作為一種普通輸入設(shè)備進(jìn)行使用。

2 研究過程
    圖1顯示了本文中針對嵌入式Linux平臺下的驅(qū)動軟硬件結(jié)構(gòu)體系。


2.1 I2C設(shè)備在平臺部分聲明
    Cypress 7958多點(diǎn)觸摸屏的I2C地址為0x20,在使用前需要在平臺設(shè)備處進(jìn)行I2C設(shè)備聲明,這樣才可以使Linux驅(qū)動找到其對應(yīng)的I2C地址進(jìn)行操作。首先要聲明該I2C設(shè)備結(jié)構(gòu)體,代碼如下:

[!--empirenews.page--]
2.2 Cypress 7958驅(qū)動部分設(shè)計(jì)
2.2.1 注冊和注銷模塊
    首先建立I2C驅(qū)動結(jié)構(gòu)體,cypress_7958_driver,代碼如下:

2.2.2 觸摸屏驅(qū)動入口函數(shù)的設(shè)計(jì)
    由上節(jié)中聲明的I2C結(jié)構(gòu)體得知,在設(shè)備被檢查到的時(shí)候進(jìn)入static int synaptics_ts_probe(struct i2c_client *client,const struct i2c_device_id*id)函數(shù),在該函數(shù)中需要進(jìn)行觸摸屏工作模式的初始化,對作為輸入設(shè)備的觸摸屏驅(qū)動在Linux平臺下的設(shè)備名注冊,同時(shí)初始化觸摸事件觸發(fā)時(shí)引起的中斷操作。
    (1)Cypress 7958模式初始化
    作為多點(diǎn)觸摸屏幕,Cypress 7958有很多相關(guān)的配置寄存器,本文中不再贅述,初始化部分僅需對屏幕是否工作在正常工作模式下進(jìn)行檢查,通過讀取0x28地址的寄存器,如果值為0x07,則屏幕工作正常,否則返回錯(cuò)誤值。

(2)輸入設(shè)備名注冊
    創(chuàng)建struct input_dev結(jié)構(gòu)體,通過input_allocate_de-vice()函數(shù)進(jìn)行設(shè)備名的創(chuàng)建,然后通過set bit函數(shù)進(jìn)行輸入設(shè)備功能聲明。因?yàn)槭嵌帱c(diǎn)觸摸屏,可以產(chǎn)生EVSYN,EV_KEY,BTN_TOUCH,BTN_2(多點(diǎn)觸摸),EV_ABS等功能,故對之進(jìn)行聲明:

    最后通過input_register_device(ts->input_dev)函數(shù)完成對該設(shè)備名的注冊。[!--empirenews.page--]
    (3)驅(qū)動事件產(chǎn)生中斷函數(shù)初始化
    Cypress 7958觸摸屏在觸摸事件產(chǎn)生時(shí)會在IRQ引腳產(chǎn)生一個(gè)低電平信號,將該引腳連接到GPN(15)引腳上,同時(shí)創(chuàng)建GPIO中斷函數(shù):


    當(dāng)驅(qū)動事件被觸發(fā)之后通過queue_work函數(shù)進(jìn)入驅(qū)動工作區(qū)cypress_7958_wq,進(jìn)行驅(qū)動層對應(yīng)用層的信息上報(bào)。
2.2.3 觸摸屏工作區(qū)函數(shù)設(shè)計(jì)
    觸摸屏工作區(qū)函數(shù)需要完成事件信息獲取以及驅(qū)動層對應(yīng)用層的信息上報(bào)功能,通過INIT_WORK(&ts->work,cypress_7958_work_fun-e)函數(shù)完成驅(qū)動工作區(qū)函數(shù)的初始化聲明,在驅(qū)動事件中斷產(chǎn)生之后進(jìn)入工作區(qū)函數(shù)cypress_7958_work_func。
    (1)觸摸屏事件信息獲取
    Cypress 7958的事件觸發(fā)信息存儲在寄存器中,只需要通過i2c_smbus_read_byte_data函數(shù)對其寄存器信息進(jìn)行讀取即可完成其事件信息的獲取,也可以通過i2c_transfer完成對其寄存器信息的批量讀取:
[!--empirenews.page--]
    (2)觸摸屏事件信息上報(bào)
    通過對buf數(shù)組的分析,獲取當(dāng)前事件具體信息,然后通過input_report系列函數(shù)進(jìn)行事件信息的應(yīng)用層上報(bào):


2.3 Cypress 7958驅(qū)動在內(nèi)核中的移植
    通過改寫Makefile與KCONFIG完成Cypress 7985在內(nèi)核中的移植,以幫助GCC工具鏈實(shí)現(xiàn)對內(nèi)核的編譯。
2.3.1 Kconfig的修改
    在/driver/input/touchsereen/Kconfig中添加如下語句:


    以實(shí)現(xiàn)將文件編譯選項(xiàng)添加到MAKE MENUCONFIG中。由于觸摸屏驅(qū)動屬于系統(tǒng)基本輸入設(shè)備驅(qū)動,本身調(diào)用了I/O中斷,不能實(shí)現(xiàn)模塊編譯,只能完全編譯進(jìn)內(nèi)核。在后續(xù)的研發(fā)中發(fā)現(xiàn)可以使用時(shí)鐘中斷將其模塊化編譯進(jìn)內(nèi)核,但由于時(shí)鐘中斷影響UCLINUX時(shí)間片的運(yùn)行,故棄之不用。
2.3.2 Makefile的修改
    然后在/driver/input/touchscreen/Makefile中添加對應(yīng)編譯信息:

    最終在編譯選項(xiàng)中將/MAKEFILE中的ARCH選項(xiàng)設(shè)置為S3C6410,在make menuconfig命令之后的選項(xiàng)中選擇TOUCHSREEN_CYPRESS選項(xiàng)并選擇編譯進(jìn)內(nèi)核。

結(jié)語
    本設(shè)計(jì)以I2C方式對多點(diǎn)觸摸屏進(jìn)行驅(qū)動,通過嵌入式Linux將多點(diǎn)觸摸輸入方式應(yīng)用到嵌入式應(yīng)用系統(tǒng)中,豐富了單一的鍵盤輸入與單點(diǎn)輸入方式,減小了系統(tǒng)尺寸,提高了系統(tǒng)的可靠性。使得嵌入式系統(tǒng)的輸入方式簡單易行,同時(shí)也增強(qiáng)了嵌入式系統(tǒng)與人之間的通信能力,簡化了繁瑣的調(diào)試。采用三星公司的S3C6410ARM11處理器,加快了實(shí)驗(yàn)的操作步驟。實(shí)踐證明,該設(shè)計(jì)驅(qū)動多點(diǎn)觸摸屏幕的速度以及穩(wěn)定性滿足調(diào)試要求。該設(shè)計(jì)只需對底層驅(qū)動進(jìn)行簡單修改,就可直接應(yīng)用于單片機(jī)以及其他全部可以運(yùn)行Linux的嵌入式系統(tǒng)中。

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉