您好!
我们将通过两条不同的 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 理念以最佳方式编写代码。
提前非常感谢您的答复。