中科因仑“3+1”工程特种兵精英论坛

标题: 新人成功mpu6050成功,源码发放,过程分享. [打印本页]

作者: 张衍波    时间: 2015-6-10 09:27
标题: 新人成功mpu6050成功,源码发放,过程分享.
新人小白,想做四轴,初学stm32.
3月15号在淘宝上买了一块6050模块,今天刚刚用stm32读到数据。其中也遇到了很多问题,现在在这里贴出来跟大家分享一下成功读出来的过程。
先贴一张图吧javascript:;

以前一直在学习51现在转到stm32感觉区别还是挺大的.

下面梳理一下自己遇到过的关于读6050数据的问题:
1. 卖家给的51程序成功读取到6050数据,stm32未成功,网上下载了很多程序也未成功读取(可能自己不会修改某些参数)。
2. stm32模拟IIC管脚问题。
3. 6050初始化问题。
4. IIC读取到数据不正确遇到过问题。1).数据全部为ff                2).数据全部为-1                3).数据有规律的成周期性的循环                4).读取6050  0x75地址  数值为 ff或0或不确定的值(反正不是0x68)

自己的处理过程:
1.先用51成功的读到了6050数据(证明6050是好的),看别人的程序的大体框架(细看有些地方也看不懂......)。
2.首先是配置问题————输出用推挽输出,输入用上拉输入(总线外部未接上拉电阻),端口时钟,IO口初始化,SDA端口不停地切换输入输出模式。
   其次是模拟IIC协议—————基础(后来由于读不到正确的数据,把以前的资料拿出来看了很多遍......)
3.6050初始化,有很多寄存器,也没有细细研究。但是我在一点里提到,虽然网上很多stm32读6050程序未能成功运行,但是他们的初始化程序大致相同。所以我就直接粘过来用了......(以后再细细研究)
4.IIC读数据不正确:
        过程很坎坷......今天礼拜日没课,所以昨晚干到3点多也未能读到正确数据........
        总结一下论坛里遇到过此问题后的处理方法吧:
                                                1).IIC模拟不正确                //包括电平持续时间,应答的发出,数据读取逻辑顺序               
                                                2).模拟正确后没有初始化        
                                                3).IIC初始化和6050初始化的时间间隔,需要延迟一段时间               
                                                4).软件复位6050。论坛里有人提到过是在PWR_MGMT_1(地址0x6b)寄存器中的bit7 DEVICE_RESET位 置1复位        。

        自己处理方法:
                1).保证自己的IIC是对的。先用24C02成功读写数据
                2).保证6050的器件地址0xd0无误后,用IIC读取6050的WHO_IM_I寄存器(地址0x75),默认值为0x68。成功读到0x68=104后就成功了一大半。
                3).(得寸进尺)读到0x68后,初始化6050再尝试去读取它x轴上的加速度 (MPU6050_RA_ACCEL_XOUT_H     0x3B)<<8|(MPU6050_RA_ACCEL_XOUT_L     0x3C)        
                                                                                                                                                                                                //高八位与低八位合成十六位数据(可省略此步)
                4).上面成功后就可以批量的去读取                加速度:X, Y, Z        陀螺仪:X ,Y ,Z        温度:temp                然后再用串口发送就好了
再贴一张自己调试的时候用到的24c02的图片

最后奉上自己读写成功的程序,还没整理比较乱......
IIC用的刘洋老师的        板子用的是原子的MINI STM32        芯片STM32F103                IIC_SDA.PB11                IIC_SCL.PB10                修改IIC端口时只需在IIC.h文件中修改相应的宏定义即可
6050寄存器中文手册论坛里有人上传大家可以去搜索一下。转载






欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4