LIS3DHTR 写驱动时遇到的两个问题

本文深入探讨了LIS3DHTR三轴加速度计在I2C通信中的特殊协议要求,以及如何正确读取和换算加速度值。分析了在不同模式和量程下ADC位数的影响,并提供了实际通信中加速度值的计算方法。

LIS3DH是ST的一款三轴加速度计;TR表示包装方式,编带包装后绕在轮盘上,便于自动贴片机使用。


I2C通信正常却读不到正确的加速度值

  1. 判断I2C通信正常是通过从WHO_AM_I(0x0F)能读出0x33WHO_AM_I
  2. 读取加速度值是发送地址OUT_X_L(0x28)后连读6个字节,却没有读正确(意料之外的数据)。
    OUT_X_L
  3. 确认使能了三轴。
    CTRL_REG1
  4. 结果是I2C通信协议和LSM6DS3TR有点区别。连读的时候需要将寄存器地址最高位置1,后面的地址才会自增。MSBMSB

加速度换算的问题

  1. 在量程为±2g,模式为Normal Mode情况下,手册给出的灵敏度典型值是4mg/digit,这个digit百思不得其解。
    mg/digit
  2. 根据下面这个表格,在不同模式下芯片内部的ADC使用了不同位数来采集加速度值(位数越少功耗越低),随着量程增大(±2/4/8/16g),ADC的分辨率越低。
    digit
  3. 推测这个mg/digit对应的是,在确定模式、确定量程下,AD值变化1对应的加速度变化值。但实际通信中传感器返回的单个轴的加速度总是16位的AD值,所以不管内部AD是几位,最终都会映射到16位AD值,实际的转换系数为量程(2/4/8/16) *2*1000/65536,单位是mg/LSB(手册里的digit意思应该同LSB)。

2020年3月16日02:00:27 发现LIS3DHTR的Click事件无法在INT1上产生中断信号,如果有实现的烦请指教。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值