一.功能参数简介
bosch Sensortec公司推出的最新BMI160惯性测量单元将最顶尖的16位3轴超低重力加速度计和超低功耗3轴陀螺仪集成于单一封装.MI160采用14管脚LGA封装,尺寸为2.5×3.0×0.8mm3。当加速度计和陀螺仪在全速模式下运行时,耗电典型值低至950µA,仅为市场上同类产品耗电量的50%或者更低。

BMI160传感器的i2c 设备地址是 0x68(当sd0脚接地)/0x69(当sdo 脚拉高)。

二. 重要寄存器
1. 芯片ID----R0:CHIPID 寄存器 ,值为 0xd1

2.    R0x03:pmu_status--- BMI160当前工作模式/状态寄存器

3.    加速度Accelerometer field data
X轴16bit加速度数据
r0x12:ACCD_X_LSB acc_x_lsb[7:0]    bit0--bit7
r0x13:ACCD_X_MSB acc_x_msb[15:8]   bit0--bit7

Y轴16bit加速度数据
r0x14:ACCD_Y_LSB acc_y_lsb[7:0]    bit0--bit7
r0x15:ACCD_Y_MSB acc_y_msb[15:8]   bit0--bit7

Z轴16bit加速度数据
r0x16:ACCD_Z_LSB acc_z_lsb[7:0]    bit0--bit7
r0x17:ACCD_Z_MSB acc_z_msb[15:8]   bit0--bit7

4.    陀螺仪角速度数据gyroscope field data

X轴角速度数据16 BIT(LSB/°/s)
r0x0c:gyr_x_lsb[7:0]    bit0--bit7
r0x0d:gyr_x_msb[15:8]   bit0--bit7

Y轴角速度数据16 BIT(LSB/°/s)
r0x0e:gyr_y_lsb[7:0]    bit0--bit7
r0x0f:gyr_y_msb[15:8]   bit0--bit7

Z轴角速度数据16 BIT(LSB/°/s)
r0x10:gyr_z_lsb[7:0]    bit0--bit7
r0x11:gyr_z_msb[15:8]   bit0--bit7

5.    加速度量程配置寄存器r0x41:ACC_RANGE
0B0011:+-2G RANGE;0b0101+-4g;0b1000:+-8g;0b1100:+-16g

6.    控制寄存器r0x7e
0x11:set pmu mode of accelerometer to normal
0x15:set pmu mode of gyroscope to normal

7.    建议加速度及陀螺仪模块均使用系统默认参考配置
0x41----0x03 加速度量程±2g
0x40----0x28

0x42----0x28
0x43----0x00  角速度±2000°/s

三. 参考代码
1.  3轴加速度数据读取参考代码:
       i2c_write_byte(0x7e,0x11);

DelayMs(100);

x =( i2c_read_byte(0x12) &0xff)  ;
        x = x|(( i2c_read_byte(0x13) &0xff)<<8);
        if(x>0x7fff)
        {
            x = -(0xffff-x);
        }
        x = (x*9.8)/(0x8000/2);//当量程为±2g时,转换为g/s的加速度换算公式

y =( i2c_read_byte(0x14) &0xff)  ;
        y = y|(( i2c_read_byte(0x15) &0xff)<<8);
        if(y>0x7fff)
        {
            y = -(0xffff-y);
        }
        y = (y*9.8)/(0x8000/2);//当量程为±2g时,转换为g/s的加速度换算公式

z =( i2c_read_byte(0x16) &0xff)  ;        
        z = z|(( i2c_read_byte(0x17) &0xff)<<8);
        if(z>0x7fff)
        {
            z = -(0xffff-z);
        }
        z = (z*9.8)/(0x8000/2);//当量程为±2g时,转换为g/s的加速度换算公式

2.  3轴陀螺仪数据读取参考代码:
            i2c_write_byte(0x7e,0x15);
            DelayMs(100);

x =( i2c_read_byte(0x0c) &0xff)  ;
            x = x|(( i2c_read_byte(0x0d) &0xff)<<8);
            if(x>0x7fff)
            {
                x = -(0xffff-x);
            }
            x = (x*2000)/0x7fff;// range为2000dps时,转换为角速度°/s的公式

y =( i2c_read_byte(0x0e) &0xff)  ;
            y = y|(( i2c_read_byte(0x0f) &0xff)<<8);
            if(y>0x7fff)
            {
                y = -(0xffff-y);
            }
            y = (y*2000)/0x7fff;// range为2000dps时,转换为角速度°/s的公式

z =( i2c_read_byte(0x10) &0xff)  ;
            z = z|(( i2c_read_byte(0x11) &0xff)<<8);
            if(z>0x7fff)
            {
                z = -(0xffff-z);
            }
            z = (z*2000)/0x7fff; // range为2000dps时,转换为角速度°/s的公式

四. 调试注意事项

1.    默认开机后bmi160进入suspend mode,此时bmi160的加速度及陀螺仪功能均处于未工作状态。需配置R0x7e寄存器使得加速度及陀螺仪功能进入正常工作(数据采样)模式。
by default bmi160 accel and gyro are in suspend mode after powering up the device.the device is powering up in less than 10ms.

2.    每次进行加速度数据检测前,请先执行i2c_write_byte(0x7e,0x11),使得加速度模块进入normal工作模式;
3.    每次进行陀螺仪数据检测前,请先执行i2c_write_byte(0x7e,0x15) 使得陀螺仪模块进入normal工作模式;

加速度及陀螺仪传感器BMI160相关推荐

  1. [Sensor]--BMI160-加速度计、陀螺仪传感器

    最近在搞一个和加速度计相关的项目,所以接触到的传感器比较多,现在写一个总结吧,防止后来者和我一样走这么多的弯路. 首先看到的是引脚图,如果驱动不了应该首先排除硬件的问题: SPI接法 IIC接法 接着 ...

  2. 一种基于陀螺仪传感器的准确计步器算法

    一种基于陀螺仪传感器的准确计步器算法 A Gyroscope Based Accurate Pedometer Algorithm 作者:Sampath Jayalath.Nimsiri Abhaya ...

  3. 重力加速度陀螺仪传感器MPU-…

    原文地址:重力加速度陀螺仪传感器MPU-6050(一)作者:liuzhangchao MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化 为可输出的数字量.为了精确 ...

  4. 重力加速度陀螺仪传感器MPU-6050

    MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化 为可输出的数字量.为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±50 ...

  5. 维特智能蓝牙5.0加速度计陀螺仪传感器倾角电子罗盘磁力计仰卧起坐

    1.项目介绍 仰卧起坐检测项目是应用于中小学生或部队训练时,对仰卧起坐这个项目的监测.实现的功能包括以下方面: 引导用户规范动作,也就是动作必须达标才能算完成一个动作,平躺要躺平,坐起要到达90°. ...

  6. 手机中陀螺仪传感器的四大作用

    核心提示:陀螺仪传感器可以全方位的感受空间上位移的变化维较少,最早应用于航空.航天和航海等领域.随着陀螺仪传感器成本的下降,现在很多智能手机都集成有陀螺 陀螺仪传感器可以全方位的感受空间上位移的变化维 ...

  7. Android传感器之陀螺仪传感器

    代码片段,双击复制 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...

  8. 基于ZETA技术的叉车加速度状态监测传感器为叉车装上“智慧大脑”

    众所周知,叉车是工业搬运车辆,常用于仓储大型物件的运输. 随着大数据.云计算.物联网技术的不断创新发展,AGV叉车顺势兴起.如何实现叉车安全有效管理,提高人员设备工作效率及降低机器损耗率成为诸多工业. ...

  9. I2C通信之Arduino 陀螺仪传感器ITG3205

    topic I2C通信之Arduino与陀螺仪传感器ITG3205 I2C通信之Arduino与陀螺仪传感器ITG3205 转载自:https://www.geek-workshop.com/thre ...

  10. iOS平台使用陀螺仪传感器

    iOS平台使用陀螺仪传感器 在移动端开发过程中,有时候会用到陀螺仪传感器获取当前手机的姿态,下面给出iOS端如何获取陀螺仪姿态数据的代码: 1 //根据陀螺仪的四元数转换为矩阵 2 + (GLKMat ...

最新文章

  1. 如何免费(轻成本)在网上做推广宣传
  2. Struts 2创始人Patrick Lightbody看《精通Struts 2:Web 2.0开发实战 》
  3. C++成员函数指针的应用
  4. mysql group concat_MySQL 的 GROUP_CONCAT 函数详解
  5. recovery模式下支持ADB连接和串口操作
  6. 15个SaaS问答(图文并茂版)
  7. C语言实现去掉字符串中指定的字符
  8. unknown chromium error 400
  9. 三星Galaxy Note10系列国内发布会官宣:8月21日见!
  10. 上班[卒]如何面对复杂工作?
  11. 修改复选框默认的样式
  12. 我在b站学数据库 (九):函数
  13. 产品调研,如何避免「浮于表面」?
  14. 找出知晓秘密的所有专家(leetcode 2092)
  15. canvas像素操作、save与restore、合成与变形
  16. 吸烟者问题C++实现
  17. MATLAB获取屏幕大小
  18. 百度的文心一言是否可以打败ChatGPT?
  19. iOS - navigationController简单使用
  20. 数据结构与算法——左程云08

热门文章

  1. c语言编程被当作病毒,c语言编写病毒
  2. 团体程序设计天梯赛-练习集——7-9 打印学生选课清单 (25分)
  3. 首次!让我们出一个基于延迟的同行 IP 库数据评估来打个样~
  4. 基于数据挖掘的商业银行客户关系管理系统应用研究
  5. ADT下载地址(含各版本)
  6. excel宏教程_综合 | 如何使用Excel按条件高效查找数据?
  7. 原神3.2私人服务器搭建
  8. 人脸生成黑科技:实现人脸转变特效,让人脸自动戴墨镜
  9. 网络设置管理 NetSetMan Pro v4.7.1 Lite 绿色便携版
  10. python实习内容过程_实习报告