使用CubeMx并移植MPU6050到stm32f103VE上,在dmp_load_motion_driver_firmware()这一步上一直失败,我整了10天了,谁能救救我啊!

谁能救救我啊,我的源码在附件中,帮我看看吧,救救我吧!I2C我使用的是 HAL_I2C_Mem_Read( )和HAL_I2C_Mem_Write( ).
已邀请:

admin

赞同来自:

有时间帮你看看,手头暂时没有6050,倒是有一个ADXl345,都是iic通信,应该差不多吧

admin

赞同来自: 明天会更好19

刚才大致百度了一下,发现个用cubemx做的6050用的板子是F7的,不过我想过程和函数应该差不多,你可以先参考下
http://bbs.eeworld.com.cn/thread-478877-1-1.html

BG4RFF

赞同来自:

STM32的IIC硬件好像是很容易出错的

明天会更好19 - 一句话介绍

赞同来自:

我仔细调试了下,发现eeprom的某些地址可以读写,有些不可以。比如,我的源程序中是这样的,HAL_I2C_MEM_WRITE(SLAVE_ADDR, BANK_SELECT, LENGTH, DATA);  BANK_SELECT的值为0x6d,功能是选择读写的块,然后再把数据写入缓冲区HAL_I2C_MEM_WRITE(SLAVE_ADDR, I2C_RA_MEM_R_W,  LENGTH, DATA);  I2C_RA_MEM_R_W 的值为0X6F. 这种先选择块,再把数据写进缓冲的方式,根本无法读写。但如果这样:
HAL_I2C_MEM_WRITE(SLAVE_ADDR, 0x6c, LENGTH, DATA); 
HAL_I2C_MEM_READ(SLAVE_ADDR, BANK_SELECT, LENGTH,PDATA);  这样才能读写成功。是不是MPU上的eeprom不支持缓冲读写,但官方库的是使用缓冲读写的。

明天会更好19 - 一句话介绍

赞同来自: admin xazzh 何患 紫林 Slip Away

问题终于解决了,原来我的程序并没问题,问题出在,我使用的是ST-Link供电,电压偏低,要直接5V供电才能正常读写EEPROM。这么个问题,竟然让我浪费了十天的时间。

春树暮云

赞同来自:

我测量一下,我给9250供电是5V,没问题的

小贤体

赞同来自:

res=dmp_load_motion_driver_firmware();  //加载dmp固件

也是卡在这一步 您的意思是供电电压要5V?我测了一下MPU供电电压稳定3.3V 这个应该不会影响DMP功能吧?

春树暮云

赞同来自:

不会,一般都是I2C的问题,模拟I2C的时续可能不符合9250要求

要回复问题请先登录注册