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.

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1138155/tms320f280041-configure-gpio-pins

器件型号:TMS320F280041
主题中讨论的其他器件: C2000WARE

您好!

我尝试通过直接访问控制寄存器来配置 TMS320F280041 MCU 的 GPIO 31。

我在技术参考手册的第一步:

我非常确定 GPIO 31属于端口 A、这意味着我需要访问 GPAMUX 和 GPAGMUX。

以下是我的问题:

GPAMUX 1/2中的"1/2"是什么意思?

为了控制 GPIO31、我需要写入哪个特定的 GPAMUX 寄存器/位?

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

    您好、Michael、
    请参阅 TRM 第8.2.2章。:

    您可以看到、MUX1用于 GPIO0至 GPIO15、MUX2用于 GPIO16至 GPIO31。
    每个寄存器都有详细说明、因此您可以检查必须设置哪些位。
    我可以问:为什么不使用 driverlib 函数? 这样做容易得多。

    此致、
    Andy

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

    尊敬的 Andy:

    我只是想从头开始学习。

    一旦我对一切工作方式有了很好的了解、我最终会过渡到使用 driverlib 函数。

    好的、从该表中我将需要访问 GPAMUX2和 GPAGMUX2寄存器。

    查看 GPAMUX2寄存器、可以看到控制 GPIO31的位30和31。

    因此、我必须向 GPAMUX2寄存器的位30和31写入0、这是正确的吗?

    我不确定 Code Composer Studio 中会出现什么情况。

    [寄存器名称]|= 0x00 //is that correct?(是否正确?)

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

    我强烈建议使用 driverlib、因为这是一种高效的、易于使用的终端。
    例如、通过以下简单调用可在 GPIO 模式下设置 GPIO31:


    GPIO_setPinConfig(GPIO_31_GPIO31);

    您可以在  C2000Ware 中检查 GPIO_setPinConfig()函数的源代码。
    我不知道要设置哪个多路复用器选项;将 GMUX 和 MUX 位设置为0可将引脚设置为 GPIO 模式、但这是复位后的默认设置。
    当手动设置寄存器时、您需要用 EALLOW/EDIS 宏将寄存器更改包含在内、因为这些寄存器受到保护。

    [引用 userid="435133" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1138155/tms320f280041-configure-gpio-pins/4224434 #422443"][寄存器名称]|= 0x00 //是否正确?

    与0x00对或无效。 例如、设置 bit0使用
    [REG]|= 0x01
    要清除位0、请使用:
    [REG]&=~0x01

    此致、
    Andy

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

    好的、Andy、您说服了我。

    按照 TRM 中列出的配置步骤、我需要调用哪些 driverlib 函数来将 GPIO31初始化为 GPIO?

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

    使用以下函数(示例设置):

    GPIO_setPinConfig (GPIO_31_GPIO31);
    GPIO_setDirectionMode (31、GPIO_DIR_MODE_IN);
    GPIO_setQualificationMode (31、GPIO_QUAL_6SAMPLE);
    GPIO_setPadConfig (31、 GPIO_PIN_TYPE_PULLUP);

    此致、
    Andy

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

    那么 setPadConfig()函数是否仅在我们将引脚设置 为 GPIO 时适用?

    例如,如果我将 GPIO31配置为 SPIB_SOMI,setPadConfig();不会使用或需要使用,对吧?

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

    答案在 TRM 的这张图片上:


    如您所见、上拉电阻器位于引脚输出端、因此可在所有 MUX 设置中工作。

    此致、
    Andy

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

    我知道它适用于所有多路复用器设置、但我不一定需要针对所有多路复用器设置(例如、在引脚用作 SPI SOMI 的情况下)调用它。 是这样吗?

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

    复位后、所有上拉电阻器默认被禁用。 因此,如果您使用的是 SPI SOMI,则不需要 setPadConfig()调用。

    Andy