CPU:RK3399

系统:Android 7.1

IC:FT5406

focaltech(敦泰)触摸屏也是比较常用的,但是相对汇顶,就比较少用

RK的源码中虽然有 focaltech 的代码,但没有调试过,一般都会用供应商提供的代码

供应商会提供一个名为 focaltech_touch 的文件夹,里面包括触屏所有代码

我们要做的就是将代码移植到 kernel 中,编译烧录

1、将文件加拷贝到 kernel/drivers/input/touchscreen/ 目录下

2、修改 touchscreen 目录下的 Kconfig 文件,在最后一行的 endif 前加一行

source "drivers/input/touchscreen/focaltech/Kconfig"

3、修改 touchscreen 目录下的 Makefile 文件,在最后一行添加

obj-$(CONFIG_TOUCHSCREEN_FTS)        += focaltech_touch/

4、修改 rockchip_defconfig 文件,将代码加入编译,相当于修改 .config 文件

CONFIG_TOUCHSCREEN_FTS=y

5、在 dts 中添加设备,需要找到对应的 i2c

&i2c4 {status = "okay";i2c-scl-rising-time-ns = <150>;i2c-scl-falling-time-ns = <30>;clock-frequency = <400000>;focaltech: focaltech@38 {compatible = "focaltech,fts";reg = <0x38>;focaltech,reset-gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;focaltech,irq-gpio = <&gpio1 6 IRQ_TYPE_LEVEL_LOW>;focaltech,max-touch-number = <5>;focaltech,display-coords =  <0 0 800 1280>;tp-supply = <&vcc3v0_tp>;focaltech,have-key;focaltech,key-number = <3>;    focaltech,keys = <139 102 158>;     focaltech,key-y-coord = <1200>; focaltech,key-x-coords = <200 400 600>;};
};

FT5406设备地址:0x70,dts 中需要右移一位,等于除以2,实际为 0x38

focaltech,reset-gpio:复位引脚

focaltech,irq-gpio:中断引脚

focaltech,max-touch-numbe:IC 支持的最大触摸点数

文件 focaltech_core.h 中的宏 FTS_MAX_POINTS_SUPPORT 与此值保持一致,FTS_MAX_POINTS_SUPPORT 过大,虽然使用中不影响,但是测试多点触控会显示无效的触控点

display-coords:设置触摸屏的分辨率

focaltech,have-key:是否有触摸按键,有的话需要定义此行,无触摸按键屏蔽

focaltech,key-number:触摸按键个数

focaltech,keys:每个按键对应的按键值

focaltech,key-y-coord:触摸按键的 y 坐标

focaltech,key-x-coords:触摸按键的 x 坐标

此时就移植完毕,下面是调试过程中遇到的问题

1、读取的 chip id 匹配失败

[FTP]TP not ready, read:0x55aa

需要在 focaltech_common.h 的 FTS_CHIP_TYPE_MAPPING 中添加,具体需要咨询供应商

#define FTS_CHIP_TYPE_MAPPING { \{0x01, 0x58, 0x22, 0x58, 0x22, 0x00, 0x00, 0x58, 0x2C}, \{0x02, 0x55, 0xAA, 0x55, 0xAA, 0x00, 0x00, 0x79, 0x03}, \
}

添加后还是同样的问题,id 的高位匹配成功,低位匹配失败,

[FTP]TP not ready, read:0x55ff

原因是代码太旧,要么更新代码,要么删除低位匹配

供应商建议取消低位匹配,并将 focaltech_config.h 中 FTS_AUTO_UPGRADE_EN 设置为 0

if (VALID == fw_valid) {
  if (id_h == ctype[i].chip_idh)break;
} else {
  if ((id_h == ctype[i].rom_idh)|| (id_h == ctype[i].pb_idh)|| ((id_h == ctype[i].bl_idh) && (id_l == ctype[i].bl_idl)))break;
}

2、开机后触摸屏可以正常使用,但是休眠唤醒后,触摸无效

检查 reset 脚配置正确,并且 reset 脚没有开路

将 focaltech_config.h 文件中 FTS_POWER_SOURCE_CUST_EN 设置为 0,测试还是不行

将 suspend 函数中设置 ic 休眠寄存器的部分屏蔽掉,唤醒后触摸正常,此时确认唤醒时复位失败

ret = fts_i2c_write_reg(ts_data->client, FTS_REG_POWER_MODE, FTS_REG_POWER_MODE_SLEEP_VALUE);if (ret < 0)FTS_ERROR("set TP to sleep mode fail, ret=%d", ret);

用示波器测试唤醒时 reset 引脚,发现休眠和唤醒一直是高电平

查看代码,发现 resume 函数中复位函数被屏蔽了,取消屏蔽就正常了

fts_reset_proc(200);

转载于:https://www.cnblogs.com/lialong1st/p/11239780.html

RK3399 focaltech敦泰触摸屏移植调试相关推荐

  1. [RK3399][Android7.1]触摸屏TP,敦泰FT5436驱动移植

    最近在RK3399上移植了敦泰的FT5436触摸屏驱动,分享出来供大家参考. 找敦泰厂家索取FT5436的驱动包,驱动包名称:focaltech_touch 没有什么需要特别注意的地方,按照驱动包里面 ...

  2. focaltech(敦泰)触摸屏驱动Ft5306.c学习记录

    最近正在做安卓系统的驱动开发工作,学习了focaltech(敦泰)触摸屏驱动Ft5306.c,简单总结如下(未完,待续).因为刚接触驱动开发,许多知识没有彻底理解,如有错误请指正. 1 概述 linu ...

  3. cypress离线安装_新思、敦泰、汇顶/赛普拉斯触控ICD万能脱机烧录测试工具TP-TEST...

    触摸屏脱机烧测工具TP-TESTER产品介绍TP-TESTER是深圳康协利http://www.comshare-sz.com(Comshare)针对触摸屏行业而研发的一款通用型触摸屏生产测试设备.相 ...

  4. selinux移植调试记录

    LINUX平台selinux移植调试记录 前言 什么是selinux 主要作用 selinux的组成 工作模式 工作流程 查看当前的文件或进程的安全上下文 uboot和kernel中的配置 refpo ...

  5. RK3399 GT1X触摸屏驱动调试笔记

    硬件环境 1.Firefly AIO-3399(AI)开发版: 2.恒智的5寸电容触摸屏800X480,I2C驱动支持GT5688. 操作系统 Android 7.2 for rockship Ste ...

  6. rk3399 USB转网口之AX88772A移植调试

    目录 1.项目需求 2.驱动移植 3.调试结果 项目平台:RK3399 4G android:7.1.2 kernel:4.4.126 1.项目需求 因项目需求,需要在项目中开启双网口,其中原生的et ...

  7. RK3399驱动开发 | 07 - GT911触摸屏驱动调试及问题分析解决(基于RK SDK Linux 4.4.194内核)

    更新内容 更新时间 完成初稿 2022-09-21 文章目录 一.GT911 1. 触摸芯片 2. 原理图 二.驱动调试 1. 测试gt911是否正常通信 2. 添加驱动 3. 添加设备树描述 4. ...

  8. RK3399驱动开发 | 06 - GT911触摸屏驱动调试及驱动浅析(Linux 5.4内核)

    更新内容 更新时间 完成初稿 2022-09-21 文章目录 一.GT911 1. 触摸芯片 2. 原理图 二.驱动调试 1. 测试gt911是否正常通信 2. 添加驱动 3. 添加设备树描述 4. ...

  9. 上拉电阻的作用原理_电容触摸屏原理以及敦泰TP FT5X06驱动

    微信公众号:morixinguan 关注可了解更多的教程.问题,请公众号留言,如有侵权,请联系删除.如果你觉得本文对你有帮助,欢迎赞赏 ▲长按图片保存可分享至朋友圈 在说驱动之前,咱们可以先来了解下通 ...

最新文章

  1. 产品需求管理中的四大难点
  2. 中国首份自动驾驶路测报告:自主车企全面落后
  3. 【UR #4】元旦三侠的游戏(博弈论+记忆化)
  4. SAP Basis 日常管理
  5. Linux 系统应用编程——线程基础
  6. 字符串查找字符出现次数_查找字符串作为子序列出现的次数
  7. 一段可以无限follow他人的代码
  8. MyBatis代码自动生成
  9. 计蒜客 - T1212 仙岛求药 BFS+DFS剪枝
  10. 网站SEO优化:遇到死链接就这样解决
  11. 忘记vmware虚拟机系统登入密码如何破解,破解vmware登录密码。
  12. 统计学理论—假设检验
  13. 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0
  14. linux查看网络流量 命令,linux查看流量命令
  15. OpenCASCADE 读写STEP文件
  16. IDEA社区版搭建Tomcat服务器并创建web项目
  17. Java 8中Collectors.toMap空指针异常源码分析
  18. 苹果安卓手机试玩赚钱app
  19. 百田游戏2014笔试题——找到有序序列中某个值第一次出现的位置,并打印
  20. 《数据结构与算法》之课程实验

热门文章

  1. 【Scikit-Learn 中文文档】数据集加载工具 - 用户指南 | ApacheCN
  2. Windows10下查看网卡MAC地址的方法
  3. 如何注册微信个人公众号,教程来啦!怎样注册微信个人公众订阅号
  4. JDBC第四篇【数据库连接池、DbUtils框架、分页】(修订版)
  5. C#网络TCP客户端的实现
  6. python 题目是idle的文件模式是什么_python的idle如何使用
  7. PWM脉冲宽度调制,实现呼吸灯_领航者开发板
  8. 【Android FFMPEG 开发】FFMPEG 音频重采样 ( 初始化音频重采样上下文 SwrContext | 计算音频延迟 | 计算输出样本个数 | 音频重采样 swr_convert )
  9. 我的十一Win10之旅
  10. torch.utils.data.WeightedRandomSampler样本不均衡情况下带权重随机采样