一.功能参数简介
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. 博世传感器调试笔记(一)----加速度传感器BMA253

    公司是bosch的代理商,最近一段时间一直在公司开发的传感器demo板上调试bosch sensor器件.涉及到的器件有7,8款,类型包括重力加速度.地磁.陀螺仪.温度.湿度.大气压力传感器等.在调试 ...

  2. 博世传感器调试笔记(三)加速度及地磁传感器BMC156

    一.    器件简介:1.    BMC 156是一款整合三轴地磁传感器与三轴(12bit)加速度传感器于一体的传感器,以BMC 150 电子罗盘模块为基础, 并与Bosch Sensortec 2x ...

  3. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  4. Tomcat调试笔记

    调试笔记 在使用Tomcat过程中经常碰到问题,导致tomcat启动失败.如下↓ 由于报错太过笼统,我根本无法找出错误.后来我切换到Console视图下,看到了如下错误信息. 根据报错信息,错误原因是 ...

  5. JavaScript特效(调试笔记)

    JavaScript特效 一.在网页上显示当前的时间日期,例如:“2016年3月26日 星期六”. js源代码: function getTime() { var today = new Date() ...

  6. webpy使用笔记(二) session/sessionid的使用

    webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...

  7. 重力加速度陀螺仪传感器MPU-6050(一)

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

  8. Android的重力传感器(3轴加速度传感器)简单实例

    重力感应主要是依靠手机的加速度传感器(accelerometer)来实现 在Android的开发中一共有八种传感器但是不一定每一款真机都支持这些传感器.因为很多功能用户根本不care的所以可能开发商会 ...

  9. 与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API

    原文:与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API [索引页][源码下载] 与众不同 windows phone (19) - Dev ...

随机推荐

  1. "重力锁屏"Beta版使用说明

    一.产品介绍 重力锁屏是基于android系统的一款锁屏软件.它利用重力感应器来判断用户的动作从而自动锁屏亮屏,是锁屏软件的一大创新.相比传统的锁屏软件,“重力锁屏”从可操作性.方便性.功能全面性都有 ...

  2. bata4

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组 ...

  3. Centos7 虚拟机复制后网卡问题 Job for network.service failed

    在运行“/etc/init.d/network restart”命令时,出现错误“Job for network.service failed. See 'systemctl status netwo ...

  4. PHP 更改session存储方式为Redis

    前言: 服务器默认的session存放方式是file.当客户端发送请求带有PHPSESSID时是顺序的去比对session存储文件,如果有5000个session文件,那就有可能需要比对4998次那么 ...

  5. 通过Get-Group导出组的成员

    导出组邮箱的前十个成员,需要注意的是: Get-Group没有Get-GroupMember命令,但是在结果中有一个Members的属性,这个属性包含了所有子成员的对象,用循环将它们列出来即可.有点对 ...

  6. CGOS 8 备用交换机(割点)

    题目链接:http://cojs.tk/cogs/problem/problem.php?pid=8 题意:n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接.因电子设备容易损坏 ...

  7. SpringBoot(十三)_springboot上传Excel并读取excel中的数据

    今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...

  8. eclipse 导入 gradle 项目遇到 UnsupportedConfigurationException 异常

    异常描述: org.eclipse.buildship.core.UnsupportedConfigurationException: Project at 'D:\XXXX_workspace\XX ...

  9. UpdateBatch到底是怎么用的?

    要使用ADOQuery的UpdateBatch函数,必须将ADOQuery的LockType属性设置成ltBatchOptimistic

  10. 小试javascript模版mustache

    夜以深,人未眠,本该入睡,然逢周末,无聊甚哉,故于此作文打发时间----------- 前几日,无聊,小试了下javascript版本的mustache模版,说是小试,其实主要目的是阅读学习其源码.如 ...