博世传感器调试笔记(二)加速度及陀螺仪传感器BMI160

一.功能参数简介
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工作模式;

时间: 2024-11-03 02:49:47

博世传感器调试笔记(二)加速度及陀螺仪传感器BMI160的相关文章

博世传感器调试笔记(一)----加速度传感器BMA253

公司是bosch的代理商,最近一段时间一直在公司开发的传感器demo板上调试bosch sensor器件.涉及到的器件有7,8款,类型包括重力加速度.地磁.陀螺仪.温度.湿度.大气压力传感器等.在调试的过程中做了一些笔记,在此将其简单分享出来. BMA253是3轴12 bit加速度传感器,支持I2C/SPI两种通讯方式,其i2c设备地址0x18. 关键寄存器R0:CHIPID register ,值为 0xfa X轴加速度数据12bitr0x02:ACCD_X_LSB acc_x_lsb[3:0

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

一.    器件简介:1.    BMC 156是一款整合三轴地磁传感器与三轴(12bit)加速度传感器于一体的传感器,以BMC 150 电子罗盘模块为基础, 并与Bosch Sensortec 2x2平方毫米的加速度传感器引脚兼容.智能手机开发商可轻松将现有加速度传感器的设计升级为功能齐全的电子罗盘设计,或将电子罗盘方案简化为仅有加速度传感器的方案 2.    测量参数指标:Acceleration ranges ±2g/±4g/±8g/±16gMagnetic  ranges±1300μT

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

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

webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶着重复的基本工作,从在学校时候就养成了追究原理的习惯,从而有了这篇session的使用和说明. PS:其实有些总结的东西挺好的,想分享给大家看,而不是枯燥的代码,这东西说实话对其他人用处不大,但都被移除首页了~~ webpy中的session 下面为官方的例子,用session来存储页面访问的次数,

Tomcat调试笔记

调试笔记 在使用Tomcat过程中经常碰到问题,导致tomcat启动失败.如下↓ 由于报错太过笼统,我根本无法找出错误.后来我切换到Console视图下,看到了如下错误信息. 根据报错信息,错误原因是32bit 的Tomcat不能在AMD 64-bit的platform 上面运行,但是经过查看我发现自己的tomcat和java都是64bit的. 查看tomcat的版本号的链接:→ http://jingyan.baidu.com/article/e73e26c0c4b40024adb6a789.

JavaScript特效(调试笔记)

JavaScript特效 一.在网页上显示当前的时间日期,例如:“2016年3月26日 星期六”. js源代码: 1 function getTime() { 2 var today = new Date(); //返回当日的日期和时间. 3 var year = today.getFullYear(); //获得当前的年份 4 var month = today.getMonth() + 1; //获得当前的月份 5 var day = today.getDate(); //获得当前的日期 6

OMAPL138调试笔记

title: Linux 嵌入式使用 tags: 新建,模板,小书匠 grammar_cjkRuby: true Copyright (C) @2018 Widic Filename: File-function: Cre_ID: @ Widic 2018-1-23 Mod_ID: 三 学习过程 20170617 uart2 作为调试串口 band rate 115200 串口调试终端采用ZOC 3.开发板启动开官如下: SD卡挂载boot分区挂载在/media/mmcblk0p1 u盘挂载的方

老男孩培训视频听课笔记二(在51cto上听的)

centos 5.8 文本安装过程    引导采用默认,引导不用设置密码    网络配置,根据实际情况配置,网关是网络出口的地址,一般为wlan出口的路由器的地址或者是代理服务器的内网IP    DNS简单解说图:      主机名--时区--root密码    选择自定义系统安装包--最小化(安全方便工作,建议安装以下的组)      ·base-- 基础      ·editors-编辑器      ·development librarays--开发库      ·development

《卓有成效的程序员》----读书笔记二

六大方面对比Launchy和TypeAndRun(TAR) 对于快速启动工具,很多人都有自己的偏好,多次听到朋友介绍Launchy的好,虽然自己一直在使用着TAR,还是克制不住对于好软件的渴求,下载Launchy进行试用.很多软件都是有一个试用期的,也许新的软件确实不错,但是你习惯了以前使用的那个软件.今天就比较客观的将Launchy和TAR进行一下对比,从界面.上手速度到功能.自定义,以及软件的稳定性.占用资源进行详细的比较. [界面美观]Launchy:毫无疑问这是它的强项.1.0正式版自带