7.9.2. 参数配置¶
7.9.2.1. 内核配置¶
在luban根目录下执行 make kernel-menuconfig,进入kernel的功能配置,按如下选择:
Linux
    Device Drivers
        Input device support
            [*] Touchscreens
                <*> Artinchip resistive touchscreen controller support
Linux
    Device Drivers
        Input device support
            <*> Event interface
注解
用户态需要获取Input事件,对此,内核需配置event接口,即Event interface需进行打开。
7.9.2.2. DTS参数配置¶
7.9.2.2.1. RTP自定义参数¶
RTP驱动支持从DTS中配置的完整参数,如下表:
| 参数名称 | 类型 | 取值范围 | 功能说明 | 
|---|---|---|---|
| aic,max-pressure | 正整数 | [1, 4095] | 最大压感值,超过此值的坐标事件会被忽略 | 
| aic,x-plate | 正整数 | > 0 | 需要实测屏幕X方向的电阻,用于计算压感值 | 
| aic,y-plate | 正整数 | > 0 | 需要实测屏幕Y方向的电阻,用于计算压感值 | 
| aic,two-points | boolean | 有 - 1,无 - 0 | 是否打开两点采样 | 
| aic,manual-mode | boolean | 有 - 1,无 - 0 | 是否采用手动模式 | 
| aic,sample-period-ms | 正整数 | [1, 1000] | 周期采样模式下的周期值,单位:ms | 
| aic,fuzz | 正整数 | [1, 32] | 对坐标变化模糊处理的半径值 | 
不同的参数组合,可以让RTP工作在不同的采样模式,对应关系如下:
| 模式 | 子模式 | 采样点 | 需要用户配置的DTS参数 | 备注 | 
|---|---|---|---|---|
| 手动 模式 | 无压感 | XN, YN | manual-mode | |
| 有压感 | XN, YN, ZA | manual-mode, x-plate, y-plate | ||
| XN, YN, ZA, ZB | manual-mode, x-plate | |||
| 自动 模式 | Auto1非周期 | XN, YN | 无 | |
| Auto1周期 | sample-period-ms | |||
| Auto2非周期 | XN, YN, ZA, ZB | x-plate | 缺省模式 | |
| Auto2周期 | x-plate, sample-period-ms | |||
| Auto3非周期 | XN, XP, YN, YP ZA, ZB | x-plate, y-plate, two-points | ||
| Auto3周期 | x-plate, y-plate, two-points, sample-period-ms | |||
| Auto4非周期 | XN, XP, YN, YP ZA, ZB, ZC, ZD | x-plate, two-points | ||
| Auto4周期 | x-plate,two-points,sample-period-ms | 
上表中“DTS参数”按照规范每个参数名称签名都有个“aic,”前缀,为了简洁表格中有省略。
注解
- 对于Auto2模式,如果用户配置了y-plate,ZB数据将驱动被忽略,压感计算 时采样公式2; 
- 基于实测数据,Auto2非周期模式 在性能上表现都比较平衡,所以DTS中会作为缺省配置。 
7.9.2.2.2. D211的配置¶
common/d211.dtsi中的参数配置:
rtp: rtp@19252000 {
    compatible = "artinchip,aic-rtp-v1.0";
    reg = <0x0 0x19252000 0x0 0x1000>;
    interrupts-extended = <&plic0 93 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&cmu CLK_RTP>, <&cmu CLK_APB1>;
    clock-names = "rtp", "pclk";
    resets = <&rst RESET_RTP>;
};
xxx/board.dts中的参数配置:
&rtp {
    aic,max-pressure = <800>;
    aic,x-plate = <235>;
    pinctrl-names = "default";
    pinctrl-0 = <&rtp_pins>;
    status = "okay";
};
小技巧
- 这里的配置选用了Auto2的Single Piont模式,所以只用到RTP驱动的部分参数。 
- x-plate和y-plate两个参数是要根据触摸屏的电阻实测值来定。 
7.9.2.3. 触摸屏的电阻实测方法¶
 
图 7.33 D211芯片测量触摸屏电阻值方法¶
小技巧
- 原理图中触摸屏的四个引脚为PA11(YN)、PA10(XN)、PA09(YP)、PA08(XP)。 
- 测量过程中需根据电路原理图中rtp的引脚顺序,确定XN、XP、YN、YP在屏幕的位置。 
7.9.2.4. 几款RTP屏幕的参数¶
这里记录测试过的几款屏幕参数,主要是X、Y方向的电阻值,对应DTS中的x-plate、y-plate:
| 屏型号 | 分辨率 | 板子类型 | x-plate | y-plate | 备注 | 
|---|---|---|---|---|---|
| LCD屏 | 800x480 | per1 | 235 | 902 | |
| LVDS屏 | 1024x600 | per1 | 702 | 236 |