• 正文
    • 硬件原理
    • IOMUX配置
    • 增加設(shè)備節(jié)點(diǎn)
    • 添加GT9xx驅(qū)動(dòng)
    • 編譯測(cè)試
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之電容屏觸摸

02/19 09:00
571
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

電容式觸摸屏技術(shù)是利用人體的電流感應(yīng)進(jìn)行工作的。電容式觸摸屏是一塊四層復(fù)合玻璃屏,玻璃屏的內(nèi)表面和夾層各涂有一層ITO,最外層是一薄層矽土玻璃保護(hù)層,夾層ITO涂層作為工作面,四個(gè)角上引出四個(gè)電極,內(nèi)層ITO為屏蔽層以保證良好的工作環(huán)境。 當(dāng)手指觸摸在金屬層上時(shí),由于人體電場(chǎng),用戶和觸摸屏表面形成以一個(gè)耦合電容,對(duì)于高頻電流來(lái)說(shuō),電容是直接導(dǎo)體,于是手指從接觸點(diǎn)吸走一個(gè)很小的電流。這個(gè)電流分別從觸摸屏的四角上的電極中流出,并且流經(jīng)這四個(gè)電極的電流與手指到四角的距離成正比,控制器通過(guò)對(duì)這四個(gè)電流比例的精確計(jì)算,得出觸摸點(diǎn)的位置。

這些采集和計(jì)算工作都由屏體上的電容觸摸芯片完成,i.MX6ULL通過(guò)中斷引腳、I2C接口與該芯片通信,獲取觸摸具體坐標(biāo)數(shù)據(jù)。下面來(lái)進(jìn)行電容觸摸支持的配置。

硬件原理

LCD接口上關(guān)于電容觸摸的引腳一共四個(gè):

IIC1_SDA、IIC1_SCL是I2C1的數(shù)據(jù)和時(shí)鐘引腳,用于與觸摸芯片通信,在I2C1的配置,在之前I2C章節(jié)已經(jīng)講過(guò),這里不再重復(fù)配置;TP_INT是觸摸芯片的中斷引腳,查表后知道,PAD NAME為SNVS_TAMPER1;TP_RST是觸摸芯片復(fù)位引腳,PAD NAME為SNVS_TAMPER0。

IOMUX配置

I2C1已經(jīng)配置過(guò),不再配置,只需配置TP_INT(SNVS_TAMPER1)、TP_RST(SNVS_TAMPER0),打開arch/arm/boot/dts/imx6ull-pinfunc-snvs.h文件,搜索SNVS_TAMPER1和SNVS_TAMPER0:

在arch/arm/boot/dts/imx6ull-elf1-emmc.dts設(shè)備樹文件的&iomuxc_snvs節(jié)點(diǎn)下,增加子節(jié)點(diǎn)pinctrl_tsc_ic:

pinctrl_tsc_ic: tsc_icgrp {

???????fsl,pins = <

??????????????MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00 ?0x10b0

??????????????MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01 ?0x8000000

???????>;

};

注意:在設(shè)備樹文件中,有GPIO5_IO00的其他復(fù)用,我們注釋掉:

增加設(shè)備節(jié)點(diǎn)

ElfBoard搭配的電容屏使用的是goodix的GT9XX系列觸摸芯片,增加對(duì)goodix的GT9XX系列觸摸芯片的支持,在i2c1節(jié)點(diǎn)下增加子節(jié)goodix_ts@5d:

goodix_ts@5d {

????????????????compatible = "goodix,gt9xx";

????????????????reg = <0x5d>;

????????????????pinctrl-names = "default";

????????????????pinctrl-0 = <&pinctrl_tsc_ic>;

????????????????status = "okay";

????????????????interrupt-parent = <&gpio5>;

????????????????interrupts = <1 2>;

????????????????goodix,rst-gpio = <&gpio5 0 ?GPIO_ACTIVE_LOW>;

????????????????goodix,irq-gpio = <&gpio5 1 ?GPIO_ACTIVE_LOW>;

????????????????goodix,cfg-group0 = [

????????????????????????42 D0 02 00 05 05 75 01 01 0F 24

????????????????????????0F 64 3C 03 05 00 00 00 02 00 00

????????????????????????00 16 19 1C 14 8C 0E 0E 24 00 31

????????????????????????0D 00 00 00 83 33 1D 00 41 00 00

????????????????????????00 00 00 08 0A 00 2B 1C 3C 94 D5

????????????????????????03 08 00 00 04 93 1E 00 82 23 00

????????????????????????74 29 00 69 2F 00 5F 37 00 5F 20

????????????????????????40 60 00 F0 40 30 55 50 27 00 00

????????????????????????00 00 00 00 00 00 00 00 00 00 00

????????????????????????00 00 00 00 00 00 00 14 19 00 00

????????????????????????50 50 02 04 06 08 0A 0C 0E 10 12

????????????????????????14 16 18 1A 1C 00 00 00 00 00 00

????????????????????????00 00 00 00 00 00 00 00 00 00 1D

????????????????????????1E 1F 20 21 22 24 26 28 29 2A 1C

????????????????????????18 16 14 13 12 10 0F 0C 0A 08 06

????????????????????????04 02 00 00 00 00 00 00 00 00 00

????????????????????????00 00 00 00 00 00 00 00 9C 01];

????????????????goodix,cfg-group2 = [

????????????????????????48 D0 02 00 05 05 75 01 01 0F 24

????????????????????????0F 64 3C 03 05 00 00 00 02 00 00

????????????????????????00 16 19 1C 14 8C 0E 0E 24 00 31

????????????????????????0D 00 00 00 83 33 1D 00 41 00 00

????????????????????????3C 0A 14 08 0A 00 2B 1C 3C 94 D5

????????????????????????03 08 00 00 04 93 1E 00 82 23 00

????????????????????????74 29 00 69 2F 00 5F 37 00 5F 20

????????????????????????40 60 00 F0 40 30 55 50 27 00 00

????????????????????????00 00 00 00 00 00 00 00 00 00 00

????????????????????????00 00 00 00 00 00 00 14 19 00 00

????????????????????????50 50 02 04 06 08 0A 0C 0E 10 12

????????????????????????14 16 18 1A 1C 00 00 00 00 00 00

????????????????????????00 00 00 00 00 00 00 00 00 00 1D

????????????????????????1E 1F 20 21 22 24 26 28 29 2A 1C

????????????????????????18 16 14 13 12 10 0F 0C 0A 08 06

????????????????????????04 02 00 00 00 00 00 00 00 00 00

????????????????????????00 00 00 00 00 00 00 00 3C 01];

????????};

添加后效果如下:

其中reg=<0x5d>是該芯片的i2c地址;

interrupt-parent = <&gpio5>表示使用中斷控制器為GPIO5;

interrupts = <1 2>屬性中的“1“表示使用中斷控制器的第1個(gè)引腳,“2”表示使用的中斷觸發(fā)方式為下降沿觸發(fā)。

goodix,rst-gpio = <&gpio5 0 ?GPIO_ACTIVE_LOW>;

goodix,irq-gpio = <&gpio5 1 ?GPIO_ACTIVE_LOW>;

分別表示復(fù)位和中斷連接的具體引腳。

goodix,cfg-group0和goodix,cfg-group1,表示芯片的配置數(shù)據(jù),芯片初始化的時(shí)候或者出現(xiàn)異常時(shí)需要重新對(duì)其寄存器進(jìn)行配置。

添加GT9xx驅(qū)動(dòng)

一、將ELF 1開發(fā)板資料包