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.

[参考译文] AM625:AM625 GPIO 引脚配置

Guru**** 2455560 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1467899/am625-am625-gpio-pin-configuration

器件型号:AM625

工具与软件:

开发环境

我们正在尝试将 GPIO0_23和 GPIO0_24 (连接器 J18的引脚7和9)配置为输出引脚。 这2个引脚在 Symphony board DTS (k3-am625-var-som-symphony.dts)中配置为 UART2。 我们已删除该配置并按如下所示配置为 GPIO:

&main_pmx0{

+   状态="正常";

+   pinctrl-names ="默认值";

+   pinctrl-0 =<&DISPLAY_PINS_DEFAULT>;

+

+   display_pins_default:display-default-pins {

       PINCTL-SINGLE、PINS =<

+          AM62X_IOPAD (0x005c、PIN_OUTPUT_PULLUP、7)/*(R24) GPMC0_AD8.GPIO0_23 */

+          AM62X_IOPAD (0x0060、PIN_OUTPUT_PULLUP、7)/*(R25) GPMC0_AD9.GPIO0_24 */

+       >;

   };

 

已删除配置:

-  main_uart2_pins_default:main-uart2-pins-default {

-      pinctrl-single、pins =<

-          AM62X_IOPAD (0x005c、PIN_INPUT_PULLUP、2)/*(R24) GPMC0_AD8.UART2_RXD */

-          AM62X_IOPAD (0x0060、PIN_OUTPUT、2)/*(R25) GPMC0_AD9.UART2_TXD */

-      >;

-  };

 

 

但我们无法将这些引脚作为 GPIO 输出操作。  我们使用 libgpiod 命令进行了验证。 我们已将这些引脚配置为"PIN_OUTPUT_PULLUP"、但 默认情况下、万用表上的 GPIO0_23测量0V、GPIO0_24测量3.3V。 (连接器 J18的引脚7和9)

如果我们将引脚 GPIO0_24设置为"0"、则不会看到它变为0V。 同样、如果我们将引脚 GPIO0_23设置为"1"、则不会看到它达到3.3V。

 

以下是命令日志:

root@am62x-var-som:~# cd /sys/class/gpio
root@am62x-var-som:/sys/class/gpio ls -l
总计0
"啊啊啊! 1根根号4096 4月28日 导出
lrwxrwxrwx 1根根   0 Apr 28 2022 gpiochip360 ->../../devices/platform/bus@f0000/20000000.i2c/i2c-0/0-0020/gpio/gpiochip360
lrwxrwxrwx 1根根   0 Apr 28 2022 gpiochip368 ->../../devices/platform/bus@f0000/601000.gpio/gpiochip368
lrwxrwxrwx 1根根   0 Apr 28 2022 gpiochip420 ->../../devices/platform/bus@f0000/6000.gpio/gpiochip420
"啊啊啊! 1根根号4096 Apr 28 2022未导出
root@am62x-var-som:/sys/class/gpio echo 443 > export
root@am62x-var-som:/sys/class/gpio echo 444 > export
root@am62x-var-som:/sys/class/gpio echo out > gpio443/direction
root@am62x-var-som:/sys/class/gpio echo out > gpio444/direction
root@am62x-var-som:/sys/class/gpio echo 1 > gpio443/value
root@am62x-var-som:/sys/class/gpio echo 1 > gpio444/value
root@am62x-var-som:/sys/class/gpio echo 0 > gpio443/value
root@am62x-var-som:/sys/class/gpio echo 0 > gpio444/value

 

为了验证 pinctrl 配置、我们尝试使用相似的配置将不同的引脚- GPIO1_51 (J3的引脚18)配置为 GPIO 输出(删除了作为 J1.82-USB#A_HOST_PWR 的现有配置)、并且运行正常。

+           AM62X_IOPAD (0x0258、PIN_OUTPUT_PULLUP、7)/*(F18) USB1_DRVVBUS.GPIO1_51 */

-  MAIN_USB1_PINS_DEFAULT:MAIN-USB1-PINS-DEFAULT {

-      pinctrl-single、pins =<

-          AM62X_IOPAD (0x0258、PIN_OUTPUT、0)/*(F18) USB1_DRVVBUS */

-      >;

-  };

 

这2个引脚是否需要配置为 GPIO 引脚、或者缺少某些配置?

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

    Vijay、您好!

    GPIO0_23和 GPIO0_24的唯一独特之处在于它通常用于引导模式开关、但对于 VAR-CLA-AM62来说 SOM、它的使用方式不同。



    您能否确认这是正确的原理图? https://www.variscite.com/wp-content/uploads/2023/01/symphony-board_VAR-SOM-AM62.pdf
    由于 SOM 不是 TI 拥有的产品、我只是想确认一下。

    这里要说明的是、内部拉电阻不足以自行将信号驱动为高电平/低电平、因此仍需要 gpioset 命令。

    此致、
    Anshu

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

    是的、我们将在 AM62中使用上述相同的 Symphony 载波电路板。

    我尝试使用 gpioset 命令设置 GPIO 引脚、但当方向设置为 out 时、错误值低于标准值

    $ echo 443 >/sys/class/gpio/export

    $ echo out >/sys/class/gpio/gpio443/direction

    • 使用"gpioset"命令和"gpioset:设置 GPIO 行值:设备或资源繁忙"错误代码时发生错误、我们无法控制工作引脚#82、而可以直接使用"echo 1 >/sys/class/gpio/gpio419/value 命令正确控制同一个引脚。
    • 使用"cat /sys/kernel/debug/gpio 命令、将所有导出的引脚标记为"sysfs"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、我们尝试使用外部4.7K 电阻上拉相同的 GPIO 引脚、但未起作用。

    是否需要强上拉?

    如果引脚是引导模式引脚、如何将这些引脚配置为 GPIO?

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

    Vijay、您好!

    如果要使用 libgpiod、则无需使用 sysfs 来设置方向。 使用 sysfs 后、Linux 将为 sysfs 定义 GPIO 的使用者、而不会让 gpod 使用同一个引脚。 "gpioset"命令将自动将引脚的方向设置为输出。"

    此致、

    Anshu

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

    我曾尝试使用 gpioset 命令设置 GPIO 值、但值完全没有改变。 我已使用外部万用表进行了相同的验证。

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

    Vijay、您好!

    GPioset 和 GPioget 将改变 GPIO 的方向并丢失其先前的上下文。 这意味着如果调用了 gpioset、则方向为输出。 但是、如果随后调用 gpioget、则引脚将处于高阻态、因为它需要输入电压。

    您是否可以运行 gpioset 将引脚设置为高电平、然后使用万用表进行测量? 之后 GPIO 引脚的电压是多少?

    此致、

    Anshu

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

    尊敬的 Anshu:

    感谢您提供  gpioset 和 gpioget 命令的工作。

    另外、我正在与 Variscite 支持团队讨论相同的问题、他们提出了以下适用于 Variscite AM62 SOM 的解决方案。

    将符号链接重命名为其他存在的"/lib/firmware/am62-mcu-m4f0_0-fw "。 因此、现在电压也正确地从3.3V 变为0V。

    感谢您提供的信息。