STM32F302 does not release SCL on Arbitration Lost Error (ARLO) in Slave Mode
Hello,
I'm using a STM32F302RBTx in IC2 Slave Mode with Clock Stretching Enabled.
In general the Communication with a Master works fine. During testing the following problem appeared: When an Arbitration Lost error is introduced, the Slave detects this and triggers the ISR. The HAL Library also reports the status code 0x02 for ARLO, but the SCL line is never released.
ISR.BUSY is 1
ISR.TXIS is 0
ISR.TXE is 0
ISR.ADDR is 0
According to the Reference Manual, when an ARLO is detected, SCL and SDA lines are released.
RM0365 page 815.
"In slave mode, arbitration loss is detected during data phase and data acknowledge
phase. In this case, the transfer is stopped, and the SCL and SDA lines are released."
Even Setting the CR1.PE to 0 does not release the SCL. Forcing a SystemReset using NVIC_SystemReset, correctly releases the SCL but this is not a good solution for our use case.
Note: The same behavior is observed when the BERR flag is set.
Any advice is appreciated.
Best Regards,
T. Sparber
