2018-12-19 01:01 AM
ES0320 [1] describes an I2C errata "Spurious bus error detection in master mode":
Description
In master mode, a bus error can be detected spuriously, with the consequence of setting the BERR flag of the I2C_SR register and generating bus error interrupt if such interrupt is enabled. Detection of bus error has no effect on the I2C-bus transfer in master mode and any such transfer continues normally.
Workaround
If a bus error interrupt is generated in master mode, the BERR flag must be cleared by software. No other action is required and the ongoing transfer can be handled normally.
I have two questions:
Thank you.
[1] https://www.st.com/resource/en/errata_sheet/dm00218224.pdf
Solved! Go to Solution.
2019-01-22 01:33 AM
Hello @After Forever ,
Unfortunately, it is true that we could miss real bus perturbations. I suppose that in case of a real error, the transfer would be stucked later on due to the clock counter desynchronization between master and slave, so a SW timeout would occur. But at IP level, we are not able to differentiate the true error from this spurious false error.
At silicon level, the DMA is not impacted by these errors. This flag is just an information with no hardware impact in master mode (on the contrary there are HW impacts in slave mode).
Best Regards,
Imen.
2019-01-07 10:57 PM
Up
2019-01-22 01:33 AM
Hello @After Forever ,
Unfortunately, it is true that we could miss real bus perturbations. I suppose that in case of a real error, the transfer would be stucked later on due to the clock counter desynchronization between master and slave, so a SW timeout would occur. But at IP level, we are not able to differentiate the true error from this spurious false error.
At silicon level, the DMA is not impacted by these errors. This flag is just an information with no hardware impact in master mode (on the contrary there are HW impacts in slave mode).
Best Regards,
Imen.