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.

[参考译文] AM2431:在单个 API 调用中控制多个 GPIO

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385995/am2431-controlling-multiple-gpio-in-single-api-call

器件型号:AM2431

工具与软件:

我浏览了 TRM、了解了可以使用 baseAddr = 0x00600000 (GPIO0)处的寄存器控制 GPIO。
在 GPIO 配置为输入/输出/PU/GPIO / PD 等后、您可以写入 GPIO_SET_DATAyy 寄存器以定义组中哪些位是 H/L。
使用上述寄存器写入、可以在一条指令中设置多个 GPIO 引脚 H/L。

抱歉、暂时没有浏览头文件、
但我想知道 GPIO API 是否也支持使用单个 API 函数调用设置多个 GPIO? 例如...

GPIO_pinWriteHigh(baseAddr, 0b0011);

是否可以这样做、或者是否需要使用寄存器写入?

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

    您好 Keito、

    感谢您的提问。

    [报价 userid="576362" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385995/am2431-controlling-multiple-gpio-in-single-api-call "]我当时想知道 GPIO API 是否还支持使用单个 API 函数调用设置多个 GPIO?

    遗憾的是、没有 API 可用于一次写入多个 GPIO 引脚。 向多个 GPIO 引脚写入高电平/低电平的唯一选项是直接写入寄存器值。

    请注意-一次只能写入2个连续的 GPIO 组(即32个 GPIO)引脚。 可一次写入的 GPIO 组寄存器分为以下对-[01、23、45]。

    希望上述信息对您有所帮助。

    此致、

    Tushar

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

    另外、我想知道存储体和 GPIO 编号方式。

    表5-41和表5-42列出了 GPIO。
    GPIO0有87个 GPIO 引脚。
    GPIO1有80个 GPIO 引脚。

    TRM (第1.3.9节)指出、GPIO 实例具有9个组、每个组具有16个 GPIO。

    TRM 中的 GPIO 寄存器显示可以控制9个组中的每一个(即 GPIO_SET_DATAyy 可以设置每个组中的引脚)

    我不明白各组和 GPIO 引脚编号之间的匹配。

    GPIO0 (baseAddr = 0x00600000)组0 = GPIO0_0 ~ GPIO0_15吗?
    数据表(表5-41)指出 GPIO0_86是最后一个 GPIO0 GPIO。

    按照这种理解、GPIO0_86将由 GPIO0组5控制?
    但这意味着未使用组6 ~组8?

    对于 GPIO1 (仅具有 GPIO0_79)、这将在 GPIO1组4处达到最大值……

    这种理解是否正确?

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

    尊敬的 Keito:

    [报价 userid="576362" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385995/am2431-controlling-multiple-gpio-in-single-api-call/5298219 #5298219"]表5-41和表5-42列出了 GPIO。
    GPIO0有87个 GPIO 引脚。
    GPIO1有80个 GPIO 引脚。[/QUOT]

    请参阅 第12.1.2.1.2节 GPIO 不支持的特性  状态  TRM以了解 GPIO 不支持的功能。

    从下面的屏幕截图中可以看出、GPIO0_[87:143]未引脚输出。 同样、对于 GPIO1_[88:143]引脚、未引脚输出。

    请参阅下面的屏幕截图。

    [报价 userid="576362" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385995/am2431-controlling-multiple-gpio-in-single-api-call/5298219 #5298219"]对于 GPIO1 (最高只能是 GPIO0_79)、这在 GPIO1组4达到最大值...

    是的、以上详细信息正确。 GPIO1_[80:87]引脚配置为 ADC、无法在中使用 GPIO MODE。 该引脚只能在中使用 GPI MODE。

    [报价 userid="576362" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385995/am2431-controlling-multiple-gpio-in-single-api-call/5298219 #5298219"]根据这一理解、GPIO0_86将由 GPIO0组5控制?
    但这意味着组6 ~组8未使用?

    请参阅下面的 GPIO 信号详细屏幕截图。

    希望上述信息对您有所帮助。

    此致、

    Tushar

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

    尊敬的 Tushar:

    完美;我有一个想法现在如何前进。 谢谢!

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

    尊敬的 Keito:

    完美;我现在有一个如何前进的想法。

    感谢您的确认。  

    很乐意提供帮助

    此致、

    Tushar