Linux的GT911触摸驱动调试

全程调试记录,基本上就几种情况

公司买不到对应的7寸MIPI的屏是带有 FT56xx 这个触摸芯片的,查看对应的手册发现是GT911

1、接上屏幕上电,发现不能触摸,OK,看看打印信息咯

然后复制,查看到对应的驱动信息,可以进去看看,比较简单

原因:I2C读取不到对应的芯片信息,换个地址试试,有两个 0x5D或者0x14,结果都一样,不行。

解决方法:发现是虚焊了,后面可以读取到了

提个醒:GT911需要通过RST和INT这两个引脚进行选择I2C地址,但是我这边设计原理图的是按照FT56xx进行设计的,把没有把RST引脚搞出来,就是下面这样

那这样子地址是多少呢?我这里是0X5D,后面我又把4和5引脚焊上都接上拉,就变成了0X14。

看手册时序似乎是这样,因为我下面还有个电容给充电,刚好符合一些时序。

2、接上一个,I2C可以读取到了,input虚拟出来了,但是还是不能触摸

以前写过GT911 裸机 跟 Linux驱动,对于这种问题,其实一眼就可以看出,就是没有上报数据嘛,OK那就开始测试是不是这样

(1)第一步(寻找问题),先把对应得input/eventx测试看看有没有数据上报,不知道是哪个,一个一个测,hexdump之后,触摸屏幕,发现都没有,OK,那就是没上报数据

(2)第二步(固定地址),了解这个触摸的芯片的都知道,它是通过中断进行控制的,然后去看GT911的Linux源码发现几个问题

1、如果设备树有这两个引脚,就会进行对应得GT911的引脚时序初始化,设置地址,最后中断引脚设置为输入模式。

2、如果设备树没有其中一个引脚,中断引脚也不会设置为输入模式。

因为设计的问题,我没有RST,所以我不要你再次时序初始化打乱我的I2C地址,所以注释掉设备树这行,然后修改驱动源码,设置为输入模式

经过这样子,那么I2C地址固定好了。

(3)第三步(寻找触发方式),这一步比较重要,没写过这个驱动的挺难发现这个问题的

结合上文,现在我的的条件是:1、没有RST复位引脚引出 2、我焊接的时候把4和5(int中断和RST复位都接在一起,上拉高电平)

看(2)设备树有个问题,他怎么把触发方式固定写成了下降沿触发,这是个问题。

修改源码,查看自己GT911触摸芯片的触发方式

编译打印出来是:上升沿触发

那就简单了,首先我硬件上接了上拉,那就一直高电平,现在你又是上升沿触发,那根本就触发不了中断,就上报不了,继续修改内核源码,改为上升沿,然后硬件Int中断就修改,不接上拉

编译,烧进去,OK,可以触摸了

3、总结

其实时间最久的还是这个虚焊,谁也没想到,最后拿示波器看I2C波形没看到,才发现的这个问题,用了一天,I2C地址改来改去都是失败读取。

软件方面的,一个上午就解决了,比较轻松,需要一定的了解,还是建议基础功要打好

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值