1. 程式人生 > >博世傳感器調試筆記(一)----加速度傳感器BMA253

博世傳感器調試筆記(一)----加速度傳感器BMA253

cti 帶寬 配置 acc pmu 轉換 氣壓 檢測 dem

公司是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 bandwidth:
?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的加速度換算公式

註意:傳感器的精確度跟環境溫度等有密切的關系,如果希望獲取準確的數據,需要進行溫度補償等操作,在此並未涉及。

博世傳感器調試筆記(一)----加速度傳感器BMA253