需求

 在医疗健康领域,有很多场景需要分析佩戴者的姿势和动作。mpu6050多轴传感器是一个不二的选择。假如想把功耗做的低一些,放在耳机里,bes2300芯片配合mpu6050是一个不错的选择。遗憾的是,这些驱动原厂并没有提供,想使用的话,就需要自己移植和写代码了。

代码解析

 这里面的代码分成两个部分,一个是mpu6050的驱动,这部分主要涉及到i2c接口的读写,以及该传感器的寄存器读写。这部分是一个整体,需要把代码移植进去即可。

其次,涉及到i2c的接口部分,该传感器要比纯温度的传感器复杂不少,所以i2c需要配置的地方比较多,一不小心就会搞错。这方面需要深入细致,笔者在这地方踩坑较多。

初始化的代码如下:

      

mpu6050_sensor_init();

//reset mpu6050
ret = sensor_write(MPU_PWR_MGMT1_REG,0x80); osDelay(100); //wake up mpu6050
ret = sensor_write(MPU_PWR_MGMT1_REG,0x00);
MPU_Set_Gyro_Fsr(3);
MPU_Set_Accel_Fsr(0);
MPU_Set_Rate(50); ret = sensor_write(MPU_INT_EN_REG,0x00); // close all irq
ret = sensor_write(MPU_USER_CTRL_REG,0x00); // i2c master closed
ret = sensor_write(MPU_FIFO_EN_REG,0x00); // close fifo mode
ret = sensor_write(MPU_INTBP_CFG_REG,0x80); //init low en
调试

  根据笔者的调试过程来看,这里面有三个技术难点:

i2c的接口是否正确:
bes2300的I2c的接口比较混乱,很多函数需要自己封装,把接口封装好了,并测试是否ok,这个是比较花费时间的地方。
MPU6050寄存器:
该传感器的寄存器比较多,需要配置的参数也不少,这个地方需要细致的配置。
调试心得:
要找两个传感对比,笔者买了两个传感器,发现一个根本无法工作,硬件作比对,比较容易发现问题。

展望

 该方案集成度高,功耗低,尺寸小等特点,所以很适合做病人的穿戴式设备研究,后面从技术上讲,就是要多加一些传感器进去,能够覆盖不同的场景。博客园虚生版权所有,谢绝抄袭。

基于bes2300 的六轴传感器mpu6050调试总结的更多相关文章

  1. Arduino101学习笔记(十三)—— 101六轴传感器

    一.相关API 1.begin:需要在其他CUIREIMU前调用 //***************************************************************** ...

  2. 如何利用小熊派获取MPU6050六轴原始数据

    摘要:使用小熊派开发板,通过硬件IIC与MPU6050六轴传感器模块通信,完成相应寄存器配置,成功获取陀螺仪.加速度计数据. 本问主要讲述使用小熊派开发板+MPU6050六轴传感器,获取加速度计以及陀 ...

  3. 六轴加速度传感器MPU6050官方DMP库到瑞萨RL78/G13的移植

    2015年的电赛已经结束了.赛前接到器件清单的时候,看到带防护圈的多旋翼飞行器赫然在列,又给了一个瑞萨RL78/G13的MCU,于是自然联想到13年的电赛,觉得多半是拿RL78/G13做四旋翼的主控, ...

  4. 【.NET 与树莓派】六轴飞控传感器(MPU 6050)

    所谓"飞控",其实是重力加速度计和陀螺仪的组合,因为多用于控制飞行器的平衡(无人机.遥控飞机).有同学会问,这货为什么会有六轴呢?咱们常见的不是X.Y.Z三轴吗?重力加速度有三轴, ...

  5. STM32—驱动六轴MPU6050输出欧拉角

    文章目录 一.MPU6050介绍 1.MPU6050与陀螺仪.加速度计的关系: 2.整体概括 3.引脚说明 4.基本配置及相关寄存器 电源管理寄存器1 陀螺仪配置寄存器 加速度计配置寄存器 FIFO使 ...

  6. 借助Visual Studio Code提高基于ActionScript的LayaAir HTML5游戏的调试效率

    借助Visual Studio Code提高基于ActionScript的LayaAir HTML5游戏的调试效率 使用Visual Studio Code(VS Code)调试的优势 借助VS Co ...

  7. 《Visual C++ 2010入门教程》系列六:VC2010常见调试技术

    <Visual C++ 2010入门教程>系列六:VC2010常见调试技术   犹豫了好久,最终还是决定开始这一章,因为我不清楚到底有没有必要写这样的一章,是应该在这里说明一些简单的调试方 ...

  8. ubuntu基于VSCode的C++编程语言的构建调试环境搭建指南

    ubuntu基于VSCode的C++编程语言的构建调试环境搭建指南 首先安装g++ sudo apt install g++ 检查是否安装成功: 在插件栏安装插件c/c++.code runner: ...

  9. [算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本

    一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...

  10. Simulink S-Function的使用(以串口接收MPU6050六轴陀螺仪参数为实例)

    S-Function 允许使用自定义C/C++函数作为传递函数,具有可移植性.也可以同样利用MATLAB函数进行相同的运算,看开发者熟悉程度而定. 项目流程 由系统串口接收数据包. 通过S-Funct ...

随机推荐

  1. GDB调试程序 [补档-2023-07-19]

    gdb调试 ​ 它是gcc的调试工具,调试工具都能干什么就不多说了. 7-1生成调试信息 ​ 在使用gcc编译c/c++的程序时,需要在编译命令中加入 -g 这一参数,它可以为你显示函数名,变量名 等 ...

  2. iOS 17.4 测试版包含大模型相关代码

    外界普遍预计苹果将在 6 月份通过 iOS 18 推出主要的新人工智能功能.不过根据 9to5Mac 的报道,他们在 iOS 17.4 第一个测试版中发现的代码表明,苹果正在开发由大语言模型技术支持的 ...

  3. 【文件】C语言文件操作及其使用总结篇【初学者保姆级别福利】

    [文件]C语言文件操作及其使用总结篇[初学者保姆级别福利] 一篇博客学好动态内存的管理和使用 这篇博客干货满满,建议收藏再看哦!! 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很 ...

  4. Oracle多租户架构之如何快速创建一个PDB

    Oracle自从12c版本开始引入多租户的架构,整个管理理念也发生了很大的变化. 比如之前再小的业务只要选择了Oracle,DBA都会选择新建一套独立的数据库,因为传统的架构只能在schema级别作区 ...

  5. gateway 是什么?

    Gateway 定义是什么? 百度百科解释: 网关(Gateway)又称网间连接器.协议转换器.网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连. 网关既可以用于广 ...

  6. react 快速接入 sentry,性能监控与错误上报踩坑日记

    壹 ❀ 引 本文是我入职第一个月所写,在主导基建组的这段时间也难免会与错误监控和性能监控打交道,因为公司主要考虑接入sentry,所以对于接入sentry的基建任务也提了一些需求,主要分为: 支持查看 ...

  7. Redis缓存相关的几个问题

    1  缓存穿透 问题描述 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力. ...

  8. join命令

    join命令 join命令用于将两个文件中,指定栏位内容相同的行连接起来.其首先找出两个文件中指定栏位内容相同的行,并加以合并,再输出到标准输出设备. 语法 join [OPTION]... FILE ...

  9. 使用 Oracle PL/SQL NOCOPY 提示

    参考文献:       official document: http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/tuning.htm#LNPL ...

  10. 关于动态抽样(Dynamic Sampling)

    关于动态抽样(Dynamic Sampling) 原文:http://www.oracle.com/technetwork/issue-archive/2009/09-jan/o19asktom-08 ...