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.

[参考译文] AM62X-PET-CALC:AM62LX:如何知道 AM62X_IOPAD 宏设置的 GPIO 数量是多少?

Guru**** 2487425 points
Other Parts Discussed in Thread: AM625

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1435732/am62x-pet-calc-am62lx-how-do-i-know-what-the-number-of-the-gpio-set-by-the-am62x_iopad-macro-is

器件型号:AM62X-PET-CALC
主题中讨论的其他器件:AM625

工具与软件:

我发现在器件树中、GPIO 的状态由 AM62X_IOPAD 宏设置、但我不知道此宏中的 GPIO 编号是多少。

我怀疑宏 AM62X_IOPAD 中的第一个参数对应于相应的 GPIO 编号、但我不知道第一个参数和 GPIO 编号之间的关系是什么、请您提供文档说明


ospi0_pins_default:ospi0-pins-default{
PINCTL-SINGLE、PINS =<
AM62X_IOPAD (0x000、PIN_OUTPUT、0)/*(H24) OSPI0_CLK */
AM62X_IOPAD (0x02c、PIN_OUTPUT、0)/*(F23) OSPI0_CSn0 */
AM62X_IOPAD (0x00c、PIN_INPUT、0)/*(E25) OSPI0_D0 */
AM62X_IOPAD (0x010、PIN_INPUT、0)/*(G24) OSPI0_D1 */
AM62X_IOPAD (0x014、PIN_INPUT、0)/*(F25) OSPI0_D2 */
AM62X_IOPAD (0x018、PIN_INPUT、0)/*(F24) OSPI0_D3 */
AM62X_IOPAD (0x01c、PIN_INPUT、0)/*(J23) OSPI0_D4 *
AM62X_IOPAD (0x020、PIN_INPUT、0)/*(J25) OSPI0_D5 */
AM62X_IOPAD (0x024、PIN_INPUT、0)/*(H25) OSPI0_D6 */
AM62X_IOPAD (0x028、PIN_INPUT、0)/*(J22) OSPI0_D7 */
AM62X_IOPAD (0x008、PIN_INPUT、0)/*(J24) OSPI0_DQS */
>;

谢谢

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

    您好!

    我今天回到办公室、目前正在研究这个问题。 如果您尚未收到回复、请在星期四之前 ping 此主题。

    谢谢!

    Anshu

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

    您好!

    有关引脚多路复用器定义、请参阅 k3-pinctrl.h: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-pinctrl.h?h=ti-linux-6.6.y

    第一个参数是焊盘配置寄存器的地址。 第二个参数是焊盘方向。 第三个参数是 Mux 模式。

    大多数情况下、GPIO 的多路复用模式为7、但并非全部为7。



    请参阅 AM62x 数据表表表6-1。 引脚属性有关每个焊盘的多路复用模式的更多信息、请参阅 https://www.ti.com/lit/gpn/am625

    可以看到、每个引脚都有一个 PADCONFIG 寄存器的地址。 如需更多信息、请参阅14.2.1.2焊盘配置寄存器: https://www.ti.com/lit/pdf/spruiv7

    如果目标是将这些 OPSI 引脚用作 GPIO、则可以将多路复用器模式更改为7、并更新器件树中的参考节点。

    此致、

    Anshu

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

    嗨  Anshu:

    我打开了 AM62x 数据表文件、仍然找不到 GPIO 编号和地址偏移之间的关系

    https://www.ti.com/lit/pdf/spruiv7 连接我无法打开。、这是一个文件吗? 您可以直接向我发送文件吗?

    谢谢

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

    嗨  Anshu:

    我们以一个示例:为例

    AM62X_IOPAD (0x00c、PIN_INPUT、0)/*(E25) OSPI0_D0 */

    1 μ s 从该表中、、GPIO0_4用于功能 OSPI_DO

    2 μ s、代码中的0x00c 偏移在哪里得到它? 或者更确切地说、查看

    3、、用格式表示的地址0x00F4010是什么?

     

    谢谢

    明星

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

    尊敬的 Mingx:

    我在 AM625产品页面上提到了这两个文档: https://www.ti.com/product/AM625

    OSPI0_D0和 OSPI0_D1是两个不同的引脚。 这两个引脚将具有不同的 PADCONFIG 地址以及与之关联的 GPIO。

    每个 PADCONFIG 寄存器的基址为0xF4000、然后为特定寄存器添加偏移量。

    以及使用格式的0x00F4010的地址是什么?

    请参阅 AM62x TRM 中的14.2.1.2焊盘配置寄存器。

    谢谢!
    Anshu

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

    嗨  Anshu:

    1.我仍然无法从 https://www.ti.com/product/AM625下载你说的文档,我不知道这是网络问题还是其他什么,当我下载它时,它总是无法加载。

    您可以直接向我发送 PDF 文件吗

    如果要在器件树中配置 GPIO 的状态、需要说明寄存器地址、偏移量和 GPIO 编号之间的关系

    谢谢

    明星

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

    Anshu、您好:

    我已经下载了文档、但我仍然不明白如何设置 GPIO 状态

    可以使用 OSPI0_D0 (GPIO0_3)作为示例、向我展示如何将 GPIO3设置为输出 高电平?

    如何设置 AM62X_IOPAD 的参数(PA、val、多路复用模式)? 尤其是对于 PA 参数、我如何知道要写入什么值?  

    3.为什么不使用 pinctrl 机制来设置 GPIO、并使用如此繁琐的封装? 这有什么优点吗

    谢谢

    明星

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

    尊敬的 Mingx:

    我仍然不明白如何设置 GPIO 状态

    这是在用户空间中使用 gpioget 和 gpioset 等命令完成的 不会 通过引脚多路复用: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1260373/faq-transitioning-the-gpio-userspace-interface-from-sysfs-to-chardev

    如何设置 AM62X_IOPAD 的参数(pa、val、muxmode)?

    这在 Linux 器件树中的 MAIN_PMX 节点下完成。 我之前说过的元件。

    第一个参数是焊盘配置寄存器的地址。 第二个参数是焊盘方向。 第三个参数是复用模式。[/QUOT]

    对于"AM62X_IOPAD (0x008、PIN_INPUT、7)"、请注意以下内容:

    如需了解 LED 示例、您可以访问 git.ti.com/.../k3-am62x-sk-common.dtsi

    为什么不使用 pinctrl 机制来设置 GPIO 并使用这样繁琐的封装?

    替代方法是单独写入将使用的每个 PADCONFIG 寄存器。 当使用75+焊盘时、不能逐个写入每个寄存器。 Pinctrl 帮助在 Linux 引导期间处理此问题。

    谢谢!

    Anshu

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

    嗨 Anshu:

    我:理解如何在器件树中设置 GPIO 的状态、但我还想问一些小问题

    )(树中的偏移量用于寄存器地址的最后3位(008 μ s、那么寄存器地址的前5位)000F4 μ s 用于什么?

    2.我查看了设置 GPIO 状态的宏、其中 GPIO 设置为输入/输出以及上拉/下拉、但我似乎看不到 GPIO 设置为高电平和低电平、GPIO 的高低电平在哪里设置?

    谢谢

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

    尊敬的 Mingx:

    1. 器件树中的偏移量用于寄存器地址的最后3位(008)、那么寄存器地址的前5位(000F4)用于?[/QUOT]

    只是简单的手部表示法。 已知基地址为0xF4000、所以唯一重要的是该寄存器的偏移量。


    2. 我查看了设置 GPIO 状态的宏、有将 GPIO 设置为输入/输出和上拉/下拉、但我似乎看不到将 GPIO 设置为高电平和低电平、GPIO 的高电平和低电平在哪里?

    此 PinMux 不会更改 GPIO 状态 . 此引脚复用适用于所有外设、如 UART、I2C、MMC、Display 等、而不仅仅是 GPIO。 PinMux 只允许焊盘能够接收和发送。



    SoC 需要应用程序来驱动状态。

    请随时在本 E2E 的最后一篇文章中阅读更长的讨论: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1426818/am623-gpio-status-not-updating-in-output-mode/5490248#5490248

    此致、

    Anshu

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

    Anshu、您好:

    如果我希望在内核启动时使用代码将 GPIO 设置为高电平、该怎么办? 根据您所说的、不能将器件树设置为高电平、那么如果我要设置为高电平、是否只能使用 GPIO API (gpiod_line_set_value)进行高电平?

    谢谢

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

    尊敬的 Mingx:

    您必须执行这个 U-Boot 阶段。 在 U-Boot 中设置 GPIO 时、应遵循一个简单的常见问题解答: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1398803/faq-processor-sdk-am62x-how-to-toggle-gpios-and-leds-from-u-boot-command-prompt

    它也可以根据 U-Boot 初始化代码进行配置、但 TI 不提供相关示例。

    此致、

    Anshu

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

    嗨 Anshu:

    我似乎理解你的意思

    在内核层、我们不能通过 dtsi 来配置它来控制 GPIO 的高电平和低电平、只能控制输入和输出模式以及 pullup/pulldowm

    如果要控制高电平和低电平、可以在引导阶段使用命令 GPIO set/toggle/clear

    3.至于注册,我不明白你的策略太好

    我自己进行了尝试、在用户空间中、我可以通过 sys/class/Gpio 路径下的一系列命令来控制用户空间内 GPIO 的高低电平

    5.我 在驱动程序路径下搜索了 GPIO API (GPIO_SET_VALUE)、发现它存在、如果要在内核层设置 GPIO 状态、应该可以通过 GPIO_SET_VALUE 进行设置

    我不知道我的摘要中是否有任何错误、如果有错误、请帮助指出它们

    谢谢

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

    尊敬的 Mingx:

    3.对于注册表、我不明白您的策略太好

    TRM 中有一个示例将介绍寄存器的工作原理:12.2.1.4.2 GPIO 函数

    您提到的内容没有其他问题。

    请注意、TI 不能为自定义代码和应用提供支持。

    此致、

    Anshu

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

    嗨  Anshu:

    请注意、TI 不能为自定义代码和应用提供支持。

    -->这就是我所说的问题、我的意思是、我们是否可以在启动代码的启动阶段设置 GPIO 状态、如果是、您能否告诉我位置

    谢谢

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

    尊敬的 Mingx:

    您可以参阅以下类似的 E2E 主题: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1422521/am62a7-configure-gpio-as-input-and-read-gpio-value-from-u-boot-source-code

    此致、

    Anshu

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

    Anshu、您好:

    根据您发送的连接、我总结了在引导阶段设置 GPIO 的方法:

    、GPIO 命令 "GPIO set"进行设置 "、"GPIO 切换 "、"GPIO 清除 '  

    通过 API 函数(gpio_request,gpio_direction_output,GPIO_SET_VALUE 在当前 EVM.c 文件中运行 GPIO、从而设置 GPIO 的值

    )(位于 gpio.h 文件中)

    请帮助查看是否正确

    谢谢

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

    尊敬的 Mingx:

    正确。

    谢谢!

    Anshu