1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
调试步骤
1、打开gt9xx的驱动:将 gt9xx 文件夹添加到编译中,修改 rockchip_defconfig 文件,或者在 kernel 中执行 make menuconfig 指令都可以 CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_GT9XX=y 2、1)查找原理图,查看其int rst管脚且看设备是在哪个i2c下 2)设备树里添加gt9xx节点 配置i2c通信地址、compatible属性值、中断管脚、复位管脚 /*添加触摸屏配置*/ &i2c3{ status = "okay"; //汇顶电容触摸屏 gt9xx: gt9xx@5d { compatible = "goodix,gt9xx"; reg = <0x5d>; touch-gpio = <&gpio1 21 IRQ_TYPE_EDGE_RISING>;//gpio1_c5 reset-gpio = <&gpio1 20 GPIO_ACTIVE_HIGH>;//gpio1_c4 max-x = <800>; max-y = <1280>; tp-size = <911>; status = "okay"; }; }; 系统初始化时会初始化总线上的设备,会根据设备节点compatible属性和驱动中of_match_table对应的值,匹配了就加载对应的驱动. reg = <0x5d>;为GT9XX的i2c通信地址。 gt9xx i2c地址是linux代码显示的,和手册上的实际地址不一样,linux代码里面的是实际的除以2(因为最后一位是读写位),goodix的地址有两,分别是0x28,和0xba, 但是linux的地址就是14 和 5d。 波形如下时, 则设定地址:0x14(7bit),0x28/0x29(8bit) 波形如下时, 则设定地址:0x5D(7bit),0xBA/0xBB(8bit) "tp-size” 这个参数表面看是 tp 的尺寸,实际在代码中通过这个参数来选择配置信息和触摸调整 3.在源码中根据 tp-size 设置 tp 方向是否需要镜像、切换,还有需要使用的配置参数 如果 bgt927 设置为 TRUE,其他的 bgtxxx 都要设置 FALSE 开始调试时,下面三个参数都设置为 FALSE,然后根据 bgt927 选择配置参数,编译烧录后根据实际现象再调整下面三个参数 gtp_change-x2y:x、y交换方向 gtp_x_reverse:x 方向坐标镜像 gtp_y_reverse:y 方向左边镜像 源码驱动文件gt9xx.c if (val == 89) { m89or101 = TRUE; gtp_change_x2y = TRUE; gtp_x_reverse = FALSE; gtp_y_reverse = TRUE; } else if (val == 101) { m89or101 = FALSE; gtp_change_x2y = TRUE; gtp_x_reverse = TRUE; gtp_y_reverse = FALSE; } else if (val == 911) { m89or101 = FALSE; bgt911 = TRUE; gtp_change_x2y = TRUE; gtp_x_reverse = FALSE; gtp_y_reverse = TRUE; } else if (val == 970) { m89or101 = FALSE; bgt911 = FALSE; bgt970 = TRUE; gtp_change_x2y = FALSE; gtp_x_reverse = FALSE; gtp_y_reverse = TRUE; } else if (val == 910) { m89or101 = FALSE; bgt911 = FALSE; bgt970 = FALSE; bgt910 = TRUE; gtp_change_x2y = TRUE; gtp_x_reverse = FALSE; gtp_y_reverse = TRUE; } val是读取设备树里的tp-size来获取的:用于调节触摸xy轴 调试所遇到的问题 1.触摸屏出现触摸不灵敏,向上拉但画面却是向下拉 解决:x,y坐标镜像反了,修改tp-size即可 2.两台设备,一台设备触摸屏正常,一台设备触摸屏不能用,不能用的一台具体如下: RST脚 复位2次,代码上只下拉一次;下拉的第二次:时间10.5ms;屏蔽掉dts里的rst则无下拉; 在gt9xx.c里将复位脚的下拉去掉后 则只有一次下拉 ,10.5ms。 原因: 调试GT9XX时,发现驱动把IC分为两种chip type. typedef enum { CHIP_TYPE_GT9 = 0, CHIP_TYPE_GT9F = 1, } CHIP_TYPE_T; 当读取到IC是CHIP_TYPE_GT9F类型时,才会去做如下init -> download工作. #if GTP_COMPATIBLE_MODE gtp_get_chip_type(ts); if (CHIP_TYPE_GT9F == ts->chip_type) { ret = gtp_gt9xxf_init(ts->client); if (FAIL == ret) { GTP_INFO("Failed to init GT9XXF."); } } #endif 这两IC类型的区别在于: CHIP_TYPE_GT9F: 内部是Nor Flash,必须每次都要download. CHIP_TYPE_GT9: 内部是Nand Flash,除非需要更新配置文件,否则不需要每次下载. 解决:修改I2C通信的地址,我们的设备的RESET与int信号如下:粉为Reset,黄为INT,Reset上升沿时,INT为低则地址要设为0X5D,设备即正常 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
498 浏览 0 评论
768 浏览 1 评论
667 浏览 1 评论
1893 浏览 1 评论
3138 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 19:37 , Processed in 0.640156 second(s), Total 70, Slave 54 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号