问题描述
单片机与MPU6050 IIC通信时,查询6050地址,发送0xD0后第九个时钟上升沿SDA为高电平,即没有回复ACK.
排查
1.芯片是否有虚焊,短路(检查硬件走线正常)
2.MPU6050供电是否正常(我的电源是3.3V,SCL,SDA 4.7K电阻上拉电压3.3V)
3.通信时序是否正确(软件排查正常:IO设置,SCL时钟频率200Khz)
4.排除以上问题后,怀疑是否芯片是坏的?应该不可能
问题解决
各种排查失败后,无意中在单片机上电初始化时加个了20ms延时,竟然正常了。所以MPU6050上电后需要一定的时间来初始化,然后才能通信,否则会通信失败。
ClockConfig();
Delay_ms(20);
VariableInit();
HardWareInit();