全志A33驱动GT911触摸屏
0x00 环境说明:
所使用的开发板为锐尔威视的插针版A33_Vstar
触摸屏驱动IC为GT911
接线参照开发板的TP线路
0x01 修改系统配置文件:
笔者所使用的A33开发板的系统配置文件路径问:
/root/a33_linux/dragonboard/tools/pack/chips/sun8iw5p1/configs/vstar/sys_config.fex
在配置文件中搜索 [twi0] 以及 [twi_para] 确保IIC0是开启的:
然后搜索 [ctp_para] ,修改TP配置:(注意屏幕分辨率按实际屏幕设置)
[ctp_para]
ctp_used = 1
ctp_name = "gt9xx_ts"
ctp_twi_id = 0
ctp_twi_addr = 0x5d
ctp_screen_max_x = 480
ctp_screen_max_y = 854
ctp_revert_x_flag = 0
ctp_revert_y_flag = 0
ctp_exchange_x_y_flag = 0ctp_int_port = port:PB05<0><0><default><default>
ctp_wakeup = port:PH01<1><default><default><1>
ctp_power_ldo = "axp22_eldo1"
ctp_power_ldo_vol = 3000
ctp_power_io =
0x02 修改初始化脚本:
初始化脚本路径为:
/root/a33_linux/dragonboard/buildroot/target/dragonboard/extra/autorun.sh
在文件中找到安装TP驱动的位置,将:
insmod "$tp_module_path"
修改为:
insmod /system/vendor/modules/gt9xx_ts.ko
找到 tslib config:
将其中的 ft5x_ts 修改为 gt9xx_ts :
修改完毕之后保存退出
0x03 修改驱动代码:
驱动代码路径为:
/root/a33_linux/dragonboard/linux-3.4/drivers/input/touchscreen/gt9xx/
修改 gt9xx_ts.h :
修改相关配置选项:
//***************************PART1:ON/OFF define*******************************
#define GTP_CUSTOM_CFG 1
#define GTP_DRIVER_SEND_CFG 1
#define GTP_HAVE_TOUCH_KEY 0
#define GTP_POWER_CTRL_SLEEP 0
#define GTP_AUTO_UPDATE 0
#define GTP_CHANGE_X2Y 0
#define GTP_ESD_PROTECT 0
#define GTP_CREATE_WR_NODE 0
#define GTP_ICS_SLOT_REPORT 0#define GTP_HEADER_FW_UPDATE 0
#define GTP_SLIDING_WAKEUP 0//TP的调试输出控制(调试完毕之后建议关闭)
#define GTP_DEBUG_ON 1
#define GTP_DEBUG_ARRAY_ON 1
#define GTP_DEBUG_FUNC_ON 1
修改寄存器配置:(数据一般由屏厂直接给出)
#define CTP_CFG_GROUP1 {\
0x00,0xE0,0x01,0x56,0x03,0x0A,0x05,0x00,0x01,0x08,0x28,\
0x05,0x50,0x32,0x03,0x05,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x87,0x28,0x09,0x17,0x15,0x31,\
0x0D,0x00,0x00,0x02,0x9B,0x03,0x25,0x00,0x00,0x00,0x00,\
0x00,0x03,0x64,0x32,0x00,0x00,0x00,0x0F,0x36,0x94,0xC5,\
0x02,0x07,0x00,0x00,0x04,0x9B,0x11,0x00,0x7B,0x16,0x00,\
0x64,0x1C,0x00,0x50,0x25,0x00,0x42,0x2F,0x00,0x42,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x12,0x10,0x0E,0x0C,0x0A,0x08,0x06,0x04,0x02,\
0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,\
0x24,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x00,0x02,0x04,0x06,\
0x08,0x0A,0x0C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\
0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x01}
只用CTP_CFG_GROUP1,其他组全部清空
修改分辨率设置:(按实际情况调整)
//STEP_3(optional):Custom set some config by themself,if need.
#if GTP_CUSTOM_CFG
#define GTP_MAX_WIDTH 480
#define GTP_MAX_HEIGHT 854
#define GTP_INT_TRIGGER 1 //0:Rising 1:Falling
#else
#define GTP_MAX_HEIGHT 4096
#define GTP_MAX_WIDTH 4096
#define GTP_INT_TRIGGER 1
#endif
修改 gt9xx.c :
参考《GT911编程指南》,修改初始化代码:
void gtp_io_init(int ms)
{
// ctp_wakeup(0, 0);
// msleep(ms);
//
// gtp_set_int_value(0);
// msleep(2);
//
// ctp_wakeup(1, 0);
// msleep(6);ctp_wakeup(0, 0);
gtp_set_int_value(0);
msleep(1);
ctp_wakeup(1, 0);
msleep(6);
gtp_set_int_value(0);
msleep(50);
#if GTP_ESD_PROTECT
// gtp_init_ext_watchdog(client);
#endif
}
保存修改之后重新编译系统
0x04 重新编译系统:
切换到系统源码顶层目录:
cd ~/a33_linux/dragonboard
重新编译系统:
./clean.sh
./build.sh config
cd linux-3.4/
cp a33_vstar_defconfig .config
cd ..
./build.sh
./build.sh pack
最终打包生成的系统镜像路径为:
~/a33_linux/dragonboard/tools/pack/sun8iw5p1_dragonboard_vstar.img
0x05 验证:
将打包生成的系统镜像烧录至板子,上电启动之后进入触摸屏校准:
点击屏幕,串口打印坐标数据:
全志A33驱动GT911触摸屏的更多相关文章
- 全志A33 linux led驱动编程(附实测参考代码)
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 开发平台 * 芯灵思Sinl ...
- 全志A33 lichee 开发板 Linux中断编程原理说明
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 本节实验目标实现按键触发中断 ...
- 全志A33 lichee怎样编译镜像
对于全志A33 lichee编译镜像文件需要先搭建好交叉编译环境,这个搭建环境可以看之前的文档 "SINA33开发板怎样创建编译环境" 开发平台 * 芯灵思SinlinxA33开发 ...
- 全志A33平台编译linux(分色排版)V1.1
全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/13 10:41 版本:V1.1 (一)解压缩lichee备用 ...
- 全志A33平台编译linux(分色排版)sina33
全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/12 17:36 版本:V1.0 Xshell 5 (Buil ...
- 全志A33移植LCD驱动(ILI9806E)
0x00 环境说明: 所使用的开发板为锐尔威视的插针版A33_Vstar 屏幕是买的第三方的KD050FWFPA011-C009A,其中LCD驱动IC为ILI9806E,所使用的接口为RGB666 0 ...
- Linux驱动之触摸屏程序编写
本篇博客分以下几部分讲解 1.介绍电阻式触摸屏的原理 2.介绍触摸屏驱动的框架(输入子系统) 3.介绍程序用到的结构体 4.介绍程序用到的函数 5.编写程序 6.测试程序 1.介绍电阻式触摸屏的原理 ...
- 【Linux高级驱动】触摸屏驱动的移植
触摸屏驱动的移植 流程 注意:看框架图 1.添加input.c组件 Device Drivers ---> Input device support ---> Generic inp ...
- linux驱动之触摸屏驱动程序
触摸屏归纳为输入子系统,这里主要是针对电阻屏,其使用过程如下 :当用触摸笔按下时,产生中断.在中断处理函数处理函数中启动ADC转换x,y坐标.ADC结束,产生ADC中断,在ADC中断处理函数里上报(i ...
随机推荐
- 一起学HBase——简单介绍HBase各种组件
HBase是谷歌BigTble的开源实现.谷歌的三篇论文拉开了大数据江湖的序幕,铸就了现在以Hadoop为主的大数据技术生态圈.而HBase是开源的大数据数据库,和传统的行式数据库不同的是,HBase ...
- day12.生成器;wraps初识
生成器 在 Python 中,使用了 yield 的函数被称为生成器(generator). 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器. 在 ...
- webpack4的总结
1. https://juejin.im/post/5c1fa158f265da613c09cb36
- python接口测试-认识GET请求
前边用工具也实现了接口自动化,但是后来很多的时候维护成本有点高.而且灵活上还是有所欠缺的. 于是,自己开始摸索学习敲码.应该有很多不对的地方或者可以优化的望各位大神勿喷,同时欢迎各位大神评论区发表自己 ...
- ef core的外键约束笔记
ef core设置可选外键,有如下几种方式:1.在依赖实体AAA中,并不显式设置外键属性XXXId 2.手动设置外键属性XXXId为可空类型(int?等类型) 3.在实体类与数据表进行映射时,配置狭隘 ...
- C++ 配置文件类的封装
有时开发项目,需要对数据库等配置放到程序对外面作为配置文件,配置文件对读取 ConfigManager.h /* * ConfigManager.h * * Created on: 2018年7月28 ...
- jmeter--接口自动化jmeter+ant+jenkins
的 一.介绍 接口自动化工具:jmeter+ant+jenkins 流程: -1.jmeter已录制或手动设置好脚本后 -2.配置ant,使用Ant工具,进行批量执行jmeter的脚本 -3.使用Je ...
- React(二)组件
1.组件概念: 我理解的组件的概念就是复用性,一个组件开发完成后可以重复使用. 2.简单的组件编写 (1)在src中创建一个components的文件夹,里面创建一个header.js的文件 (2)在 ...
- MySql数据and高级查询
1.CREATE TABLE grade(stuID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,stuName VARCHAR(32),stuAge INT ) ...
- vue-countTo---简单好用的一个数字滚动插件
vue-countTo是一个无依赖,轻量级的vue组件,可以自行覆盖easingFn. 你可以设置 startVal 和 endVal,它会自动判断计数或倒计时.支持vue-ssr.vue-count ...