1. 环境准备与硬件连接
在开始移植MPU6050 DMP库之前,我们需要先准备好开发环境和硬件连接。我使用的是STM32F103C8T6最小系统板,搭配MPU6050模块,通过硬件I2C进行通信。开发环境是STM32CubeIDE 1.9.0,DMP库版本是motion_driver 5.1.3。
硬件连接非常简单,MPU6050的SDA和SCL引脚分别连接到STM32的PB7和PB6(I2C1),VCC和GND接3.3V和地。这里要注意,MPU6050的AD0引脚如果接地,设备地址是0x68;如果接VCC,地址是0x69。我习惯接地,所以地址是0x68。
在CubeMX中配置I2C时,我建议将I2C速度设置为标准模式(100kHz),因为MPU6050的DMP库对时序要求比较严格,太快了容易出问题。另外,记得开启I2C的中断,虽然初期调试可以不用中断,但后续优化时会用到。
2. DMP库文件移植
DMP库的移植是整个过程中最核心的部分。首先需要从InvenSense官网下载motion_driver 5.1.3版本,然后从中提取必要的文件。我通常会把以下文件复制到我的工程中:
- inv_mpu.c
- inv_mpu.h
- inv_mpu_dmp_motion_driver.c
- inv_mpu_dmp_motion_driver.h
- dmpKey.h
- dmpmap.h
这些文件放在Drivers/MPU6050文件夹下,然后在CubeIDE中添加这些文件的路径。接下来就是修改这些文件,使其适配STM32的HAL库。
首先修改inv_mpu.h,注释掉原有的MSP430相关代码,添加STM32的宏定义:
#define STM32_MPU6050
#define MPU6050
#include "main.h"
extern I2C_HandleTypeDef hi2c1;
#def


648

被折叠的 条评论
为什么被折叠?



