This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TSC2004: Sometimes the coordinate (Y) immediately after touch is misaligned using TSC2004.

Guru 12400 points
Part Number: TSC2004


Hi, 

We have confirmed the operation of the touch panel, but sometimes the coordinate (Y) immediately after touch is misaligned. (Red: deviated, blue: normal)

ーーーーーーーーーーー

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 0 (ABS_X), value 3517

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 1 (ABS_Y), value 2307

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 260

Event: time 1616581701.1616581701, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1

Event: time 1616581701.1616581701, -------------- SYN_REPORT ------------

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 0 (ABS_X), value 3515

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 1 (ABS_Y), value 773

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 243



Event: time 1616581701.1616581701, -------------- SYN_REPORT ------------

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 1 (ABS_Y), value 770

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 249

Event: time 1616581701.1616581701, -------------- SYN_REPORT ------------

Event: time 1616581701.1616581701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0

Event: time 1616581701.1616581701, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0

Event: time 1616581701.1616581701, -------------- SYN_REPORT ------------

ーーーーーーーーーーーーー

Since the Y coordinate is different when touched and when touched off, a phenomenon occurs in which button operations cannot be performed.

Is there a way to correct the coordinate deviation immediately after touch in the device tree settings?

Thanks,

Eevee

  • i did not understand what you exactly mean by touched and touched off. Can you please elaborate ?

  • Hi, Sanjay

    Have there been any reports of problems with touch panels incorporating the TSC2004 in the past, such as coordinates shifting immediately after touching?

    Thanks,

  • I have not seen any such report

  • i did not understand what you exactly mean by touched and touched off. Can you please elaborate ?

    For more information, I will send you the Linux evtest log again.
    ーー
    Event: time 1616581701.1616581701, type 3 (EV_ABS), code 0 (ABS_X), value 3517
    Event: time 1616581701.1616581701, type 3 (EV_ABS), code 1 (ABS_Y), value 2307
    Event: time 1616581701.1616581701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 260
    Event: time 1616581701.1616581701, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
    Event: time 1616581701.1616581701, --------------- SYN_REPORT ------------
    Event: time 1616581701.1616581701, type 3 (EV_ABS), code 0 (ABS_X), value 3515
    Event: time 1616581701.1616581701, type 3 (EV_ABS), code 1 (ABS_Y), value 773
    Event: time 1616581701.1616581701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 243
    (omit)
    Event: time 1616581701.1616581701, --------------- SYN_REPORT ------------
    Event: time 1616581701.1616581701, type 3 (EV_ABS), code 1 (ABS_Y), value 770
    Event: time 1616581701.1616581701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 249
    ーー

    The red letters are the first sensor input after touch, and the green letters are the subsequent input values.

    As for the current situation, the initial sensor values tend to be stable due to the following attempts.

    We are checking whether it is possible to suppress false reactions when touched by changing various delay times of the ConfigurationRegister setting value of TSC2004.
    The changed registers are as follows.
    Changed CFR1 BATCH DELAY from 4ms to 20ms.

    Do you have any advice for me? If any information is missing, please let me know what specific information you need.

    Thanks,

    Eevee

  • Is the Below True?

    If you touch a Location and keep the finger there the first values are inacurate and then later values are correct?

  • Hi, Sanjay

    If you touch a Location and keep the finger there the first values are inacurate and then later values are correct?

    Yes, the above phenomenon occurs. Currently, it tends to be suppressed by adjusting the CFR register value.

    Thanks,

    Eevee

  • When you say supressed what exactly is done in CFR Register ?

  • We will send you the CFR register. If you have any ideas, please let me know.

    /* configuration register 0 */
    #define TSC200X_CFR0_PRECHARGE_276US   0x0040
    #define TSC200X_CFR0_STABTIME_1MS                          0x0300
    #define TSC200X_CFR0_CLOCK_1MHZ               0x1000
    #define TSC200X_CFR0_RESOLUTION12                          0x2000
    #define TSC200X_CFR0_PENMODE                                   0x8000
    ※【CFR0 Resistor】
    #define TSC200X_CFR0_INITVALUE                     (TSC200X_CFR0_STABTIME_1MS    | \
                                                                          TSC200X_CFR0_CLOCK_1MHZ      | \
                                                                          TSC200X_CFR0_RESOLUTION12    | \
                                                                          TSC200X_CFR0_PRECHARGE_276US | \
                                                                          TSC200X_CFR0_PENMODE)
    
    /* bits common to both read and write of configuration register 0 */
    #define  TSC200X_CFR0_RW_MASK                     0x3fff
    
    /* configuration register 1 */
    #define TSC200X_CFR1_BATCHDELAY_4MS       0x0003
    #define TSC200X_CFR1_BATCHDELAY_20MS     0x0005
    //#define TSC200X_CFR1_INITVALUE                    TSC200X_CFR1_BATCHDELAY_4MS
    ※【CFR1 Resistor】
    #define TSC200X_CFR1_INITVALUE                      TSC200X_CFR1_BATCHDELAY_20MS
    
    /* configuration register 2 */
    #define TSC200X_CFR2_MAVE_Z                          0x0004
    #define TSC200X_CFR2_MAVE_Y                          0x0008
    #define TSC200X_CFR2_MAVE_X                          0x0010
    #define TSC200X_CFR2_AVG_7               0x0800
    #define TSC200X_CFR2_MEDIUM_15                    0x3000
    ※【CFR2 Resistor】
    #define TSC200X_CFR2_INITVALUE                      (TSC200X_CFR2_MAVE_X          | \
                                                                          TSC200X_CFR2_MAVE_Y          | \
                                                                          TSC200X_CFR2_MAVE_Z          | \
                                                                          TSC200X_CFR2_MEDIUM_15    | \
                                                                          TSC200X_CFR2_AVG_7)
    

  • Shall respond in a few hours

  • Thank you!!

  • Are you using the PENIRQ function to detect a Touch. Is the PINTDAV Pin read by a microcontroller to detect a touch?

  • Hi, 

    In the Linux TSC2004 driver settings, CFR2::PINTS1,PINTS0 are set to 0 and the PENIRQ function is enabled. The touch input is triggered by the PINTDAV interrupt.

    Thanks,

    Eevee

  • It may be the first processing after the Interrupt is received that may have an error.

    I shall check and respond in a few hours

  • Hi, Sanjay

    Do you have any update?

    Thanks,

  • Tou should first try to increase  Panel Voltage Stabilization Time Control in CFR0

    At the moment it is ims. Try 10ms or more

    CFR0_STABTIME_1MS