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.

[参考译文] AM6442:将 ADC0单个引脚配置为 GPI

Guru**** 2380860 points
Other Parts Discussed in Thread: AM6442, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1499711/am6442-configuring-the-adc0-single-pin-as-gpi

器件型号:AM6442
主题: SysConfig 中讨论的其他器件

工具/软件:

尊敬的团队:

我们在一个设计中使用 AM6442。 我们希望将 ADC0_AIN0配置为 ADC0_AIN6作为 ADC 输入、并将 ADC0_AIN7引脚(E20)单独配置为 GPI 功能。

但在用户手册中、寄存器 CTRLMMR_ADC0_CTRL 的位16 GPI_MODE_EN 描述为:"置位时启用 ADC0数据引脚用作通用输入。 该信号连接到 MCU_ADC0"=>的 en_DIG_TEST 输入、但手册中没有其他提到"en_DIG_TEST"和"MCU_ADC0"。 因此、很难确保它是引脚对引脚允许/可配置为 GPI 和 ADC0功能。

但这里有一个专门的部分用于介绍这一点:12.1.1.4.2.2 ADC GPI 集成

TI 的 SysConfig 工具允许分别将8个引脚中的每个引脚配置为 ADC 或 GPI

因此、对我来说、这确认了当所有其他引脚都是 ADC 输入时、我们只能使用1个引脚(ADC0_AIN7)作为 GPI。

请确认 上述理解是否正确。

还请您分享"如何 在软件中将单个引脚配置为 GPI、将所有其他引脚配置为 ADC0"过程

此致、

Shwetha Nayak。

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

    您好、Shwetha、

    [引述 userid="619963" url="~/support/processors-group/processors/f/processors-forum/1499711/am6442-configuring-the-adc0-single-pin-as-gpi

    TI 的 SysConfig 工具允许分别将8个引脚中的每个引脚配置为 ADC 或 GPI

    因此、对我来说、这确认了当所有其他引脚都是 ADC 输入时、我们只能使用1个引脚(ADC0_AIN7)作为 GPI。

    [/报价]

    请参阅共享屏幕截图的3个要点。 也就是说、所有 ADC 引脚都可以配置为 GPI 或模拟输入。 您不能将两者组合用于一组 ADC 引脚。

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您的答复。

    我想知道我们是否要将 ADC0配置为 GPI、而这恰好需要在其中进行更改? 它是在 DTS 还是任何其他驱动程序文件中?

    此致、  

    Shwetha Nayak

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

    尊敬的 Shweta:

    请按照下图中所述的步骤操作。

    在驱动程序初始化之后、您需要在应用程序代码中设置 GPI_MODE_EN 位。

    我可以在 dts 文件中看到 ADC 保留供 R5F 使用。 请参阅下图。

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您的快速答复。

    我们正在 AM6442的 A53端进行工作、根据您的响应、建议将 ADC 块保留为可以保留的状态、并且不需要 Linux 内核端进行其他更改。 请确认这一点。

    若要编写应用程序来设置 GPI_MODE_EN、请提供示例代码?

    此外、还有一处将 ADC0_AIN7 (GPIO1_87)配置为 GPI 的阐述、与其他引脚示例一样、我看不到任何 PADCONFIG 寄存器或 PADCONFIG 地址  

    此致、

    Shwetha Nayak

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

    您好 Shwetha、

    我们正在 AM6442的 A53端进行开发、根据您的响应、建议将 ADC 块保留为可以完成的保留、并且不需要 Linux 内核端进行其他更改。 请确认此

    是的、以上理解正确。

    此外、还有一个关于将 ADC0_AIN7 (GPIO1_87)配置为 GPI 的阐释、我没有看到任何 PADCONFIG 寄存器或 PADCONFIG 地址、如其他引脚示例
     

    从数据表中可以看出、ADC 引脚的 Muxmode 列似乎是空白、不需要通过 Padconfig 进行多路复用模式设置。 请参阅下图。

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您的快速答复。

    最后、为了将 ADC 块配置为 GPI、我们需要执行以下操作

    • 在器件树文件中、将 ADC 的状态配置为 RESERVED "STATUS=RESERVED"
    • 在"MAIN_GPIO1"下无需执行 GPI 配置、也不需要在"GPIO1_PINS_DEFAULT"下定义引脚
    • 需要设置"CTRLMMR_ADC0_CTRL 寄存器"位16、即"GPI_MODE_EN"

    为了写入处理器寄存器我需要您的支持、该寄存器当前设置为用于 ADC 功能配置的哪个确切驱动程序文件会很有用?

    如果您为我提供用于编写此寄存器的应用程序片段、那么它也会很有用。

    此致、

    Shwetha Nayak  

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

    您好、Shwetha、

    要编写处理器寄存器、我需要您的支持、那么当前该寄存器配置为用于 ADC 功能的哪个确切驱动程序文件会很有用?

    请参阅以下代码片段。

    #define CTRL_MMR0_BASE                          (0x43000000U)
    #define ADC0_CTRL_OFFSET                        (0x4710U)
    
    #define LOCK1_KICK0_OFFSET                      (0x5008U)
    #define LOCK1_KICK1_OFFSET                      (0x500CU)
    
    #define KICK0_UNLOCK_VAL                        (0x68EF3490U)
    #define KICK1_UNLOCK_VAL                        (0xD172BC5AU)
    
    void set_gpi_mode_en()
    {
        /* unlock CTRLMMR */
        HW_WR_REG32((CTRL_MMR0_BASE + LOCK1_KICK0_OFFSET), KICK0_UNLOCK_VAL);
        HW_WR_REG32((CTRL_MMR0_BASE + LOCK1_KICK1_OFFSET), KICK1_UNLOCK_VAL);
    
        uint32_t val = HW_RD_REG32((CTRL_MMR0_BASE + ADC0_CTRL_OFFSET)) | (1U <<16);
        HW_WR_REG32((CTRL_MMR0_BASE + ADC0_CTRL_OFFSET), val);
    
        /* lock CTRLMMR */
        HW_WR_REG32((CTRL_MMR0_BASE + LOCK1_KICK0_OFFSET), 0U);
        HW_WR_REG32((CTRL_MMR0_BASE + LOCK1_KICK1_OFFSET), 0U);
    }

    此致、

    Tushar