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.

[参考译文] MSP430G2553:如何通过编程方式重置卡住的 i2c 接口?

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1008593/msp430g2553-how-to-programmatically-reset-a-stuck-i2c-interface

器件型号:MSP430G2553

我正在使用 MSP EXP430G2ET 板。
有时 SDA 引脚"卡在0"、我唯一可以修复它的方法是拔下电路板并重新插入。


我已经尝试过

重新加载程序。 init 例程包含:

 UCB0CTL1 |= UCSWRST;
(笑声)

 UCB0CTL1 = UCSSEL_2 | UCSWRST;

没有任何成功。

此外、CCS 上的软/硬复位选项不会复位 SDA 引脚。

是否仍有以编程方式复位 I2C 接口?

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

    如果条件能够承受主器件(MCU)复位、则表明从器件将其保持在低电平。 根据 I2C 规范(UM10204版本6)第3.1.16秒、 在这种情况下、您的选择是有限的。 如果只有 SDA 被保持、您可以通过发送9个 SCL 脉冲来成功(您必须从 USCI 上断开引脚并将它们作为 GPIO 进行摆动)。 如果是 SCL、则会卡住。

    该规范建议从器件具有复位或电源控制引脚。 我发现许多 I2C 器件都具有足够低的功耗、可以通过 GPIO 供电。 在本例中、电源控制非常简单。