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.

[参考译文] Linux/processor-SDK-AM335X:FT5x06电容式触摸屏问题

Guru**** 2562020 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/608975/linux-processor-sdk-am335x-ft5x06-capacitive-touchscreen-issue

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Linux

大家好、

我们基于 AM3354 处理器设计了定制板,其中使用了 AM335x-EVM 和 Beagle Bone 作为参考设计。我们通过 i2c 总线连接了 FT5x06 (FT5406)电容式触摸屏。为启动触摸屏驱动程序进行了以下更改。

处理器侧                               触摸屏

 I2C2_SDA <--- > TOUCH SDA

I2C2_SCL <--- >  TOUCH SCL

GPIO3_18 -------------- >   touch _WAK

GPIO3_20 <---     touch

1.修改 了触摸屏和 i2c 相关的器件树、然后构建"DTB"并加载到电路板上

 i2c2_pins:pinmux_i2c2_pins{
            pinctrl-single、pins =<
                       0x17c (PIN_INPUT_PULLUP | MUX_MODE3)/*(D17) uart1_rts.I2C2_SCL *
                              0x178 (PIN_INPUT_PULLUP | MUX_MODE3)/*(D18) uart1_CTSN.I2C2_SDA *
                  >;
        };

EDT_ft5406_ts_pins:EDT_ft5406_ts_pins{
          pinctrl-single、pins =<
                       0x1a8 (PIN_INPUT | MUX_MODE7)/*(D13) McASP0_axr1.GPIO3[20]*/
                      0x1a0 (PIN_OUTPUT | MUX_MODE7)/*(B12) McASP0_aclkr.GPIO3[18]*/
               >;
   };

       i2c2{(&I)
       状态="正常";
       pinctrl-names ="default";
       pinctrl-0 =<&i2c2_PINs>;
       时钟频率=<400000>;
       EDT-ft5406@38{
               状态="正常";
               兼容="EDT、EDT-ft5406"、"EDT、EDT-ft5x06";
               pinctrl-names ="default";
               pinctrl-0 =<&EDT_ft5406_ts_PINs>;
               reg =<0x38>;
               interrupt-parent =<&GPIO3>;
               中断=<20 IRQ_TYPE_EDGE_FALLING>;
         /*   RESET-GPIO =<&GPIO3 18 GPIO_ACTIVE_LOW>;*/
               WAKE-GPIO =<&GPIO3 18 GPIO_ACTIVE_LOW>;
               触摸屏大小-x =<800>;
               触摸屏大小-y =<480>;
       };
};

2.添加了 EDT-FT5x06驱动程序作为内置驱动程序并将"zImage"加载到电路板。

但在探测过程中触摸屏驱动程序出现问题、同时也未检测到 i2c-2设备地址。以下是触摸屏的左侧

1.以下引导消息用于 引导期间的 touch 和 i2c

[2.029642]   EDT_ft5x06 2-0038:触摸屏探头失败
[2.034956]   EDT_ft5x06:2-0038探头失败、错误-121
[2.049657]   OMAP_i2c 4819c000.i2c:总线2 rev0.11、频率为400kHz

2. dmesg 打印 以下日志:

[2.007054]   EDT_ft5x06 2-0038:GPIO 查找以进行使用者复位
[2.007080]   EDT_ft5x06 2-0038:使用器件树进行 GPIO 查找
[2.007100]   of _get_named_gpio_FLAGS:无法解析节点'/ocp/i2c@4819c000/EDT-ft5406@38[0]'的'set-gpio'属性
[2.007115]   of_get_named_gpio_FLAGS:无法解析节点'/ocp/i2c@4819c000/EDT-ft5406@38[0]'的'set-GPIO'属性
[2.007128]   EDT_ft5x06 2-0038:使用查找表进行 GPIO 查找
[2.007142]   EDT_ft5x06 2-0038:查找 GPIO 复位失败
[2.007155]   EDT_ft5x06 2-0038:用于消费者唤醒的 GPIO 查找
[2.007166]   EDT_ft5x06 2-0038:使用器件树进行 GPIO 查找
[2.007200]   of _get_named_gpio_FLAGS:已解析节点'/ocp/i2c@4819c000/EDT-ft5406@38[0]'的'WAKE-GPIO'属性-状态(0)
[2.029642]   EDT_ft5x06 2-0038:触摸屏探头失败
[2.034956]   EDT_ft5x06:2-0038探头失败、错误-121
[2.049657]   OMAP_i2c 4819c000.i2c:总线2 rev0.11、频率为400kHz

i2cdetect 命令未检测到 I2C 地址

root@AM335x-EVM:~# i2cdetect -r 2.
警告! 该程序会使您的 I2C 总线混淆、导致数据丢失和更糟糕的情况!
 我将使用读取字节命令探测文件/dev/i2c-2。
 我将探测地址范围0x03-0x77。
 继续? [是/否]
0 1 2 3 4 5 6 7 8 9 A b c d e f
00:         ------------ ------------ ------
10:------------ ------------ ------------ --
20:------------ ------------ ------------ --
30:------------ ------------ ------------ --
40:------------ ------------ ------------ --
50:---------- ------------ ------------ --
60:------------ ------------ ------------ --
70:------------ ------                        

4."Cat /proc/bus/input/devices "命令未列出任何与触摸屏相关的设备。

5.触摸 LCD 面板时,“Cat /proc/interrupt”命令未显示触摸屏的递增计数。

请说明问题的可能原因和解决方法。

谢谢、

Anil




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

    I2C 线路上是否有外部上拉电阻器? 在探测接口时、您是否看到过它们上的任何活动?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Biser、

    是的。 I2C 线路上连接了外部上拉电阻器。

    在 WAKE 和 INT 线路上具有外部上拉电阻的情况下也进行了测试、但问题仍然存在。

    使用示波器探测 I2C 线路时、我看不到处理器生成的 I2C 时钟。

    我在触摸屏上看到以下内核日志消息。 还附加了完整的内核日志消息供您参考。 e2e.ti.com/.../I2CClock_5F00_Issuelog.txt

    [2.095536]  EDT_ft5x06 2-0038:触摸屏探头失败

    [2.109562]  EDT_ft5x06:2-0038的探头失败、错误-121

    从 EDT-ft5x06.c 文件执行 EDT_ft5x06_ts_probe ()函数时、尝试读取 EDT 名称时失败。 因为正在记录哪条内核消息。

    错误= EDT_ft5x06_ts_identify (客户端、tsdata、FW_VERSION);

    如果(错误){

    dev_err (&client->dev、"touchscreen probe failed\n");

    返回错误;



    我无法理解为什么处理器不输出 I2C 时钟。

    此致、

    Anil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我现在还将介绍一个使用该控制器的触摸屏。 当我根本看不到 i2c 上的器件时、这是因为我们使用下拉电阻器按住其复位线。 我们基于具有触摸屏控制器的参考板进行设计、其复位线的操作与此参考板相反。 希望这对您有所帮助、Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nathan、

    从电容式触摸屏面板、复位信号未输出到连接器侧。 请查找以下连接器、该连接器仅用于连接 SCK、SCL、WAKE、INT、VCC 和 GND 信号。  

    在这种情况下、很难控制来自处理器 GPIO 线路的复位信号。 我不确定复位控制是如何处理的。 我认为触摸屏模块侧会注意复位信号、这可能是因为不会将复位信号从处理器输出到连接器侧进行控制。

    请分享您对此的想法。

    此致、

    Anil

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

    忘记在开机自检上连接接头详细信息。

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

    任何更新...

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

    大家好、

    我观察 到以下触摸屏信号(WAKE 和 INT)引脚控制行为

    CAT /sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-functions
    功能:EDT_ft5406_ts_pins、组=[EDT_ft5406_ts_pins ]
    功能:pinmux_i2c2_pins、组=[ pinmux_i2c2_pins ]

    CAT /sys/kernel/debug/pinctrl/44e10800.pinmux/pingroups
    组:pinmux_i2c2_pins
    引脚95 (44e1097c.0)
    引脚94 (44e10978.0)
    组:EDT_ft5406_ts_pins
    引脚106 (44e109a8.0)
    引脚104 (44e109a0.0)

    CAT /sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-pins
    引脚94 (44e10978.0):4819c000.i2c (GPIO 未声明)功能引脚 mux_i2c2_pins 组引脚 mux_i2c2_pins
    引脚95 (44e1097c.0):4819c000.i2c (GPIO 未声明)功能引脚 mux_i2c2_pins 组引脚 mux_i2c2_pins
    引脚104 (44e109a0.0):(MUX 未声明)(GPIO 未声明)
    引脚106 (44e109a8.0):(MUX 未声明)(GPIO 未声明)

    我无法理解为什么触摸屏(EDT_ft5406)不要求引脚。 设备树配置中的错误(设备树在此线程中维护在上面)

    请进行任何检查并建议解决此问题的解决方案。

    谢谢、

    Anil



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

    您在内核中是否启用了 CONFIG_GPIOLIB?
    第二点、您能否尝试启用 GPIO 引脚上的内部上拉电阻器?

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

    Yordan、您好!

    1) 1)您 在内核中是否启用了 CONFIG_GPIOLIB?  -->是的,它在内核中启用

    2) 2)第二点、您能否尝试启用 GPIO 引脚上的内部上拉电阻器?

    我的触摸设备树配置如下:
    i2c2_pins:pinmux_i2c2_pins{
           pinctrl-single、pins =<
                   0x17c (PIN_INPUT_PULLUP | MUX_MODE3)/*(D17) uart1_rts.I2C2_SCL *
                   0x178 (PIN_INPUT_PULLUP | MUX_MODE3)/*(D18) uart1_CTSN.I2C2_SDA *
           >;
       };

       EDT_ft5406_ts_pins:EDT_ft5406_ts_pins{
                   pinctrl-single、pins =<
                       0x1a8 (PIN_INPUT | MUX_MODE7)/*(D13) McASP0_axr1.GPIO3[20]*/
                       0x1a0 (PIN_OUTPUT | MUX_MODE7)/*(B12) McASP0_aclkr.GPIO3[18]*/
                   >;
           };

       i2c2{(&I)
              状态="正常";
              pinctrl-names ="default";
              pinctrl-0 =<&i2c2_PINs>;
              时钟频率=<400000>;
              EDT-ft5406@38{
                   状态="正常";
                   兼容="EDT、EDT-ft5406"、"EDT、EDT-ft5x06";
                   pinctrl-names ="default";
                   pinctrl-0 =<&EDT_ft5406_ts_PINs>;
                   reg =<0x38>;
                   interrupt-parent =<&GPIO3>;
                   中断=<20 IRQ_TYPE_EDGE_FALLING>;
                   WAKEUP-GPIO =<&GPIO3 18 GPIO_ACTIVE_HIGH_>;

                   触摸屏大小-x =<800>;
                   触摸屏大小-y =<480>;
              };
       };

    我将按如下所示更改触摸屏相关的引脚/信号并进行测试。如果设备树配置有任何问题、请纠正错误。

    DT_ft5406_ts_pins:EDT_ft5406_ts_pins{
                   pinctrl-single、pins =<
                       0x1a8 (PIN_INPUT_PULLUP | MUX_MODE7)/*(D13) McASP0_axr1.GPIO3[20]*/
                       0x1a0 (PIN_OUTPUT 上拉| MUX_MODE7)/*(B12) McASP0_aclkr.GPIO3[18]*/
                   >;
           };

    谢谢、
    Anil

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

    [报价]我将按如下方式更改与触摸屏相关的引脚/信号并进行测试。如果设备树配置中有任何问题、请纠正错误。

    DT_ft5406_ts_pins:EDT_ft5406_ts_pins{
    pinctrl-single、pins =<
    0x1a8 (PIN_INPUT_PULLUP | MUX_MODE7)/*(D13) McASP0_axr1.GPIO3[20]*/
    0x1a0 (PIN_OUTPUT 上拉| MUX_MODE7)/*(B12) McASP0_aclkr.GPIO3[18]*/
    >;
    };[/报价]

    是的、这就是我在 GPIO 引脚上启用内部上拉的意思。

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

    Yordan、您好!

    根据建议,在 两个引脚上启用了内部上拉电阻,但问题仍然相同。

    root@AM335x-EVM:~# cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pingroups
    组:EDT_ft5406_ts_pins
    引脚106 (44e109a8.0)
    引脚104 (44e109a0.0)


    2. root@AM335x-EVM:~# cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-pins
    每个引脚的 Pinmux 设置
    格式:引脚(名称):MUX_ONER GPIO_ONER HOG?
    引脚100 (44e10990.0):481a0000.SPI (GPIO 未声明)功能引脚 mux_SPI1_Pins 组引脚 mux_SPI1_Pins
    引脚101 (44e10994.0):481a0000.SPI (GPIO 未声明)功能引脚 mux_SPI1_Pins 组引脚 mux_SPI1_Pins
    引脚102 (44e10998.0):481a0000.SPI (GPIO 未声明)功能引脚 mux_SPI1_Pins 组引脚 mux_SPI1_Pins
    引脚103 (44e1099c.0):481a0000.SPI (GPIO 未声明)功能引脚 mux_SPI1_Pins 组引脚 mux_SPI1_Pins
    引脚104 (44e109a0.0):(MUX 未声明)(GPIO 未声明)
    引脚105 (44e109a4.0):(MUX 未声明)(GPIO 未声明)
    引脚106 (44e109a8.0):(MUX 未声明)(GPIO 未声明)
    引脚107 (44e109ac.0):44e10800.pinmux (GPIO 未声明)功能 DDR3_VTT_TOGGLE 组 DDR3_VTT_TOGGLE
    引脚108 (44e109b0.0):(MUX 未声明)(GPIO 未声明)
    引脚109 (44e109b4.0):44e10800.pinmux (GPIO 未声明)功能 pinmux_clkout2_pin 组 pinmux_clkout2_pin

    3.触摸屏的引导日志
    root@AM335x-EVM:~# dmesg | grep EDT
    [1.390418]   ledtrig-CPU:已注册以指示 CPU 上的活动
    [11.368370]  EDT_ft5x06 2-0038:GPIO 查找以进行使用者复位
    [11.3688404]  EDT_ft5x06 2-0038:使用器件树进行 GPIO 查找
    [11.36825]  of_get_named_gpio_FLAGS:无法解析节点'/ocp/i2c@4819c000/EDT-ft5406@38[0]的'set-GPIO'属性
    [11.368440]  of_get_named_gpio_FLAGS:无法解析节点'/ocp/i2c@4819c000/EDT-ft5406@38[0]'的'set-GPIO'属性
    [11.368453]  EDT_ft5x06 2-0038:使用查找表进行 GPIO 查找
    [11.36868]  EDT_ft5x06 2-0038:查找 GPIO 重置失败
    [11.368483]  EDT_ft5x06 2-0038:用于消费者唤醒的 GPIO 查找
    [11.36894]  EDT_ft5x06 2-0038:使用器件树进行 GPIO 查找
    [11.368507]  of_get_named_gpio_FLAGS:无法解析节点'/ocp/i2c@4819c000/EDT-ft5406@38[0]的'WAKE-GPIO'属性
    [11.368520]  of_get_named_gpio_FLAGS:无法解析节点'/ocp/i2c@4819c000/EDT-ft5406@38[0]'的'WAKE-GPIO'属性
    [11.36853]  EDT_ft5x06 2-0038:使用查找表进行 GPIO 查找
    [11.36855]  EDT_ft5x06 2-0038:查找 GPIO 唤醒失败
    [11.459917]  EDT_ft5x06 2-0038:触摸屏探头失败
    [11.465283]  EDT_ft5x06:探测器2-0038失败、错误-121

    谢谢、

    Anil


     

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

    大家好、

    有关此问题的任何更新。

    谢谢、

    Anil

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

    最新的 SDK 使用 u-boot 设置引脚多路复用。 您能否验证这些 GPIO 引脚在 u-boot 中是否未用于系统中的其他功能?

    此致、
    Yordan