On launchpad MSP430FR6989, I have problem with blocked I2C transfer (slave mode).
In general the transfer is working, but after a while (100..1000 transfers), the status flags UCBBUSY and UCSCLLOW are set.
One single transfer is:
1. Receive 5 Bytes
2. Transmit 3 Bytes
If the I2C is in the blocked state I already tried to write bytes manually with debugger into the TX buffer in order to send more bytes, but this does not help.
If it happens, it is between start and stop condition within the rx section of the transfer.
The bus lines SDA and SCL are both low in this state (no I2C interrupt anymore).
The only way I found to get out of this blocked state is to reset (UCSWRST) and reinitialize the I2C.
As I am not able to detect the blocked state by software I have to do it manually.
What can be the reason for the blocked state?
Is there a possibility to detect the state by some flags? I cannot use UCBBUSY and UCSCLLOW because those flags are
also set if I2C is not blocked (while normal I2C transfer is active).
How can it prevented to get into this blocked state?