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.

[参考译文] TMS320F28P559SJ-Q1:当设置 GPIO GPxODR = 1 +输入模式+上拉时、无法正常上拉 GPIO

Guru**** 2422790 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1538085/tms320f28p559sj-q1-cannot-pull-up-the-gpio-normally-when-set-gpio-gpxodr-1-input-mode-pull-up

器件型号:TMS320F28P559SJ-Q1

工具/软件:

您好专家

客户通过 GPIO 进行 I2C 仿真、在 I2C 传输模式(GPIO 设置为输出)下、客户设置 GPxODR = 1、启用上拉电阻、可以正确切换 I2C 电压电平。

但在 I2C 接收模式(GPIO 设置为输入)下、如果客户仍设置  GPxODR = 1、启用上拉、GPIO 会将 I2C 总线拉至逻辑低电平、I2C 无法正确传输、一旦客户设置 GPxODR = 0、启用上拉、I2C 总线就可以恢复。

当 GPIO 配置为输入时、配置 GPxODR = 1 是否存在任何错误?

谢谢

Joe

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

    你好、Joe。

    首先、我想澄清一下:当您说“GPxODR = 1、使能上 拉“时、您说 GPxODR = 1 来启用开漏输出、GPxPUD = 0 来启用上拉电阻器?

    这样做时、请确保客户遵循 TRM 第 10.11 节中列出的操作顺序:

    要将 GPIO 配置为开漏引脚、用户需要向该引脚的 GPxDAT 寄存器写入 0、然后向 GPxDIR 寄存器写入 0。 当用户将 0 写入 GPxDIR 寄存器时、它将使引脚保持悬空、而当用户将 1 写入 GPxDIR 寄存器时、引脚将被驱动为低电平。“

    此致、

    Ryan

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

    您好、Ryan

    首先、我想澄清一下:当您说“GPxODR = 1、ENABLE pullup“时、您说的是 GPxODR = 1 以启用开漏输出、GPxPUD = 0 以启用上拉电阻器?[/报价]

    是的

    下面有 2 个问题:

    如果我要将引脚配置为 OD 和输入、GPxODR 寄存器和其他 GPIO 控制寄存器之间的时间顺序是多少?  TRM 第 10.11 节仅介绍了 GPxDAT 寄存器和 GPxDIR 寄存器的时间顺序、但未展示 GPxODR 寄存器与其他 GPIO 控制寄存器之间的关系。

    您能否分享此配置时隙的原因? 为什么 ODR = 1 且 GPIO 设置为输出会导致 GPIO 被拉至低电平?

    谢谢

    Joe

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

    Joe、

    如果要将引脚配置为 OD 和输入、GPxODR 寄存器与其他 GPIO 控制寄存器之间的时间顺序是多少?  TRM 第 10.11 节仅介绍了 GPxDAT 寄存器和 GPxDIR 寄存器的时间顺序、但未展示 GPxODR 寄存器和其他 GPIO 控制寄存器之间的关系。[/报价]

    GPxDAT = 0 和 GPxDIR = 0 后应启用 GPxODR。 我建议这样做是为了确保您不会意外地将 GPIO 置于某种形式的不正确状态。

    出于设置寄存器顺序背后的确切原因、我并不完全知道。 我正在与我们的一位 GPIO 专家交谈、以便能够更详细地解释、并解答您的问题、了解为什么开漏模式会将输入设置为低电平。 感谢您的耐心。

    此致、

    Ryan

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

    您好 Joe。 跟进以完全回答您的问题。

    为什么 ODR = 1 且将 GPIO 设置为输出会导致 GPIO 被拉至低电平?

    实际上、设置 GPxODR = 1 并通过内部上拉电阻器切换到输入模式与自身相矛盾。 开漏模式在输出时会将电流灌入地、但不能强制设置“高“值。 由于此电路、选择输入模式后、无论上拉电阻如何、开漏仍然会灌入电流、因此您会看到在 GPxODR = 1 时输入线路被强制接地。

    如果答案满足您的问题、请将其标记为“已解决“。

    此致、

    Ryan