stm32F103 模拟I2C mpu6050收到数据全为0,或者地址为209,104,0x68,0xD0的一些解决办法总结

来源:互联网 发布:2016年11月网络热搜 编辑:程序博客网 时间:2024/04/25 22:03

stm32F103 模拟I2C mpu6050收到数据全为0,或者地址为209,104,0x68,0xD0的一些解决办法总结:

  • 最近在学习模拟I2C,硬件有两套stm32F103C8T6和stm32F103RBT6,网上买的mpu6050套件。用stm32F103RBT6正常读到数据,可是换stm32F103C8T6读到的全是0,读who am I 按道理应该是104 (0x68)。但是读到的有时候 全为0 甚至209,或者255等等。

解决办法

  • 1 首先看能否读到who am i 读不到或者读的不正确就,对mpu6050进行一下复位:
    IICwriteBit(devAddr,MPU6050_RA_PWR_MGMT_1,7,1);    delay_ms(30);    IICwriteBit(devAddr,MPU6050_RA_PWR_MGMT_1,7,0);

2 狗日的甚至我用不同的线缆读的却都不一样。更不说不同的板子了。不能的板子在keil编译的时候最好选择相应的配置。
3 读不到who am i 也有可能是挂了一个以上的I2C设备,于是我就手工割掉了一个。

4 顺便说个问题 在I2C的时候 PB67 成功了PB56成功了,但是PB45 却一直有问题,最后多亏一位大神相助,STM32的PB3、PB4,分别是JTAG的JTDO和NJTRST引脚,在没关闭JTAG功能之前,在程序中是配置不了这些引脚的功能的。要配置这些引脚,首先要开启AFIO时钟,然后在AFIO的设置中,释放这些引脚。具体看STM32的参考手册中有关AFIO的部分。 选自:http://www.stmcu.org/module/forum/thread-307696-1-1.html

下图为读错的情况:
第一波也读对了,但是数据全为0,这个做了几次试验,应该是上电复位的时候接触不好,导致初始化的时候 还是没有完美。
这里写图片描述

后面这张为改正来后的测试数据
这里写图片描述

附上程序源码:
http://download.csdn.net/detail/jasondooc/9159447
最后本人菜鸟,正在学习中,有问题还请多多交流指正 helloxidian@126.com,如有侵权立即删除。

0 0
原创粉丝点击