zoukankan      html  css  js  c++  java
  • 博世传感器调试笔记(一)----加速度传感器BMA253

    公司是bosch的代理商,最近一段时间一直在公司开发的传感器demo板上调试bosch sensor器件。涉及到的器件有7,8款,类型包括重力加速度、地磁、陀螺仪、温度、湿度、大气压力传感器等。在调试的过程中做了一些笔记,在此将其简单分享出来。

    BMA253是3轴12 bit加速度传感器,支持I2C/SPI两种通讯方式,其i2c设备地址0x18。

    关键寄存器
    R0:CHIPID register ,值为 0xfa

    X轴加速度数据12bit
    r0x02:ACCD_X_LSB acc_x_lsb[3:0]    bit4--bit7
    r0x03:ACCD_X_MSB acc_x_msb[11:4]   bit0--bit7


    Y轴加速度数据12bit
    r0x04:ACCD_Y_LSB acc_y_lsb[3:0]    bit4--bit7
    r0x05:ACCD_Y_MSB acc_y_msb[11:4]   bit0--bit7

    Z轴加速度数据12bit
    r0x06:ACCD_Z_LSB acc_z_lsb[3:0]    bit4--bit7
    r0x07:ACCD_Z_MSB acc_z_msb[11:4]   bit0--bit7

    测量范围:
    Register 0x0F (PMU_RANGE)
    The register allows the selection of the accelerometer g-range.
    range<3:0>:Selection of accelerometer g-range:
     ́0011b ́  ±2g range;  ́0101b ́  ±4g range;  ́1000b ́  ±8g range;
     ́1100b ́  ±16g range; all other settings  reserved (do not use)


    带宽(数据输出频率)
    Register 0x10 (PMU_BW)
    The register allows the selection of the acceleration data filter bandwidth.
    bw<4:0>:Selection of data filter band
     ́00xxxb ́  7.81 Hz,
     ́01000b ́  7.81 Hz,  ́01001b ́  15.63 Hz,
     ́01010b ́  31.25 Hz,  ́01011b ́  62.5 Hz,  ́01100b ́  125 Hz,
     ́01101b ́  250 Hz,
     ́01110b ́  500 Hz,  ́01111b ́  1000 Hz,
     ́1xxxxb ́  1000 Hz

    寄存器参考配置:
    0x0F------0x03 (PMU_RANGE检测范围±2g)
    0x10------0x0A (PMU_BW滤波带宽 31.25HZ)

    3轴加速度数据读取参考代码:
    x =( i2c_read_byte(0x02) &0xf0) >>4 ;
        x = x|(( i2c_read_byte(0x03) &0xff)<<4);
        if(x>0x7ff)
        {
            x = -(0xfff-x);
        }
        x = (x*9.8)/(0x800/2); //当量程为±2g时,转换为g/s的加速度换算公式

        y =( i2c_read_byte(0x04) &0xf0) >>4 ;
        y = y|(( i2c_read_byte(0x05) &0xff)<<4);
        if(y>0x7ff)
        {
            y = -(0xfff-y);
        }
        y = (y*9.8)/(0x800/2); //当量程为±2g时,转换为g/s的加速度换算公式


        z =( i2c_read_byte(0x06) &0xf0) >>4 ;
        z = z|(( i2c_read_byte(0x07) &0xff)<<4);
        if(z>0x7ff)
        {
            z = -(0xfff-z);
        }
        z = (z*9.8)/(0x800/2); //当量程为±2g时,转换为g/s的加速度换算公式

    注意:传感器的精确度跟环境温度等有密切的关系,如果希望获取准确的数据,需要进行温度补偿等操作,在此并未涉及。

  • 相关阅读:
    【嵌入式开发】写入开发板Linux系统-模型S3C6410
    大约cocos2d-X 3.x使用引擎版本自带的物理引擎Physics
    它们的定义PropertyPlaceHolder无法完成更换任务
    [Cocos2d-x]在Cocos2d-x 3.x如何通过版本号WebSocket连接server数据的传输
    Java 内存架构
    类似的微博推断客户关系sql声明
    Kienct与Arduino学习笔记(2) 深度图像与现实世界的深度图的坐标
    etl工具,kettle实现了周期
    Android中自定义checkbox样式
    ndroid网络(4):HttpClient必经之路----使用线程安全的单例模式HttpClient,及HttpClient和Application的融合
  • 原文地址:https://www.cnblogs.com/cyyljw/p/7594910.html
Copyright © 2011-2022 走看看