一、引言
在Linux或者Android系统下,我们往往通过sysfs节点读出来的是传感器的原始数据,那如何进行转换呢,本文进行简单介绍。
二、数据转换
2.1 ACC数据转换
以SMI的sensor为例, ACC 加速度位数是 16bit,Gyro 角速度位数是 16bit。
加速度原始数据有 16 位(包含MSB+LSB组成16bit有效数据), 其中最高位为正负位(负数需要取反),获取到的 16bit 数据,根据选定的量程 Range,确定Resolution 值后,来计算 Acc Value。
如Range 为±2g,对应的 Resolution 为 16384LSB/g,比如获取到的16bit 数值为 0x7FFF(0111 1111 1111 1111), 转化为十进制数为 32767, 则加速度值为:Acc Value= 32767/16384=2g
2.2 角速度数据转换
角速度原始数据有 16 位(包含MSB+LSB组成16bit有效数据), 其中最高位为正负位(负数需要取反),获取到的 16bit 数据,根据选定的量程 Range,确定Resolution 值后,来计算 Gyro Value。
如 Range 为±125°/s,对应的 Resolution 为 262.14 LSB/°/s,比如获取到的 16bit 数值为 0x7FFF(01111111 11111111),转化为十进制数为 32767, 则角速度值为:
32767 / 262.14 = 124.99,约等于125°/s