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.

[参考译文] SK-AM64B:如何在 GPIO 和 I2C 模式之间正确切换 MCU_I2C0_SDA?

Guru**** 2549500 points
Other Parts Discussed in Thread: SK-AM64B

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1557844/sk-am64b-how-to-switch-mcu_i2c0_sda-between-gpio-and-i2c-modes-correctly

器件型号:SK-AM64B


工具/软件:

您好、

我正在使用 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

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

    尊敬的 Yukinobu:

    您还能提供的定义吗 pinmux_init2_dmy () 和  pinmux_init3_dmy ()?

    此外、在进行 pinmux 更改之前、您是否也会禁用驱动器输出? 您应在更改多路复用模式之前设置 TX_DIS 位、然后在修改多路复用模式后重新启用驱动器。

    请参阅下图。

    此致、

    Tushar

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

    尊敬的 Tushar:

    我们在 E2E 上检查的问题已经解决。
    我还确认了在更改多路复用模式之前设置 TX_DIS 位的过程、之后重新启用驱动器。
    再次感谢您的支持。

    此致、
    Yukinobu