代码是原子哥的代码;mpu_dmp_init() DMP初始化失败 我查代买发现是
res=dmp_load_motion_driver_firmware(); //加载固件库
if(res)return 4; 实际返回4 说明加载失败 继续看发现
if (memcmp(firmware+ii, cur, this_write))
return -2; 是这个函数返回了-2 说以导致失败 这个函数 执行的是汇编 看不懂...
请问这是为什么?怎么解决呢?
首先可以确定的是我的小车原装代码是可以实现的 所以排除硬件问题
MPU_Init(); //初始化MPU6050 这可以初始化 说明IIC通行也没问题
在初始化前我没开任何中断
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
没太听懂楼主什么意思 如果你要打印出来陀螺仪原始数据相应的忘记那个.c了 好像是mpu6050.c就有u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz)等函数 直接调用加上你想读取的参数就可以读出来原始数据 如果你要读DMP融合后的pitch roll yaw 的角度 就直接调用inv_mpu.c中的u8 mpu_dmp_get_data(float *pitch,float *roll,float *yaw)函数就可以读取 IIC如果要变一定要改全 不然肯定会失败
.h里面的
//IO方向设置
#define MPU_SDA_IN() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}
//IO操作函数
#define MPU_IIC_SCL PBout(10) //SCL
#define MPU_IIC_SDA PBout(11) //SDA
#define MPU_READ_SDA PBin(11) //输入SDA
.c里面的这个:
//初始化IIC
void MPU_IIC_Init(void)
{
RCC->APB2ENR|=1<<3; //先使能外设IO PORTB时钟
GPIOB->CRH&=0XFFFF00FF; //PB10/11 推挽输出
GPIOB->CRH|=0X00003300;
GPIOB->ODR|=3<<10; //PB10,11 输出高
}
IO部分我都改过了
u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz)
这个函数 调用的就是
u8 MPU_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{
IIC_Start();
IIC_Send_Byte((addr<<1)|0);//·¢ËíÆ÷¼tμØÖ·+D′Ãüáî
if(IIC_Wait_Ack()) //μè′yó|′e
{
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg); //D′¼Ä′æÆ÷μØÖ·
IIC_Wait_Ack(); //μè′yó|′e
IIC_Start();
IIC_Send_Byte((addr<<1)|1);//·¢ËíÆ÷¼tμØÖ·+¶áÃüáî
IIC_Wait_Ack(); //μè′yó|′e
while(len)
{
if(len==1)*buf=IIC_Read_Byte(0);//¶áêy¾Y,·¢ËínACK
else *buf=IIC_Read_Byte(1); //¶áêy¾Y,·¢ËíACK
len--;
buf++;
}
IIC_Stop(); //2úéúò»¸öí£Ö1ìõ¼t
return 0;
}
这个连续读 函数 这读出来就是原始数据 可是只能读1个数据出来 不知道为什么 我吧这函数改成
u8 MPU_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{
u8 i;
for(i=0;i<len;i++)
{
*buf=MPU_Read_Byte(reg);
buf++;
reg+=1;
}
return 0;
}
这样 就可以全部读出来 ,,现在读数据到没什么问题
现在DMP加载固件库失败 ,,,失败的地方那个函数 貌似 是 汇编的 还是不开源..
if (memcmp(firmware+ii, cur, this_write))
return -2;
、
1,开了中断,中断打断了DMP的初始化过程,导致失败。
2,模块没放平,导致初始化失败。
如果这两点都确认了,建议看看IIC波形,SCL的时钟,是不是和我们开发板一样。怀疑是IIC延时导致的问题。
你有用定时器吗 如果有的话把定时器初始化放在DMP初始化后面
一周热门 更多>