工具/软件:
您好、
我正在使用 SK-AM64B、并尝试通过在 GPIO 和 I2C 模式之间切换 MCU_I2C0_SDA 引脚来控制 I2C 器件 (ATECC608C)。
最初、当我用 PIN_MODE(7) (GPIO 模式)配置引脚时、可以使用成功地将引脚驱动为低电平 GPIO_pinWriteLow()。
但是、将引脚切换至 PIN_MODE(0) (I2C 模式)然后再切换回后 PIN_MODE(7)、GPIO 不再将引脚驱动为低电平。
顺序如下:
Pinmux_init2_dmy (); // PIN_MODE (7) → GPIO 模式、 工作 正常
Wakeup_Gpio (); // 低电平 输出 成功
Pinmux_init3_dmy (); // PIN_MODE (0) → 切 换到 I2C 模式
Pinmux_init2_dmy (); // PIN_MODE (7) → 切 换回 GPIO 模式
Wakeup_Gpio (); // 低 输出 失败
该 Wakeup_Gpio() 函数定义如下:
void Wakeup_Gpio (void)
{
uint32_t MCU_baseAddr = (uint32_t) AddrTranslateP_getLocalAddr (CSL_MCU_GPIO0_BASE);
GPIO_setDirMode (MCU_baseAddr、 GPIO_MCU_I2C0_SDA_PIN、 GPIO_DIRECTION_OUTPUT);
GPIO_pinWriteHigh (MCU_baseAddr、 GPIO_MCU_I2C0_SDA_PIN);
GPIO_pinWriteLow (MCU_baseAddr、 GPIO_MCU_I2C0_SDA_PIN);
ClockP_USleep (1000);
GPIO_pinWriteHigh (MCU_baseAddr、 GPIO_MCU_I2C0_SDA_PIN);
ClockP_USleep (1000000);
}
引脚多路复用配置为:
*对于 GPIO 模式:
{
PIN_MCU_I2C0_SDA、
( PIN_MODE (7) | PIN_INPUT_ENABLE | PIN_PULL_DISABLE )
}
*对于 I2C 模式:
{
PIN_MCU_I2C0_SDA、
( PIN_MODE (0) | PIN_INPUT_ENABLE | PIN_PULL_DISABLE )
}
我需要在 GPIO 和 I2C 模式之间切换以正确控制 I2C 器件。
您能否给出建议、说明如何在这些模式之间正确切换、以便 GPIO 输出在从 I2C 模式返回后可靠地工作?
此致、
Yukinobu
