mpu6050_stm32hal库 使用软件iic和硬件iic(完整代码已上传到github)

源工程文件

github:kitor-ch/mpu6050_for_stm32https://github.com/kitor-ch/mpu6050_for_stm32

mpu6050简介

mpu6050是有美国invenSense公司生产的一款传感器芯片,自带dmp(digital  motion processor)数字运动处理器,有了它能够减少对mcu的资源消耗

mpu是六轴传感器,三轴陀螺仪角速度传感器,三轴角加速度传感器,还附带一个温度传感器

实物图:

引脚功能:

vcc      3.3-5v供电点

gnd     接电源地

SDA    从机iic时钟线(接mcu)

SCL  从机iic数据线(接mcu)

XCL     辅助iic时钟线(可接其他磁力传感器组成九轴传感器)

XDA     辅助iic时钟线(可接其他磁力传感器组成九轴传感器)

ADO  mpu6050 iic地址(iic地址高七位固定,最后因为由ado引脚确定,内接一个下来电阻,默认为0,即 iic地址为0x68,接高电平则为0x69)

int  mpu6050中断输出引脚,当mpu6050配置为开启中断,有可用数据时会产生一个电平翻转(中断信号)

mpu_6050  软件iic驱动

该工程使用正点原子的atk mpu6050驱动的代码移植过来,(atk mpu6050传感器模块的芯片也是mpu6050,把代码修改一些就可以使用在我们的模块上)

这个默认配置为mpu6050 fifo(mpu6050数据first in first out)关闭,禁能中断

完整工程文件和驱动文件已经放到github上,移植教程在附带的readme文档中

tips:

正点原子的代码比较简洁,可读性比较强,编译后的代码也才19k左右,用stm32f103c6t6也能跑

mpu_6050  硬件iic驱动

这个工程是使用传感器官方的驱动库,代码功能很完整,但编码风格比较难懂,可读性较差,

编译出来的代码大概34k,超过了c6t6的容量,c6t6跑不动

这个工程内默认配置为fifo开启

完整工程文件和驱动文件已经放到github上,移植教程在附带的readme文档中

 (不知道为啥放了图片会倒过来,先将就着看吧,csdn还用不习惯 .......)

附录:

mpu_6050  软件iic驱动     参考正点原子的atk mpu6050例程

六轴传感器模块ATK-MPU6050 — 正点原子资料下载中心 1.0.0 文档 (openedv.com)

mpu_6050  硬件iic驱动   参考B站up主  nxcosa

STM32 硬件I2C MPU6050 官方DMP6.12移植 开启FIFO和中断_哔哩哔哩_bilibili

陀螺仪原理:

在学习mpu6050时了解到陀螺仪,深入学习,做一下笔记

一个高速转动的物体有两个性质

1,定轴性

高速转动的物体抵御一切改变其轴心位置的力,这也是为什么我们骑自行车的时候不容易倒的原因

2,进动性

当一个力作用于轴心时,陀螺仪并不会沿该方向运动,而是沿顺着力的方向沿旋转方向转动90度,(进动性的方向),方向的判断可以用右手定则,这意思为什么,顺时针(俯视方向)转动的陀螺,到最后时(转速不足,开始倾斜,重力不再沿着轴心方向,将重力分解为沿轴心方向和垂直轴的方向,在根据右手定则确定其进动方向)会顺时针转动,逆时针(俯视方向)转动的陀螺,到最后时会逆时针转动

当然这个不是mpu6050陀螺仪的原理,而是关于电路的原理;

感兴趣的可可以看下面的视频了解一下

陀螺仪的工作原理是什么?手机中的陀螺仪,是一个微型陀螺吗?_哔哩哔哩_bilibili

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
使用STM32 HAL库进行IIC驱动MPU6050时,可以按照以下步骤进行配置和初始化: 1. 首先,添加所需的头文件,包括"oled.h"、"mpu6050.h"、"control.h"、"inv_mpu.h"和"inv_mpu_dmp_motion_driver.h"。\[1\] 2. 在初始化函数中,调用MX_I2C1_Init()函数来初始化IIC总线。\[2\] 3. 调用mpu_init()函数来初始化MPU6050。如果返回值为0,则表示初始化成功。\[2\] 4. 使用mpu_set_sensors()函数设置所需的传感器,例如陀螺仪和加速度计。\[2\] 5. 使用mpu_configure_fifo()函数设置FIFO,以确定传感器数据的存储方式。\[2\] 6. 使用mpu_set_sample_rate()函数设置采样率。\[2\] 7. 调用dmp_load_motion_driver_firmware()函数加载DMP固件。\[2\] 8. 使用dmp_set_orientation()函数设置陀螺仪方向。\[2\] 9. 使用dmp_enable_feature()函数设置DMP功能,例如姿态、敲击和原始数据的发送。\[2\] 10. 使用dmp_set_fifo_rate()函数设置DMP输出速率。\[2\] 11. 调用run_self_test()函数进行自检。\[2\] 12. 使用mpu_set_dmp_state()函数使能DMP。\[2\] 13. 在相关初始化函数定义之后,添加循环代码,通过mpu_dmp_get_data()函数获取角度数据,并进行相应的处理和输出。\[3\] 14. 最后,根据需要添加延时函数,以控制数据的采样频率。\[3\] 以上是使用STM32 HAL库进行IIC驱动MPU6050的基本步骤。根据具体的应用需求,你可能需要进行一些额外的配置和修改。 #### 引用[.reference_title] - *1* *2* *3* [HAL库 STM32CubeMX----SPI驱动OLED 与 IIC驱动MPU6050](https://blog.csdn.net/weixin_62213694/article/details/125018662)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值