正点原子Linux阿尔法开发板4.3 寸多点电容触摸屏测试问题和gt9xx系列linux驱动移植

正点原子官方CSDN

https://blog.csdn.net/weixin_55796564/article/details/120470202

在这里插入图片描述

4.3 寸多点电容触摸屏测试问题

正点原子给的技术文档如上图,我按照文档上的步骤配置设备树更改驱动发现触摸没有反应,我以为是我的问题,后来发现我的显示屏驱动IC不是GT9147

在这里插入图片描述
在这里插入图片描述
那么接下来就是更改下就可以了,
在这里插入图片描述
https://blog.csdn.net/fengshuaicool/article/details/117621976

正点原子gt9xx系列linux驱动移植

https://blog.csdn.net/qq_26943851/article/details/104417858

正点原子的RGB电容触摸屏触摸芯片系列:

4.3 寸屏 480x272分辨率 使用的触摸芯片是gt9xx系列

4.3寸屏 800x480分辨率 使用的触摸芯片是gt9xx系列

7寸屏 800x480分辨率 使用的是edt-ft5x06系列

7寸屏1024x600分辨率 使用的是edt-ft5x06系列

10.1寸屏 1280x800分辨率使用的是gt9xx系列

正点原子ALPHA开发板,因为驱动开发指南里使用的触摸屏是edt-ft5x06的触摸IC。教程只介绍了移植edt-ft5x06的移植。并未介绍gt9xx系列的移植。希望作者补上。下面就介绍怎么将驱动gt9xx驱动移植到正点原子教程源码中。

1.首先我们要获取驱动文件

可以在正点原子出厂源码(正点原子提供了2套源码,一个是出厂源码,另一个是教程源码),也就是正点原子已经移植好的出厂源码中找驱动文件,路径为drivers/input/touchscreen/gt9xx.c和drivers/input/touchscreen/gt9xx.h。这两个文件。驱动已经上传到github。链接为https://github.com/dzm2018/gt9xx_driver。可以从github去下载gt9xx.c和gt9xx.h这两个文件。

2.将t9xx.c和gt9xx.h放至正点原子教程源码drivers/input/touchscreen/路径下

然后我们去编辑Kconfig文件。把驱动加到内核菜单中。

vi drivers/input/touchscreen/Kconfig

在第350行添加以下内容

config TOUCHSCREEN_GT9XX
        tristate "GT9XX I2C touchscreen"
        depends on I2C
        help
          Say Y here if you have the GT9XX touchscreen connected to your
          system.
 
          If unsure, say N.
 
          To compile this driver as a module, choose M here: the
          module will be called gt9xx.

如下图,添加完成后保存退出。
在这里插入图片描述
在Makefile里添加编译gt9xx驱动

vi drivers/input/touchscreen/Makefile

obj-$(CONFIG_TOUCHSCREEN_GT9XX)         += gt9xx.o

在这里插入图片描述

3.在内核菜单中去配置gt9xx的驱动,把它编译进内核。要显示menuconfig菜单,首先得安装一些库

sudo apt-get install libncurses5-dev

然后执行mx6ull_alientek_emmc.sh脚本,此时就会显示一个菜单配置界面如下图,找到如下路径,将gt9xx选上。“*”代表编译进内核,m代表编译成模块。选上后保存退出。然后mx6ull_alientek_emmc.sh脚本会继续编译内核。直到编译成功。得出的zImage,替换到开发板系统的zImage。(记住这里先替换内核!因为每次执行mx6ull_alientek_emmc.sh需要重新打开菜单勾选GT9xx I2C touchscreen。)

在这里插入图片描述

4.修改设备树

在arch/arm/boot/dts/imx6ull-alientek-emmc.dts设备树i2c2节点下添加gt9xx的节点。

        goodix_ts@5d {
                compatible = "goodix,gt9xx";
                reg = <0x5d>;
                status = "okay";
                interrupt-parent = <&gpio1>;
                interrupts = <9 0>;
                pinctrl-0 = <&ts_int_pin
                             &ts_reset_pin>;
                goodix,rst-gpio = <&gpio5 9  GPIO_ACTIVE_LOW>;
                goodix,irq-gpio = <&gpio1 9  GPIO_ACTIVE_LOW>;
        };

如下图位置添加gt9xx的节点。
在这里插入图片描述
此时注意,需要看看gpio1 9这个管脚有没有在其他地方利用了!果不其然,在下面这个地方复用了。我们将它注释,如下图。
在这里插入图片描述
再添加复位管脚的pimux设置在如下位置添加以下内容。

                ts_int_pin: ts_int_pin_mux {
                        fsl,pins = <
                                MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x79
                        >;
                };

如下图位置。
在这里插入图片描述

再添加中断管脚的pinmux设置在如下位置添加以下内容

                ts_reset_pin: ts_reset_pin_mux {
                        fsl,pins = <
                                MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09     0x79
                        >;
                };

在这里插入图片描述
配置完成pimux后,再检查一次,是否有管脚复用!果不其然在设备树下搜索到MX6UL_PAD_GPIO1_IO09__GPIO1_IO09这个管脚被复用了。所以我们要注释如下图位置的内容。

在这里插入图片描述
至此,设备树修改完成!重新编译设备树即可。替换到开发板的设备树。

5.测试触摸是否可用,使用如下指令查看触摸中断次数,及查看驱动是否正常加载。

cat /proc/interrupts

如下,109是触摸屏的中断次数,用手触摸屏,中断次数在不断变化,说明驱动生效。
在这里插入图片描述
可以使用hexdump来查看是否有上报坐标信息。坐标是16进制,我们读不懂,可以借助tslib工具测试触摸屏是否打印对的坐标!

请参考正点原子【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.x.pdf第64.5 章节tslib工具的使用进行测试。

 hexdump /dev/input/event1

在这里插入图片描述

i2c键盘驱动移植

https://blog.csdn.net/sddsighhz/article/details/42554131

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值