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.

[参考译文] CC1352R:当引脚应同时用作输入和输出时、该引脚的正确配置是什么?

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1329038/cc1352r-what-is-the-correct-configuration-of-the-pin-when-it-should-be-used-as-input-and-output-simultaneously

器件型号:CC1352R

您好!

我们将通过两条不同的 I2C 总线线路上的两个从 I2C 器件、使用 CC1352R 开发一个新器件。 该 MCU 只有一个 I2C 总线、因此我们决定编写一个通过软件实现的 I2C 接口。 它能够正常工作。

使用最新的 SDK 7_10_02_23并使用 RTOS 创建工程。 引脚 SCL 和 SDA 被定义为输出-带外部上拉电阻的漏极开路10k Ω。 一切都正常工作。

我们希望能够根据当前 SDK 的最佳实践和理念编写我们的代码。

1.引脚 SCL 和 SDA 在乞讨中被定义为输出-开漏。  

示例:

GPIO_setConfig (CONFIG_GPIO_I2C_LEDDRV_SDA、GPIO_CFG_OUTPUT_OPEN_DRAIN_INTERNAL | GPIO_CFG_OUT_STR_MED | GPIO_CFG_OUT_HIGH);
GPIO_setConfig (CONFIG_GPIO_I2C_LEDDRV_SCL、GPIO_CFG_OUTPUT_OPEN_DRAIN_INTERNAL | GPIO_CFG_OUT_STR_MED | GPIO_CFG_OUT_HIGH);

2.在代码执行期间,我们用函数 GPIO_read (...)来检查引脚 SCL 的状态。 它能够正常工作。

问题如下:

2.1如果引脚只被定义为输出,函数 GPIO_READ()如何工作?

2.2在这种情况下、是否需要将引脚 SCL 和 SDA 一起配置为输入和输出、才能写入和读取引脚?

2.3如果我们可以始终通过函数 GPIO_Read (...)读取引脚状态、这意味着我们不需要在 I2C 读取操作期间将引脚重新配置为输入(SDA 线路为开漏、上拉处于高电平状态)。 是这样吗?

同样、我们的目的是根据 SDK 理念以最佳方式编写代码。

提前非常感谢您的答复。

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

    您好,Angel,

    感谢您的提问。 我会仔细研究这件事,并在一天结束前回到你。  

    此致、

    SID

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

    您好,Angel,

    2.1:当您将引脚配置为输出时,GPIO 驱动程序还将启用输入缓冲区,以便能够像您一样使用 GPIO_READ()读取引脚的当前状态。 这是特意设计的、适合您这样的用例。

    2.2:您无需显式将引脚配置为输入即可读取输入状态、使用当前配置就足够了。 尽管不应使用 GPIO_CFG_OUTPUT_OPEN_DRAIN_INTERNAL、因为顾名思义、它的名称建议仅由 GPIO 驱动程序在内部使用。 相反、我建议您使用 GPIO_CFG_OUT_OD_NOPULL、因为您提到您有外部上拉电阻器。

    2.3:正确。 如果开漏输出的输出电平是高电平(即您使用 GPIO_WRITE ()向引脚写入了"1"),那么您可以使用 GPIO_READ ()读取输入状态,就像它刚刚被配置为输入一样。

    简而言之、使用  GPIO_CFG_OUT_OD_NOPULL 将引脚配置为输出并使用此配置读取输入状态(当输出状态为高电平时)遵循 SDK 的原理。

    此致、
    尼古拉杰

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

    非常感谢 Nikolaj。 这对我来说已经足够了。