STM32 硬件I2C读写MPU6050

本文代码基于 STM32 单片机,通过 I2C 总线驱动 MPU6050 六轴传感器(集成加速度计与陀螺仪),实现传感器初始化、ID 读取、原始数据采集,并借助 OLED 显示屏实时展示加速度(AccX、AccY、AccZ)与角速度(GyroX、GyroY、GyroZ)信息,为姿态检测、运动监测等应用提供基础数据支撑。

通过宏定义传感器内部寄存器地址,简化代码中寄存器操作,避免硬编码,提升可读性与可维护性。

写寄存器:

生成 I2C 起始信号,选择从机地址( MPU6050_ADDRESS )。

发送寄存器地址、写入数据,通过 MPU6050_WaitEvent 等待通信完成。

生成停止信号,完成写操作。

读寄存器:

先写操作发送寄存器地址(告知传感器要读取的数据位置)。

切换为读模式,再次生成起始信号,读取传感器返回数据。

禁用 ACK、生成停止信号,完成读操作。

初始化与数据采集:

使能 I2C 与 GPIO 时钟( RCC_APB1PeriphClockCmd ),配置 PB10/PB11 为 I2C 复用开漏模式。

初始化 I2C 外设(时钟、应答、地址模式等),设置传感器工作参数(如电源管理、采样率):

MPU6050_WriteReg(MPU6050_PWR_MGMT_1, 0x01); 唤醒传感器,选择时钟源

MPU6050_GetData :逐次读取加速度

相关推荐
liwulin050644 分钟前
【ESP32-S3】通过ROS2使用YDLIDAR X2进行SLAM、自主导航方案选择
单片机·嵌入式硬件
Truffle7电子1 小时前
STM32理论 —— FreeRTOS:任务
stm32·嵌入式·rtos
廷华电子2 小时前
SSI接口板设计
stm32·电机控制
是翔仔呐2 小时前
第11章 显示外设驱动:I2C协议OLED屏、SPI协议LCD屏字符/图片/中文显示
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
-凌凌漆-4 小时前
【嵌入式】FreeRTOS串口等待vTaskDelay()
嵌入式硬件
小昭在路上……4 小时前
GPIO端口引脚(位域)打包技巧笔记
单片机·嵌入式硬件
是翔仔呐4 小时前
第13章 SPI通信协议全解:底层时序、4种工作模式与W25Qxx Flash芯片读写实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
悠哉悠哉愿意4 小时前
【单片机复习笔记】第十六届省赛复盘
笔记·单片机·嵌入式硬件
IT方大同5 小时前
RT_thread(RTOS实时操作系统)线程的创建与切换
c语言·开发语言·嵌入式硬件
是翔仔呐5 小时前
第14章 CAN总线通信全解:底层原理、帧结构与双机CAN通信实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee