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.

MSP430FR5969: I2C SCL and Bus Busy Bit Stuck Low

Part Number: MSP430FR5969

Sometimes when doing USCI B I2C with communications the SCL line and Bus Busy get stuck low after a slave device doesn't correctly send an NACK. I don't think there's any way to prevent that from happening but I need to be able to gracefully recover.

Things I have tried in the I2C timeout interrupt :

Manually toggling SCL low and high 9 times.

Toggling the I2C UCSWRST bit on and off.

I cannot try to get it to transmit a start or stop condition because since SCL is being pulled low I cannot send a start or stop. Any suggestions would be appreciated.

  • I'm pretty sure the I2C protocol doesn't really provide a way to force a misbehaving slave to behave. Some slaves have bus timeouts (not part of I2C), but evidently not this one.

    When I can (which is actually quite often) I try to arrange to power the slave using a GPIO (<4mA) so I have a "heavy hammer" just in case.

**Attention** This is a public forum