大家好,分享一个用STM32F103调试I2C的坑。项目中用MPU6050传感器,配置I2C1(PB6、PB7)读取数据。代码照例用STM32CubeMX生成,初始化正常,但读数据总是返回0xFF,设备压根没响应!
折腾半天,检查硬件、换引脚、测波形都正常,最后发现问题:忘了使能I2C时钟!CubeMX生成的代码里,RCC的I2C1时钟默认没开。解决方案超简单,在初始化前加一句:
__HAL_RCC_I2C1_CLK_ENABLE();
重新编译下载,通信正常,数据秒读。浪费了一下午,就因为这低级错误,血压飙升!教训:用CubeMX时,检查时钟配置要仔细,尤其是外设使能。
这个坑小但烦人,分享给新手朋友,少走弯路。欢迎讨论~