MPU 系列驱动

https://invensense.tdk.com/
https://invensense.tdk.com/products/motion-tracking/6-axis/mpu-6500/

资源说明

嵌入式运动驱动库

资源链接:https://download.csdn.net/download/u013564470/72124800
资源说明:

  • 硬件校准陀螺数据输出
  • MPU-6050/MPU-9150 运动中断支持
  • MPU-6500 运动唤醒支持
  • 可以从 6 轴四元数中去除加速度偏差
  • DMP驱动

InvenSense 嵌入式运动跟踪器驱动程序 5.1.3 eMD 5.1.3
Invensense 嵌入式运动跟踪器驱动程序 6.12 eMD 6.12
运动链接用户手册 Motion Link User Manual Version 2.0

DataSheet 手册

资源链接: https://download.csdn.net/download/u013564470/72129581
资源说明:
TDK-InvenSense 运动传感器通用评估板 (UEVB) 用户指南

  • TDK-InvenSense Motion Sensor Universal Evaluation Board (UEVB) User Guide
  • AN-IVS-0001EVB-00

MPU-6500 寄存器映射和描述修订版 2.1
开发时用的IC为MPU6500,需要其他版本的官网下载即可。

  • MPU-6500 Register Map and Descriptions Revision 2.1
  • RM-MPU-6500A-00
    Motion Sensors Introduction

MPU-6500 产品规格修订版 1.3

  • MPU-6500 Product Specification Revision 1.3

运动传感器介绍
主要介绍四元数的计算

  • Motion Sensors Introduction

另外有3个MPU系列手册的中文翻译,英语不好童鞋的福音。

移植说明

核心文件

对于想要MPU驱动,以及DMP功能的童鞋来说。只需要移植如下目录:

eMPL
├── dmpKey.h
├── dmpmap.h
├── inv_mpu.c
├── inv_mpu_dmp_motion_driver.c
├── inv_mpu_dmp_motion_driver.h
└── inv_mpu.h

移植之后需要根据自己的主控修改对应接口,需要修改的接口如下:

i2c_write(unsigned char slave_addr, unsigned char reg_addr,unsigned char length, unsigned char const *data)
i2c_read(unsigned char slave_addr, unsigned char reg_addr,unsigned char length, unsigned char *data)
delay_ms(unsigned long num_ms)
get_ms(unsigned long *count)
reg_int_cb(void (*cb)(void), unsigned char port, unsigned char pin)
labs(long x)
fabsf(float x)
min(int a, int b)

DMP说明

启动流程

  1. 调用 dmp_load_motion_driver_firmware()。这会将 inv_mpu_dmp_motion_driver.h 中的 DMP 图像推送到 MPU 内存中。
  2. 将陀螺和加速度方向矩阵推到 DMP。
  3. 注册手势回调。别担心,除非启用了相应的功能,否则这些回调不会被执行。
  4. 调用 dmp_enable_feature(mask) 以启用不同的功能。
  5. 调用 dmp_set_fifo_rate(freq) 以选择 DMP 输出速率。
  6. 调用任何特定于功能的控制功能。
    这里以移植到ESP32为例:
/******************** MPU DMP 初始化 ********************/
struct int_param_s int_param;
ESP_ERROR_CHECK(mpu_init(&int_param));
ESP_ERROR_CHECK(mpu_set_sensors(INV_XYZ_GYRO | INV_XYZ_ACCEL));
ESP_ERROR_CHECK(mpu_configure_fifo(INV_XYZ_GYRO | INV_XYZ_ACCEL));                        //设置FIFO
ESP_ERROR_CHECK(mpu_set_sample_rate(200));                                                //设置采样率
ESP_ERROR_CHECK(dmp_load_motion_driver_firmware());                                       //加载dmp固件
ESP_ERROR_CHECK(dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation))); //设置陀螺仪方向
ESP_ERROR_CHECK(dmp_enable_feature(DMP_FEATURE_6X_LP_QUAT | DMP_FEATURE_SEND_RAW_ACCEL | DMP_FEATURE_SEND_CAL_GYRO));
ESP_ERROR_CHECK(dmp_set_fifo_rate(200)); //设置DMP输出速率(最大不超过200Hz)

以下是inv_mpu_dmp_motion_driver.c 中提供的 DMPimage 支持的功能的简短摘要:

DMP_FEATURE_LP_QUAT          :在 DMP 上以 200Hz 生成仅陀螺仪的四元数。以更高的速率集成陀螺仪数据可减少数值误差(与在 MCU 上以较低的采样率集成相比)。
DMP_FEATURE_6X_LP_QUAT       :在 DMP 上以 200Hz 生成陀螺仪/加速度四元数。不能与 DMP_FEATURE_LP_QUAT 结合使用。
DMP_FEATURE_TAP              :检测沿 X、Y 和 Z 轴的敲击。
DMP_FEATURE_ANDROID_ORIENT   :谷歌的屏幕旋转算法。在屏幕应旋转的四个方向触发事件。
DMP_FEATURE_GYRO_CAL         :八秒无运动后校准陀螺仪数据。
DMP_FEATURE_SEND_RAW_ACCEL   :将原始加速度计数据添加到 FIFO。
DMP_FEATURE_SEND_RAW_GYRO    :将原始陀螺数据添加到 FIFO。
DMP_FEATURE_SEND_CAL_GYRO    :将校准的陀螺仪数据添加到 FIFO。不能与 DMP_FEATURE_SEND_RAW_GYRO 结合使用。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 在STM32系列中使用MPU6050时,需要注意一些配置和连接的问题。首先,MPU6050有8个引脚,其中AD0引脚用于设置MPU6050的地址,接地时地址为0x68,接高电平时地址为0x69。另外,XCL和XDA引脚用于外接传感器,如果没有外接传感器可以悬空。而SCL和SDA引脚可以使用PB8和PB9来软件模拟IIC,也可以使用STM32自带的硬件IIC。\[2\] 在使用MPU6050时,有些人可能会遇到奇怪的问题,比如读取到的器件地址不是0x68而是0x98。这可能是因为使用了某种型号的MPU-6050模块,而这种模块存在一些问题。虽然有人能够读取到数据,但也有人读取不到或者不确定读取到的数据是否正确。然而,目前还没有找到解释这个现象的资料。因此,建议避免购买这种模块。\[3\] 总结来说,在使用STM32系列中的MPU6050时,需要注意正确的引脚连接和配置,以及避免使用存在问题的MPU-6050模块。 #### 引用[.reference_title] - *1* *3* [([HAL库]STM32F1系列使用MPU6050(初级使用))](https://blog.csdn.net/GBHJGHJGHJ/article/details/130129596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [四轮两驱小车(三):STM32驱动MPU6050进行转弯](https://blog.csdn.net/weixin_51651698/article/details/128757476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盗版摩羯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值