因为工作的需求,现在接触了百度智能手环的开源代码,其中三轴就使用了LIS3DH,但其中有一些小问题不太明白。如下图: 这里的数据是从FIFO读出的,可为什么人FIFO读出来的数据要进行移位操作呢?不明白,求解!
真实值应该是读到的16bit的数据再右移4位才对。
代码里只右移了3位,说明得到的这个数值是真实值的两倍。
置于为啥是3不是4,可能人家要的是2倍而非原始值吧。
1:数据存储在高位,且未用满。需要将数据右移;
2:数据是整字节的,通过右移可以简单的滤除抖动:
你可能需要配合芯片数据寄存器手册帮助理解。