主题 | 内容 | 教学目的/扩展视频 |
---|---|---|
加速度传感器 | 电路连接。手册分析。驱动程序,读出数据。 | 能读出3轴数据。 |
师从洋桃电子,杜洋老师
▲ 回顾上期MPU6050模块详解:从原理到STM32驱动指南(上) | 零基础入门STM32第八十九步
MPU6050驱动程序的核心是通过I2C总线与芯片通信,读写内部寄存器实现功能配置和数据采集。其核心流程包括:
• 初始化配置:设置量程、采样率、滤波参数等
• 数据采集:读取加速度、陀螺仪原始数据寄存器
• 数据处理:原始数据转换与实际物理量计算
特性 | MPU6050 | MPU6000 |
---|---|---|
接口 | I2C(400kHz) | SPI(20MHz)/I2C |
逻辑电平 | 独立VLOGIC引脚 | 共用VDD供电 |
封装尺寸 | 4x4x0.9mm QFN | 相同封装 |
应用场景 | 消费电子、穿戴设备 | 工业级应用 |
• 9轴数据融合:3轴陀螺仪 + 3轴加速度计 + 外接磁力计
• 数字运动处理器(DMP):硬件级姿态解算
• 可编程配置:
• 陀螺仪量程:±250°/s ~ ±2000°/s
• 加速度计量程:±2g ~ ±16g
• 数字低通滤波器可调
#define SMPLRT_DIV 0x19 // 采样率分频器
#define CONFIG 0x1A // 配置寄存器
#define GYRO_CONFIG 0x1B // 陀螺仪配置
#define ACCEL_CONFIG 0x1C // 加速度计配置
#define FIFO_EN 0x23 // FIFO使能
#define INT_PIN_CFG 0x37 // 中断引脚配置
#define ACCEL_XOUT_H 0x3B // 加速度X轴高字节
#define GYRO_XOUT_H 0x43 // 陀螺仪X轴高字节
#define PWR_MGMT_1 0x6B // 电源管理
// 设置量程为±2000°/s
writeByte(MPU6050_ADDR, GYRO_CONFIG, 0x18);
位域解析:
[7-5] X/Y/Z轴自检
[4-3] FS_SEL:00(±250), 01(±500), 10(±1000), 11(±2000)
// 唤醒设备,选择时钟源
writeByte(MPU6050_ADDR, PWR_MGMT_1, 0x01);
时钟源选择:
000: 内部8MHz RC振荡器
001: PLL with X轴陀螺仪参考
void readRawData(int16_t* accel, int16_t* gyro){
uint8_t buffer[14];
readBytes(MPU6050_ADDR, ACCEL_XOUT_H, 14, buffer);
accel[0] = (buffer[0]<<8) | buffer[1]; // X轴加速度
accel[1] = (buffer[2]<<8) | buffer[3]; // Y轴加速度
accel[2] = (buffer[4]<<8) | buffer[5]; // Z轴加速度
gyro[0] = (buffer[8]<<8) | buffer[9]; // X轴陀螺仪
gyro[1] = (buffer[10]<<8) | buffer[11]; // Y轴陀螺仪
gyro[2] = (buffer[12]<<8) | buffer[13]; // Z轴陀螺仪
}
加速度转换(以±2g量程为例):
实际值(g) = 原始值 / 16384
陀螺仪转换(以±2000°/s量程为例):
角速度(°/s) = 原始值 / 16.4
void initMPU6050(){
writeByte(MPU6050_ADDR, PWR_MGMT_1, 0x00); // 解除休眠
writeByte(MPU6050_ADDR, SMPLRT_DIV, 0x07); // 1kHz/(7+1)=125Hz
writeByte(MPU6050_ADDR, CONFIG, 0x06); // 5Hz低通滤波
writeByte(MPU6050_ADDR, GYRO_CONFIG, 0x18); // ±2000°/s
writeByte(MPU6050_ADDR, ACCEL_CONFIG, 0x10); // ±8g
}
[1] 洋桃电子B站课程-STM32入门100步
[2] STM32官方文档手册
[3] STM32F103固件函数库用户手册(中文)
[4] MPU6050(加速度传感器)数据手册
[5] MPU6050原始数据显示程序
[6] MPU6050原理与驱动.pptx
下期预告:下一期将探讨MPU6050驱动程序分析2,欢迎持续关注!
点击查阅往期【STM32专栏】文章
版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志:
- v1.0 初始版本(2025-03-31)