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:触摸屏为 isn't 响应

Guru**** 2441850 points
Other Parts Discussed in Thread: TSC2004

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1434492/tsc2004-touchscreen-isn-t-responding

器件型号:TSC2004

工具与软件:

您好!

我们将 TSC2004用于4线电阻式触摸屏 以及 AUX 上的光传感器。 我们观察到、在启动设备后、触摸屏随机无响应。 可以从主机访问 TSC2004、但使用意外标志38:00c9进行应答。 重启电源不能解决此问题。 几次重新启动(5-10次)后、触摸屏再次工作。 首先、我们认为 AUX 上的光传感器可能是问题所在。 然后、我们了解一下特殊的测试模式。 您能告诉我们更多有关这种特殊测试模式的信息吗?或者您是否知道我们在哪种条件下运行以及如何解决此问题?  

提前感谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我很快就会解答您的问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。 我认为这将有助于我们了解如何访问测试模式以及如何检查测试模式是否已激活。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    标志00C9h、特别是位7复位、表明器件没有正确的复位、这 可能会影响触摸检测。 当您写入软件复位(CB1寄存器)并读取剩余寄存器时、您看到默认值了吗?  

    请确保硬件重置也正确完成;拉至大于10us 的低电平。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    问题很难重现、并且很少发生、但通常足够我们需要找到解决方案。

    典型的寄存器转储如果触摸正常工作(Linux 驱动程序:`cat /sys/kernel/debug/regmap/1-0048/registers`)、38为状态寄存器:

    00: 01dd
    08: 01e2
    10: 016b
    18: 0c52
    20: 01f9
    28: 0000
    30: 0000
    38: 0084
    40: 0fff
    48: 0000
    50: 0fff
    58: 0000
    60: 7494
    68: 0004
    70: 381c
    78: 0000

    STATUS 寄存器中的确切值(所有数据值变为0时、与提到的状态值0x00c9一起出现2次)。

    如果触摸不起作用、则转储寄存器。 尝试读取 AUX 或触摸显示屏时没有任何更改。

    00: 0000
    08: 0000
    10: 0000
    18: 0000
    20: 0000
    28: 0000
    30: 0000
    38: 00c9
    40: 0fff
    48: 0000
    50: 0fff
    58: 0000
    60: 7494
    68: 0004
    70: 381c
    78: 0001

    应用软件复位修复(启动时使用添加的软件复位命令重新加载新驱动器)。

    注意:
    -当前使用的驱动程序版本不会发出硬件重置或软件重置。
    -上游驱动程序仅解决硬件重置问题。
    -我们的硬件重置和电源是全球接线/不能通过 GPIO 控制。

    -在 SNSVDD 达到规格后、复位时的电压足够晚。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是实现的软件复位的修复方法:

    drivers/input/touchels/tsc200x-core.c | 16 ++++++++++++++++
    1个文件已更改、16个插入(+)

    diff -- git a/drivers/input/touchel/tsc200x-core.c b/drivers/input/tsc200x-core.c
    索引837f0eae5b961..ba612084931ad 100644
    --驱动程序/输入/触摸屏/tsc200x-core.c.
    ++ b/drivers/input/touchel/tsc200x-core.c
    @@-343、6 +343、22 @@μ s static void tsc200x_reset (struct tsc200x ts)
    gpiod_set_value_cansleep (ts、1);
    usleep_range (100,500);/*只需10us */
    gpiod_set_value_cansleep (ts、0);
    +} else {
    + int 错误;
    + unsigned int status;
    +
    +/*如果出现错误,只需记录它*/
    + ERROR = ts -> tsc200x_cmd (TSC200x_>dev、ts 200X_CMD_RESET);
    + if (错误){
    + Dev_err (ts ->开发、"SW reset failed\n");
    +}
    + error = regmap_read (ts TSC200X_REG_STATUS、&status);
    + if (错误){
    + dev_err (ts ->开发、"SW 复位失败后的读取状态\n");
    +} else if (状态!= 0x4){
    + dev_err (ts ->开发、"SW 复位后未接收的状态:0x%04x\n"、STATUS);
    +}
    }
    }

    ——
     

    您能否回顾一下该代码? 我们不确定它是否得到了正确实施。 谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Julian、您好!

    很高兴找到了解决方案、很遗憾、我们没有此器件的 Linux 专家来审查您的代码、我们现在仅提供硬件级别的支持。