2013-12-14 06:59 AM
I have two boards with STM32F0 connected by I2C. First board works like master, second works like slave. I use CPAL library and transmission works fine during normal state. When I make some disturb on the I2C lines during active transmision (for example reset master) slave hangs. I see that slave enter CPAL_TIMEOUT_UserCallback. In this callback I deinit and init I2C controller interface - CPAL_I2C_DeInit - CPAL_I2C_Init (code is similar like in Two boards example) and then I see that both or one I2C lines are pulled down by slave all the time and flags BUSY in I2C_ISR is set. In this situation helps only RST. Second solution is deinit and init I2C controller after some time. Why deinit and init in timeout callback does not work?
#stm32f0-cpal-i2c-slave