LIS3DHTR 写驱动时遇到的两个问题
作者:互联网
LIS3DH是ST的一款三轴加速度计;TR
表示包装方式,编带包装后绕在轮盘上,便于自动贴片机使用。
I2C通信正常却读不到正确的加速度值
- 判断I2通信正常是通过从
WHO_AM_I(0x0F)
能读出0x33
。 - 读取加速度值是发送地址
OUT_X_L(0x28)
后连读6个字节,却没有读正确(意料之外的数据)。
- 确认了三轴也有使能。
- 结果是I2C通信协议和LSM6DS3TR有点区别。连读的时候需要将寄存器地址最高位置
1
,后面的地址才会自增。
加速度换算的问题
- 在
±2g
量程Normal Mode
下,手册给出的单位是mg/digit
,这个digit
百思不得其解。
- 根据这个表格,在不同模式下ADC使用了不同位数(位数越少功耗越低),随着量程增大(±2/4/8/16g),ADC的分辨率越低。
- 推测这个
mg/digit
对应的是在确定模式确定量程下AD值变化1对应的加速度变化值,但实际通信中总是16位的AD值,所以不管内部AD是几位,最终都会映射到16位AD值,实际的转换系数为量程(2/4/8/16) *2*1000/65536
,单位是mg/LSB
(手册里的digit
意思应该同LSB
)。
标签:digit,量程,AD,遇到,16,mg,加速度,驱动,LIS3DHTR 来源: https://blog.csdn.net/hxiaohai/article/details/104060560