OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4250|回复: 1

im6ull 关于4.3-800x480电容屏驱动的一点疑问

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2020-4-19
在线时间
4 小时
发表于 2020-11-20 10:01:59 | 显示全部楼层 |阅读模式
在我将正点原子提供的gt9147.c编译进内核并运行ts_test_mt测试后,发现触摸屏上显示的位置与我手指触碰的位置正好成斜对称。
检查该驱动文件后,经过一系列调试,最终完美运行的方法是调整gt9147_irq_handler中的部分代码为

        if(id == 0) {
            input_y  = touch_data[1] | (touch_data[2] << 8);
            input_x  = touch_data[3] | (touch_data[4] << 8);

            input_mt_slot(dev->input, id);
                    input_mt_report_slot_state(dev->input, MT_TOOL_FINGER, true);
                    input_report_abs(dev->input, ABS_MT_POSITION_X, 480-input_x);
                    input_report_abs(dev->input, ABS_MT_POSITION_Y, 800-input_y);
        }


在上方代码中,修改了inpu_x、input_y所读取的寄存器,上传时将其进行了反转。
随后触摸屏可正常运行。

在该驱动中发现如下代码:

        input_set_abs_params(gt9147.input, ABS_X, 0, 480, 0, 0);
        input_set_abs_params(gt9147.input, ABS_Y, 0, 272, 0, 0);
        input_set_abs_params(gt9147.input, ABS_MT_POSITION_X,0, 480, 0, 0);
        input_set_abs_params(gt9147.input, ABS_MT_POSITION_Y,0, 272, 0, 0);          

因此我怀疑该驱动适用于480x270的屏幕,且该屏幕与800x480屏幕的方向不同,在配置时应当作出修改。因此正点原子提供的驱动不能匹配800x480屏幕,在匹配时应该修改某一寄存器。
如果是这样,希望官方在驱动开发指南中进行说明,以便更多人学习时不在此受阻。

ps:
如果直接在drivers/input/touchscreen 目录下的 Makefile中添加obj-y += gt9147.o 。那么编译出来的zimage可能无法正常初始化,我的方法是注释掉配置文件中的其它两个触摸屏驱动,使其变成
# CONFIG_TOUCHSCREEN_EDT_FT5X06=y
# CONFIG_TOUCHSCREEN_GT9XX=y       

然后zimage就可以正常运行了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

187

帖子

0

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
558
金钱
558
注册时间
2019-5-22
在线时间
267 小时
发表于 2020-11-20 19:42:35 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 19:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表