MPU6050初始化的问题卡住了好几天,也参考了很多博客,终于解决了
1.首先观察一下模块是否有损坏
我之前的时候是用螺丝固定的,就导致模块上面有个元件掉了,之前都没太注意。
如下图
2.如果没有上个问题可以继续向下看
我是用的MCU是STM32F103C8T6,在看原子的例程里发现,IIC初始化中有这么一句
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
因为我使用的是HAL库,所以对库函数不是很了解,然后我去搜了一下,知道了
STM32F10X系列复位后PA13、14、15和PB3、4默认配置为JTAG功能,如果要重新作为普通IO使用,还需要禁用JTAG
下面给出HAL库的解决办法:
在MCU_IIC_Init函数结尾加上下面这一句就可以了
__HAL_AFIO_REMAP_SWJ_NOJTAG();
如果按照上面第二部的做法你读取的地址还是,读取数值是209,那么请看下一条
3.如果读取的数值是209(0XD1)
那么应该是杜邦线接触不严的问题,我刚开始用的面包板连接的,需要用手扶着才能读出104(0x68),松开就会有问题。
如图
后来我把MCU和MPU6050插到PCB上读取的数值就没有问题了。
如图
希望以上的解决方案能对你有帮助!
参考:https://blog.csdn.net/weixin_34033624/article/details/93242998?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164492222816780255224172%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164492222816780255224172&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-1-93242998.first_rank_v2_pc_rank_v29&utm_term=GPIO_PinRemapConfig+HAL%E5%BA%93&spm=1018.2226.3001.4187
http://www.openedv.com/posts/list/0/59031.htm