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.

[参考译文] SK-AM62:AM62x SK EVM 上的 GPIO 控制问题 — 特定的 GPIO 引脚无法通过 gpioset 进行控制

Guru**** 2489685 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1543404/sk-am62-gpio-control-issue-on-am62x-sk-evm---specific-gpio-pins-uncontrollable-via-gpioset

器件型号:SK-AM62


工具/软件:

你好。

我希望此消息能帮您找到答案。 我目前正在使用 AM62x 入门套件 EVM、遇到 GPIO 控制问题、希望您能提供帮助。

问题描述:

当特定的 GPIO 引脚连接到用户扩展连接器时、在 AM62x 入门套件 EVM 上遇到 GPIO 控制问题。 这些引脚无法使用标准 GPIO 工具进行控制。

问题详细信息:

以下 GPIO 引脚是无法控制的、卡在大约 0.7V:

  • GPIO0_32(引脚 32)-无法控制、显示 0.7V
  • GPIO0_33(引脚 33)–无法控制、显示 0.7V
  • GPIO0_36(引脚 36)-部分可控、显示 0.7V
  • GPIO0_42(引脚 42)–无法控制、显示 0.7V

工作的 GPIO 引脚用于比较:

  • GPIO0_38、GPIO0_39、GPIO0_40、GPIO0_41 — 全部可控且功能正常

测试环境:

  • 板:AM62x 入门套件 EVM(修订版 E3)
  • 未将外部设备连接至用户扩展连接器
  • 所有 GPIO 引脚均配置为 GPIO 模式 (pinctrl 显示 00010007)
  • 使用万用表在用户扩展连接器引脚上进行测试

pinctrl 调试输出:

root@am62xx-EVM:~# cat /sys/kernel/debug/pinctrl/f4000.pinctrl-pinctrl-single/pins | grep -E“引脚 14|引脚 32|引脚 33|引脚 36|引脚 38|引脚 39|引脚 40|引脚 41|引脚 42“ 
引脚 14 (PIN14) 14:600000.GPIO f4038 00010007 pinctrl-single
引脚 32 (PIN32) 0:? f4080 00010007 pinctrl-single
引脚 33 (PIN33) 32:600000.GPIO f4084 00010007 pinctrl-single
引脚 36 (PIN36) 35:600000.GPIO f4090 00010007 pinctrl-single
引脚 38 (PIN38) 37:600000.GPIO f4098 00010007 pinctrl-single
引脚 39 (PIN39) 38:600000.gpio f409c 00010007 pinctrl-single
引脚 40 (PIN40) 39:600000.gpio f40a0 00010007 pinctrl-single
引脚 41 (PIN41) 40:600000.GPIO f40a4 00010007 pinctrl-single
引脚 42 (PIN42) 41:600000.gpio f40a8 00010007 pinctrl-single

使用的测试命令:

# Check GPIO status
gpioinfo | grep -E "gpiochip0.*32|gpiochip0.*33|gpiochip0.*36|gpiochip0.*42"

# Attempt to control GPIOs
gpioset gpiochip0 32=1  # No effect, voltage remains ~0.7V
gpioset gpiochip0 33=1  # No effect, voltage remains ~0.7V
gpioset gpiochip0 42=1  # No effect, voltage remains ~0.7V

# Working examples
gpioset gpiochip0 38=1  # Works correctly, outputs 3.3V
gpioset gpiochip0 39=1  # Works correctly, outputs 3.3V

器件树配置:

这些引脚的当前 DTS 引脚多路复用配置:

user_gpio_pins: user-gpio-pins {
    pinctrl-single,pins = <
        // GPIO 모드로 설정 (마지막 파라미터가 7이면 GPIO 모드)
        AM62X_IOPAD(0x0038, PIN_OUTPUT, 7)  /* GPIO0_14 */
        AM62X_IOPAD(0x0080, PIN_OUTPUT, 7)  /* GPIO0_32 */
        AM62X_IOPAD(0x0084, PIN_OUTPUT, 7)  /* GPIO0_33 */
        AM62X_IOPAD(0x0090, PIN_OUTPUT, 7)  /* GPIO0_36 */
        AM62X_IOPAD(0x0098, PIN_OUTPUT, 7)  /* GPIO0_38 */
        AM62X_IOPAD(0x009C, PIN_OUTPUT, 7)  /* GPIO0_39 */
        AM62X_IOPAD(0x00A0, PIN_OUTPUT, 7)  /* GPIO0_40 */
        AM62X_IOPAD(0x00A4, PIN_OUTPUT, 7)  /* GPIO0_41 */
        AM62X_IOPAD(0x00A8, PIN_OUTPUT, 7)  /* GPIO0_42 */
    >;
};

&main_gpio0 {
	bootph-all;
	pinctrl-names = "default";
    pinctrl-0 = <&user_gpio_pins>;
	status = "okay";
};

问题: 根据原理图 (PROC114E3)、这些 GPIO 引脚仅连接到用户扩展连接器、无需额外的硬件电路。 尽管 DTS 配置与工作引脚相同且 pinctrl 设置正确、但有哪些因素会阻止这些特定引脚响应 gpioset 命令? 这是否是这些特定 GPIO 引脚的已知硬件限制、内部下拉配置或设计注意事项?

预期行为: 所有 GPIO 引脚都应响应 gpioset 命令、并在配置为输出时能够输出 0V(低电平)和 3.3V(高电平)。

请提供任何指导或解释。

感谢您的时间和支持。 我期待着你就此问题提供指导。

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

    你好 Minae

    我遇到了与 J784S4 类似的问题、但我不确定这适用于  AM62x  我发现、   我要用于输出的 GPIO 的 PADCONFIG 寄存器仍设置了 TX_DIS 位。  了解到这一点后、我发现我能够驱动 GPIO。  
    例如、我需要使用 WKUP_GPIO_49 作为复位 GPIO、但它不起作用。 该引脚的 PADCONFIG 寄存器为 0x4301C190 的 PADCONFIG100。 使用:

    devmem2 0x4301C190 显示寄存器值: 0x08214007、表明 TX_DIS 位 (21) 为高电平。  
    然后我使用了 devmem2 0x4301C190 w 0x08014007(位 21 现在为 0)、并且我能够设置和清除 GPIO。

    我在我的器件树架构和器件树 DTS 中添加了 padconfig-reset-address 的属性、并在我的驱动程序中添加了代码以读取该属性并清除 TX_DIS 位、现在即可正常工作。

    如果您仍有问题、希望这对您有所帮助。

    此致、

    Bruce

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

    您好:

    对延迟深表歉意。 此主题是否仍需要支持?

    谢谢、

    Ansuh