人工智能
直播中

刘悦竹

7年用户 195经验值
私信 关注
[问答]

RK3288汇顶GT触摸屏移植调试

修改触摸屏分辨率
确认触摸屏Sensor-ID的方式

回帖(4)

贺服窍

2020-12-30 11:33:08
在 menuconfig 或者 rockchip_defconfig 中支持触摸屏。具体用哪种方式需要结合编译方法。
按照瑞芯微提供的编译方式,则修改 rockchip_defconfig,这种方式在make前,需要执行make rockchip_defconfig,生成 .config 文件。
path:kernel/arch/arm/configs/rockchip_defconfig
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_GT9XX=y
只执行make的话,就要在make menuconfig中修改,保存后生成 .config 文件。
DeviceDrivers  --->
    Input device support  --->
        

  •   Touchscreens  --->
                <*>   Goodix touch screen gt9xx support for rockchip based platform
举报

王帅

2020-12-30 11:33:17
修改触摸屏分辨率。
path:kernel/drivers/input/touchscreen/gt9xx/gt9xx.h
// 下面有两种定义分辨率的方式,任选一种
#define GTP_CUSTOM_CFG        1   
        ... ...
#define GTP_1024X768
        ... ...
#if GTP_CUSTOM_CFG
    #ifdef GTP_1024X768
          #define GTP_MAX_HEIGHT      768
          #define GTP_MAX_WIDTH     1024
    #else
         #define GTP_MAX_HEIGHT      320
          #define GTP_MAX_WIDTH     480
    #endif
  // 触摸屏中断触发信号
  #define GTP_INT_TRIGGER      0         // 0: Rising 1:Falling
#else
  #defineGTP_MAX_HEIGHT   4096
  #defineGTP_MAX_WIDTH    4096
  #defineGTP_INT_TRIGGER  1
#endif      
举报

李渝辉

2020-12-30 11:33:29
确认触摸屏Sensor-ID,有下面两种方式
(1)根据硬件配置,需要咨询供应商。
//***************************PART2:TODO define **********************************
//STEP_1(REQUIRED): Define Configuration Information Group(s)
// Sensor_ID Map:
/* sensor_opt1sensor_opt2 Sensor_ID
    GND        GND          0
    VDDIO      GND          1
    NC         GND          2
    GND        NC/300K      3
    VDDIO      NC/300K      4
    NC         NC/300K      5
*/
(2)内核运行时的log可以看出来
// 获取 sensor_id
ret =gtp_i2c_read_dbl_check(ts->client, GTP_REG_SENSOR_ID, &sensor_id, 1);
if (SUCCESS == ret)    // 获取 sensor_id 成功
{
    // sensor_id 超出范围
    if (sensor_id >= 0x06)
    {
        GTP_ERROR("Invalid sensor_id(0x%02X), No ConfigSent!", sensor_id);
        ts->pnl_init_error = 1;
        return -1;
    }
}
else    // 获取 sensor_id 失败
{
    GTP_ERROR("FAIled to get sensor_id, No configsent!");
    ts->pnl_init_error = 1;
    return -1;
}
// 成功后打印 sensor_id
GTP_INFO("Sensor_ID: %d", sensor_id);
举报

谭艳红

2020-12-30 11:33:45
在dts文件中,修改触摸屏的硬件参数。
// i2c接口
&i2c4 {
    // 使能
    status = "okay";
    // 设备地址(记得除二)
    ts@5d{
        compatible = "goodix,gt9xx";
        reg = <0x5d>;
        // 复位IO
        goodix,rst-gpio = <&gpio7GPIO_B2 GPIO_ACTIVE_HIGH>;
        // 中断IO
        goodix,irq-gpio = <&gpio7GPIO_B1 IRQ_TYPE_LEVEL_LOW>;
        pinctrl-names = "default";
        // 中断IO默认上拉
        pinctrl-0 = <&gpio7_b1>;
        // 触摸屏配置参数,需要供应商提供,group0-group5,根据Sensor-ID决定,若ID=4,则使用goodix,cfg-group4
        goodix,cfg-group0 = [
            63 40 01 E0 01 05 35 00 01 08 28 05 50 32 03 05 00 00 00 00
            00 00 00 14 16 18 10 8C 20 08 17 15 31 0D 00 00 02 9A 04 24
            00 00 00 00 00 03 64 32 00 00 00 0F 94 94 45 02 07 00 00 04
            8D 13 00 5C 1E 00 3C 30 00 28 4C 00 1D 78 00 1D 00 00 00 00
            00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            00 00 00 00 00 00 00 00 00 00 00 00 02 04 06 08 0A 0C 0E 10
            FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            00 00 00 02 04 06 08 0A 0C 0F 10 12 13 14 FF FF FF FF FF FF
            FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00
            00 00 00 00 C9 01];
        };
};

此时已配置完毕

若出现触摸方向x、y反了,可以联系供应商改配置文件,也可以在头文件中打开交换x、y坐标的宏
宏生效后,会在触摸按下的函数 gtp_touch_down 中,交换x、y坐标
#define GTP_CHANGE_X2Y        1      //swap x y
#if GTP_CHANGE_X2Y
    GTP_SWAP(x, y);
#endif
若出现触摸方向x、y镜像了,可以联系供应商改配置文件,也可以在触摸按下的函数 gtp_touch_down 中,修改x、y坐标
// abs_x_maxabs_y_max 分别是x y方向的最大值
// x 方向镜像
x =ts->abs_x_max - x;
// y 方向镜像
y =ts->abs_y_max - y;
若出现触摸不准,,触摸跳点等问题,则需要联系供应商查看硬件或者修改配置参数。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分