• A40i使用笔记:调用系统自带驱动GT911触摸屏


    一、前言

            在一般情况下使用电容触摸屏时,都是使用USB直接驱动,但是在前文中我就提及过遇到的问题,就是USB触摸屏和我是用平台不是特别兼容的问题,问题现象在复述一遍,大概就是使用linux核心板USB接口连接ILTTEK的触摸芯片是没有问题的,而使用GOODIX的GT911触摸芯片配合IIC转USB免驱板时,会出现多指触摸然后触摸屏失灵现象,需要重新插拔以下触摸屏USB,或者重启程序,这两种都是无法忍受的,经过很长时间的调试,身为对于系统底层还是小白的我实在是无力解决这个不兼容问题,后来就全力研究如何使用直接驱动的方式,跳过USB免驱板,直接使用系统资源IIC总线信号和RST以及INT引脚,去调用GT911芯片驱动,控制触摸屏。而经过好几天下班时间的研究和与售后耐心的邮件互传下,终于不负我!

    二、环境

    全志A40i(飞凌A40i核心板)

    linux3.10

    2401源码包

    三、正文

    首先附上我更改的文件资源https://download.csdn.net/download/qq_37603131/86797324

    1.硬件修改部分

    使用核心板的TWI1接口,在找两个引脚配置RST和INT,配置sys_configFCU2401.fex文件,文件内核心修改的地方如下:

    1. [twi1]
    2. twi1_used = 1
    3. twi1_scl = port:PB18<2><default><default><default>
    4. twi1_sda = port:PB19<2><default><default><default>
    1. ;----------------------------------------------------------------------------------
    2. ;capacitor tp configuration电容触摸
    3. ;external int function
    4. ;wakeup output function
    5. ;notice --- tp_int_port & tp_io_port use the same port
    6. ;compatible 设备名字
    7. ;ctp_used 是否使用
    8. ;ctp_name 用作区别gd系列,适配屏幕分辨率
    9. ;ctp_twi_id 用作选择iic的adapter,可选12
    10. ;ctp_twi_addr 指明iic设备地址,与硬件相关
    11. ;ctp_screen_max_x 触摸板x最大坐标
    12. ;ctp_screen_max_y 触摸板y最大坐标
    13. ;ctp_touch_panel_max_x
    14. ;ctp_touch_panel_max_y
    15. ;ctp_revert_x_flag是否需要反转x坐标,需要置1,反之置0
    16. ;ctp_revert_y_flag是否需要反转y坐标,需要置1,反之置0
    17. ;ctp_exchange_x_y_flag是否需要xy坐标对换
    18. ;ctp_power_ldo 触摸屏电源配置
    19. ;ctp_power_ldo_vol触摸屏电压配置
    20. ;ctp_int_port 电容屏中断信号GPIO配置
    21. ;ctp_wakeup 电容屏唤醒信号GPIO配置
    22. ;----------------------------------------------------------------------------------
    23. [ctp]
    24. compatible = "allwinner,sun50i-ctp-para"
    25. ctp_used = 1
    26. ctp_name = "gt9xx_ts"
    27. ctp_twi_id = 1
    28. ctp_twi_addr = 0x14
    29. ctp_screen_max_x = 800
    30. ctp_screen_max_y = 480
    31. ctp_touch_panel_max_x = 800
    32. ctp_touch_panel_max_y = 480
    33. ctp_revert_x_flag = 0
    34. ctp_revert_y_flag = 0
    35. ctp_exchange_x_y_flag = 0
    36. ctp_power_ldo = "vcc-ctp"
    37. ctp_power_ldo_vol = 3300
    38. ctp_int_port = port:PH02<6><default><default><default>
    39. ctp_wakeup = port:PH05<1><default><default><0>
    40. ;----------------------------------------------------------------------------------
    41. ;compatible配置名称
    42. ;ctp_list_used 支持触摸屏list
    43. ;ft5x_ts 是否支持ft5x_ts模组
    44. ;gt82x 同上
    45. ;gt9xx_ts 同上
    46. ;gt9xxnew_ts 同上
    47. ;gt811 同上
    48. ;zet622x 同上
    49. ;aw5306_ts 同上
    50. ;----------------------------------------------------------------------------------
    51. [ctp_list]
    52. compatible = "allwinner,sun50i-ctp-list"
    53. ctp_list_used = 1
    54. ft5x_ts = 1
    55. gt82x = 1
    56. gt9xx_ts = 1
    57. gt9xxnew_ts = 1
    58. gt811 = 1
    59. zet622x = 1
    60. aw5306_ts = 1

            需要注意引脚配置模式,还有TWI的id要对应,我之前就是默认的TWI3,id默认是3,更换TWI1一直没修改ID,后来有糊涂把TWI引脚的模式修改了,这里就是配置资源部分,不得不说,飞凌独立开发的这个config文件针对于不需要深入学习和专业搞linux的人上手还挺快的,无需特别深入的学习设备树,大部分功能只需要修改这个配置文件,就可以了,目前我使用这个配置文件修改了诸多接口,比如SATA,CAN,485,232,双网口,电阻触摸,电容触摸,LVDS,LCD,双LVDS1080P,GPIO等等。

    接下来还需要修改的就是系统配置部分,sun8iw11p1smp_oka40i_c_defconfig这个文件,需要将文件内的链接到GT911驱动的部分打开,GT911源码在系统自带的驱动文件中,一层一层查看Makefile文件,并将对应的宏全部在系统配置文件中选择,其中可以设置m和y,m的含义就是编译出ko文件,加载驱动需要手动加载,y的含义就是不编译ko文件,集成在系统驱动中自动加载,一遍调试驱动时需要发现哪里有问题, 选择m编译,当确定之后使用y自动加载即可,也不用在学一段程序调用驱动,直接开机默认执行驱动。 

            这里我将系统配置文件的宏CONFIG_TOUCHSCREEN_GT9XXNEW_TS=y打开,在执行build.sh时就会带着GT911驱动一起编译了。

            之后编译系统镜像包,更新镜像文件到板卡中即可,目前唯一美中不足的就是触摸屏识别成为了鼠标,在点击屏幕时会出现鼠标指针,后续继续研究如何识别为触摸屏,将鼠标指针去掉,插上真正的鼠标之后才会出现鼠标。


    凌晨翻来覆去睡不着,看了一下邮箱,飞凌技术发给一个在qt去除鼠标指针的方法,看了一下方法,有了一些灵感,可能不通过qt去除,而是在环境变量删除一些东西也可以,于是乎就开始了起床测试之路。

    修改如下:

    删除资源中qt5.9.sh环境变量中 evdevmouse部分,于是乎触摸就正常了,不在显示鼠标指针。但是这时候接入有线鼠标大概率是不能用的,于是乎这个环境变量又得特殊标记一下了,仅用于gt911触摸屏使用不持支有限鼠标,实际我并灭有接入鼠标测试,因为家里没有有线鼠标,呜呜呜~

    四、结语

    坚持,就是胜利!怀揣梦想,树立目标,才不会停止前进的步伐。

  • 相关阅读:
    LeetCode75——Day16
    CSS概述 | CSS的引入方式 | 选择器
    sdk文档书写,如何写具有可读性和可信度的文档
    Webpack 基础以及常用插件使用方法
    又一恶意软件:1000多名受害者均在韩国,不排除其他地区被攻击的可能
    二叉树详解(求二叉树的结点个数、深度、第k层的个数、遍历等)
    谷歌实用插件分享
    数字秒表verilog电子秒表跑表,代码/视频
    opencv 提取选中区域内指定hsv颜色的水印
    DNS部署与安全
  • 原文地址:https://blog.csdn.net/qq_37603131/article/details/127454157