RK3399 focaltech敦泰触摸屏移植调试
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敦泰触摸屏移植调试相关推荐
- [RK3399][Android7.1]触摸屏TP,敦泰FT5436驱动移植
最近在RK3399上移植了敦泰的FT5436触摸屏驱动,分享出来供大家参考. 找敦泰厂家索取FT5436的驱动包,驱动包名称:focaltech_touch 没有什么需要特别注意的地方,按照驱动包里面 ...
- focaltech(敦泰)触摸屏驱动Ft5306.c学习记录
最近正在做安卓系统的驱动开发工作,学习了focaltech(敦泰)触摸屏驱动Ft5306.c,简单总结如下(未完,待续).因为刚接触驱动开发,许多知识没有彻底理解,如有错误请指正. 1 概述 linu ...
- cypress离线安装_新思、敦泰、汇顶/赛普拉斯触控ICD万能脱机烧录测试工具TP-TEST...
触摸屏脱机烧测工具TP-TESTER产品介绍TP-TESTER是深圳康协利http://www.comshare-sz.com(Comshare)针对触摸屏行业而研发的一款通用型触摸屏生产测试设备.相 ...
- selinux移植调试记录
LINUX平台selinux移植调试记录 前言 什么是selinux 主要作用 selinux的组成 工作模式 工作流程 查看当前的文件或进程的安全上下文 uboot和kernel中的配置 refpo ...
- RK3399 GT1X触摸屏驱动调试笔记
硬件环境 1.Firefly AIO-3399(AI)开发版: 2.恒智的5寸电容触摸屏800X480,I2C驱动支持GT5688. 操作系统 Android 7.2 for rockship Ste ...
- rk3399 USB转网口之AX88772A移植调试
目录 1.项目需求 2.驱动移植 3.调试结果 项目平台:RK3399 4G android:7.1.2 kernel:4.4.126 1.项目需求 因项目需求,需要在项目中开启双网口,其中原生的et ...
- RK3399驱动开发 | 07 - GT911触摸屏驱动调试及问题分析解决(基于RK SDK Linux 4.4.194内核)
更新内容 更新时间 完成初稿 2022-09-21 文章目录 一.GT911 1. 触摸芯片 2. 原理图 二.驱动调试 1. 测试gt911是否正常通信 2. 添加驱动 3. 添加设备树描述 4. ...
- RK3399驱动开发 | 06 - GT911触摸屏驱动调试及驱动浅析(Linux 5.4内核)
更新内容 更新时间 完成初稿 2022-09-21 文章目录 一.GT911 1. 触摸芯片 2. 原理图 二.驱动调试 1. 测试gt911是否正常通信 2. 添加驱动 3. 添加设备树描述 4. ...
- 上拉电阻的作用原理_电容触摸屏原理以及敦泰TP FT5X06驱动
微信公众号:morixinguan 关注可了解更多的教程.问题,请公众号留言,如有侵权,请联系删除.如果你觉得本文对你有帮助,欢迎赞赏 ▲长按图片保存可分享至朋友圈 在说驱动之前,咱们可以先来了解下通 ...
最新文章
- 产品需求管理中的四大难点
- 中国首份自动驾驶路测报告:自主车企全面落后
- 【UR #4】元旦三侠的游戏(博弈论+记忆化)
- SAP Basis 日常管理
- Linux 系统应用编程——线程基础
- 字符串查找字符出现次数_查找字符串作为子序列出现的次数
- 一段可以无限follow他人的代码
- MyBatis代码自动生成
- 计蒜客 - T1212 仙岛求药 BFS+DFS剪枝
- 网站SEO优化:遇到死链接就这样解决
- 忘记vmware虚拟机系统登入密码如何破解,破解vmware登录密码。
- 统计学理论—假设检验
- 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0
- linux查看网络流量 命令,linux查看流量命令
- OpenCASCADE 读写STEP文件
- IDEA社区版搭建Tomcat服务器并创建web项目
- Java 8中Collectors.toMap空指针异常源码分析
- 苹果安卓手机试玩赚钱app
- 百田游戏2014笔试题——找到有序序列中某个值第一次出现的位置,并打印
- 《数据结构与算法》之课程实验
热门文章
- 【Scikit-Learn 中文文档】数据集加载工具 - 用户指南 | ApacheCN
- Windows10下查看网卡MAC地址的方法
- 如何注册微信个人公众号,教程来啦!怎样注册微信个人公众订阅号
- JDBC第四篇【数据库连接池、DbUtils框架、分页】(修订版)
- C#网络TCP客户端的实现
- python 题目是idle的文件模式是什么_python的idle如何使用
- PWM脉冲宽度调制,实现呼吸灯_领航者开发板
- 【Android FFMPEG 开发】FFMPEG 音频重采样 ( 初始化音频重采样上下文 SwrContext | 计算音频延迟 | 计算输出样本个数 | 音频重采样 swr_convert )
- 我的十一Win10之旅
- torch.utils.data.WeightedRandomSampler样本不均衡情况下带权重随机采样