这几天解决 STM32 MCU的I2C 总线占用(BUSY) 问题,觉得是不错的Lesson Learn,分享给大家。
问题描述
问题描述
- STM32F207 MCU有三组I2C,在Pre-ES1使用I2C1接上DSP/Codec/EEPROM,运作良好
- 新硬件(ES1)把Codec/EEPROM移到I2C3,DSP还是留在I2C1,发现在I2C3有机率性的BUSY,MCU无法开始传资料
- 查MCU datasheet,BUSY意思为register I2C3_SR2[bit1]=1,代表SCL/SDA曾经 low而且没出现stop condition
- I2C3 BUSY和timing有关,在程序加个delay就莫名PASS,再加delay又莫名BUSY,有些image是机率性发生BUSY
分析方向
- 观察I2C3 SCL/SDA波形
- I2C3在Pre-ES1没用过,初始化是