亿加合和智能车制作

标题: MPU6050 [打印本页]

作者: qiangkai311    时间: 2013-9-1 09:44
标题: MPU6050
帅哥美女!我的MPU6050读回来的六个值都是-257是怎么回事?而且不变,请求指导
作者: 灰原姐姐    时间: 2013-9-1 10:10
先用示波器验证MPU6050的输出,再检查SPI(没记错的话应该是用的 SPI 吧?)的代码。
作者: qiangkai311    时间: 2013-9-1 10:32
灰原姐姐 发表于 2013-9-1 10:10
先用示波器验证MPU6050的输出,再检查SPI(没记错的话应该是用的 SPI 吧?)的代码。

用的是IIC,S12模拟的,检测过了没有问题,用同样的时序获取了HMC5883的正常数据。。。。。。。

作者: 河泥    时间: 2013-9-1 11:52
灰原姐姐 发表于 2013-9-1 10:10
先用示波器验证MPU6050的输出,再检查SPI(没记错的话应该是用的 SPI 吧?)的代码。

6050没有SPI

作者: 河泥    时间: 2013-9-1 11:53
IIC初始化了没啊

作者: yunchengfaren    时间: 2013-9-1 14:21
我也出现了和你一样的情况,不过读回来的值都是771
作者: 浙东东    时间: 2013-9-1 15:51
亲,可以把代码发我份吗,MPU6050.我也在研究
作者: miaosem    时间: 2013-9-1 16:26
我的也是 -257 为什么呢
作者: qiangkai311    时间: 2013-9-1 19:00
河泥 发表于 2013-9-1 11:53
IIC初始化了没啊

初始化了。。。。。解决了

作者: qiangkai311    时间: 2013-9-1 19:00
miaosem 发表于 2013-9-1 16:26
我的也是 -257 为什么呢

时序不对!好好调吧!
作者: qiangkai311    时间: 2013-9-1 19:01
浙东东 发表于 2013-9-1 15:51
亲,可以把代码发我份吗,MPU6050.我也在研究

努力吧!
作者: 山人    时间: 2013-9-1 20:22
qiangkai311 发表于 2013-9-1 19:00
初始化了。。。。。解决了

怎么解决的啊 求教
作者: qiangkai311    时间: 2013-9-1 20:25
山人 发表于 2013-9-1 20:22
怎么解决的啊 求教

IIC时序不对。。。。。。
作者: ANDOON    时间: 2013-9-1 21:14
仔细阅读6050的文档,有”敏感比例因子“
作者: yunchengfaren    时间: 2013-9-1 21:35
qiangkai311 发表于 2013-9-1 19:00
初始化了。。。。。解决了

我的I2C初始化了,为啥读回来的数还是不变,是771,亲,你知道为啥吗?先谢谢了

作者: yunchengfaren    时间: 2013-9-1 21:36
qiangkai311 发表于 2013-9-1 19:00
初始化了。。。。。解决了

我的I2C初始化了,为啥读回来的数还是不变,是771,亲,你知道为啥吗?先谢谢了

作者: 浙东东    时间: 2013-9-1 22:04
有用K60写的吗?
作者: 丿灬dragon    时间: 2013-9-1 23:53
qiangkai311 发表于 2013-9-1 19:00
时序不对!好好调吧!

怎么不对法,是延时的时间不对吗

作者: qiangkai311    时间: 2013-9-2 18:03
丿灬dragon 发表于 2013-9-1 23:53
怎么不对法,是延时的时间不对吗

延时不对、、、、、、

作者: qiangkai311    时间: 2013-9-2 18:05
浙东东 发表于 2013-9-1 22:04
有用K60写的吗?

内部IIC没有调出来,用的LPLD底层库,,,时间紧就没有再调,估计底层库有问题
作者: qiangkai311    时间: 2013-9-2 18:06
yunchengfaren 发表于 2013-9-1 21:35
我的I2C初始化了,为啥读回来的数还是不变,是771,亲,你知道为啥吗?先谢谢了

没有代码这个还真不知道。。。。
作者: yzx41    时间: 2013-9-2 19:02
据说很难调
作者: qiangkai311    时间: 2013-9-2 19:30
yzx41 发表于 2013-9-2 19:02
据说很难调

是的。。。

作者: 背负蓝天的云    时间: 2013-9-2 21:26
yunchengfaren 发表于 2013-9-1 14:21
我也出现了和你一样的情况,不过读回来的值都是771

我也是771啊?解决没?

作者: yunchengfaren    时间: 2013-9-2 22:15
背负蓝天的云 发表于 2013-9-2 21:26
我也是771啊?解决没?

解决了,I2C协议的时序不对

作者: 学生    时间: 2013-9-2 22:52
大神 能不能把程序贴出来啊   我想学习下
作者: Shadows    时间: 2013-9-3 08:24
yunchengfaren 发表于 2013-9-1 14:21
我也出现了和你一样的情况,不过读回来的值都是771

我读出来的也是771 请问你问题解决没》?

作者: 背负蓝天的云    时间: 2013-9-3 08:46
yunchengfaren 发表于 2013-9-2 22:15
解决了,I2C协议的时序不对

你是说延时长短有问题  还是sck 不符合规范
作者: 背负蓝天的云    时间: 2013-9-3 09:48
yunchengfaren 发表于 2013-9-2 22:15
解决了,I2C协议的时序不对

发个到我邮箱吧  我是越改越乱。。。。先谢谢了。   1050673808@qq.com
作者: 青草(⊙o⊙)    时间: 2013-9-3 10:13
读值只是开始,滤波融合才是关键。。。。
作者: 嚜綠铯の氺    时间: 2013-9-3 10:34
6050输出的数据究竟是什么样的?我怎么使用这些数据?
作者: 嚜綠铯の氺    时间: 2013-9-3 10:37
你读六个值  意味着  三个加速度  三个陀螺仪的值  是吧?  可是我见6050貌似有DMP,这个怎么用?
作者: yunchengfaren    时间: 2013-9-3 10:40
背负蓝天的云 发表于 2013-9-3 08:46
你是说延时长短有问题  还是sck 不符合规范

延时长短有问题,你改改看。

作者: yunchengfaren    时间: 2013-9-3 10:41
Shadows 发表于 2013-9-3 08:24
我读出来的也是771 请问你问题解决没》?

延时长短可能有问题,你改改看。

作者: 背负蓝天的云    时间: 2013-9-3 10:51
yunchengfaren 发表于 2013-9-3 10:40
延时长短有问题,你改改看。

发我邮箱如何  我也是用的128.而且我是越改越乱啊。。。。1050673808@qq.com

作者: yzx41    时间: 2013-9-3 18:33
求c8051f410的MPU6050程序
作者: 浙东东    时间: 2013-9-3 22:58
拉普兰德的库有问题?我之前移植了,但是还没用过。
作者: forever、    时间: 2013-9-4 22:00
能给我发一份吗,iic模拟的就行,我现在是在做电子罗盘(hmc5883),确实急用,670038101@qq.com谢谢了

作者: ℡浅笑的悲戚♂    时间: 2013-9-5 16:04
我的是252    …………  纠结啊  ……  现在还不好啊
没时间啦啊
作者: qiangkai311    时间: 2013-9-5 16:29
℡浅笑的悲戚♂ 发表于 2013-9-5 16:04
我的是252    …………  纠结啊  ……  现在还不好啊
没时间啦啊

P2口怎么读数据啊!cnt = P2;cnt为变量怎么读不出啦!指导下

作者: laughtianxia    时间: 2013-9-7 20:23
表示瑞萨的单片机一直没读起

作者: admingj    时间: 2014-8-9 23:38
qiangkai311 发表于 2013-9-1 10:32
用的是IIC,S12模拟的,检测过了没有问题,用同样的时序获取了HMC5883的正常数据。。。。。。。

hellow,我也用S12 模拟的iic mpu6050 的数据可也采出,5883的怎么也猜不出来,地址也分开了,这是程序你怎么看??
#include "define.h"     
void GetDataS(uchar SlaveAddress,uchar REG_Address);
int16 x,y,z;
int16 tx,ty,tz;
float ax,ay,az;
float wx,wy,wz;
float atx,aty,atz;
int data_gauss[3]={0};
uchar data_t[6];
void Delay5us()
{
    _asm(nop);_asm(nop);_asm(nop);_asm(nop);
    _asm(nop);_asm(nop);_asm(nop);_asm(nop);
    _asm(nop);_asm(nop);_asm(nop);_asm(nop);
}
void main(void)
{
    float wave[4];
    SetBusCLK_80M();
    //EnableInterrupts;
    uart0_init();
    InitMPU6050();
    InitHMC5883L();
    for(;;)
     {
            x=GetData(SlaveAddress_6050,ACCEL_XOUT_H);
            y=GetData(SlaveAddress_6050,ACCEL_YOUT_H);
            z=GetData(SlaveAddress_6050,ACCEL_ZOUT_H);
            
            ax=MPU6050_Get_Angle(x,y,z,1);
            ay=MPU6050_Get_Angle(x,y,z,2);
            az=MPU6050_Get_Angle(x,y,z,0);
            
            wx=GetData(SlaveAddress_6050,GYRO_XOUT_H);
            wy=GetData(SlaveAddress_6050,GYRO_YOUT_H);
            wz=GetData(SlaveAddress_6050,GYRO_ZOUT_H);   
     
            /*uart0_printf("ax:",ax);uart0_printf("ay:",ay);uart0_printf("az:",az);
            uart0_printf("wx:",wx);uart0_printf("wy:",wy);uart0_printf("wz:",wz);
            uart0_putchar(0x0d);uart0_putchar(0x0a); */
            
           // wave[0]=ax*10;wave[1]=ay*10; wave[2]=az*10;
           // wave[0]=wx*10;wave[1]=wy*10; wave[2]=wz*10;
           //wave[0]=tx*10;wave[1]=ty*10; wave[2]=tz*10;
           
           GetDataS(0x3C,0x3);
           //wave[0]=data_gauss[0];wave[1]=data_gauss[1]; wave[2]=data_gauss[2];
           //wave[0]=BUF[0];wave[1]=BUF[2]; wave[2]=BUF[4];  
           OutPutData_DS(wave);   
           delay(400);
     }
}
float MPU6050_Get_Angle(float x,float y,float z,uchar dir)
{
float temp;
float res=0;
switch(dir)
{
case 0://与自然Z轴的角度
temp=z/sqrt((x*x+y*y));
res=atan(temp);
break;
case 1://与自然X轴的角度
temp=x/sqrt((y*y+z*z));
res=atan(temp);
break;
case 2://与自然Y轴的角度
temp=y/sqrt((x*x+z*z));
res=atan(temp);
break;
}
return res*180.0/3.1415926;//把弧度转换成角度
}
void GetDataS(uchar SlaveAddress,uchar REG_Address)
{
       uint8 i=0;   
               I2C_Start();                   //起始信号
        I2C_SendByte(0x3c);    //发送设备地址+写信号
        I2C_SendByte(0x3);     //发送存储单元地址,从0开始       
        I2C_Start();                   //起始信号
        I2C_SendByte(0x3d);  //发送设备地址+读信号
        for(i=0;i<6;i=i+1)
        {
            data_t=I2C_RecvByte();
            if(i<=4)I2C_SendACK(0);
            else I2C_SendACK(1);  
        }            
        I2C_Stop();                    //停止信号
        data_gauss[0]=data_t[0];//<<8|data_t[1];
        data_gauss[1]=data_t[2];//<<8|data_t[3];
        data_gauss[2]=data_t[4];//<<8|data_t[5];
}





欢迎光临 亿加合和智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2