7.3、LSM6DSL硬件功能
文章目录
7.3.1、LSM6DSL工作模式
LSM6DSL里的陀螺仪和加速度计有互相独立的开关和ODR.且提供了 3 种可能的操作配置:
- 只有加速度计工作,陀螺仪下电
- 只有陀螺仪工作,加速度计下电
- 加速度计和陀螺仪均工作,且具有独立的 ODR
加速度计和陀螺仪可分别配置为四种不同的功耗模式:掉电,低功耗,正常和高性能模式。它们可以具有不同的数
据率而不受任何限制。陀螺仪传感器还能够设置为睡眠模式,以降低其功耗。
7.3.1.1、掉电模式
内部几乎所有模块断开,但是IIC/SPI继续工作,配置寄存器值保留,但是数据寄存器值不更新,可保存进入掉电模式前存储器中采样的最后数据.
7.3.1.2、低功耗模式
该模式下,低速ODR使能,可选ODR,1.6 Hz、 12.5 Hz、 26 Hz 和 52 Hz。
数据中断时激活的.
7.3.1.3、正常模式
加速度计/陀螺仪数据读取链自动打开和关闭,以便节能。在陀螺仪模块中,只有驱动电路是始终工作的。
数据中断产生是激活的
7.3.1.4、高性能模式
高性能模式下,所有的加速器/陀螺仪电路始终接通,并通过 ODR_XL/ODR_G 位来选择生成数据的数据率。
数据中断产生是激活的
7.3.1.5、陀螺仪睡眠模式
当陀螺仪处于睡眠模式时,陀螺仪模块的振荡驱动电路保持激活。相比于陀螺仪下电模式,从睡眠模式到低功耗/正常/高性能模式的打开时间大幅度减少。
如果陀螺仪未被配置为下电模式,则当 CTRL4_C 寄存器的睡眠模式使能(SLEEP)位被置为 1 时,不论所选陀螺仪 ODR 为何,它都将进入睡眠模式。
7.3.2、LSM6DSL嵌入式功能
如果不在意功耗的话,可以开启芯片内部的一些专用模块(只使用加速度计)可实现以下功能.
- 计步功能(步伐侦测和步数计算);
- 大幅运动检测;
- 相对倾斜;
- 绝对手腕倾斜;
- 时间戳.
所有功能工作于26HZ,所以加速度计ODR必须设定为26HZ或者更高.
这些功能在AN5050手册里面都有具体的使用方法(寄存器).
7.3.3、LSM6DSL中断
LSM6DSL 器件中,中断产生仅以加速度计数据为基础,因此要产生中断,加速度计传感器必须设置为活动工作模式(不能处于下电模式);陀螺仪传感器可配置为下电模式,因为它与中断产生无关。
可对中断发生器进行配置,来检测:
- 自由落体;
- 唤醒;
- 6D/4D 方向检测;
- 单击和双击感测;
- 活动/不活动识别。
此外, LSM6DSL 能够高效运行 Android 中特定的传感器相关功能,可节能并具有更快的反应速度。以下功能仅在使用加速度计的硬件中实现:
- 大幅运动检测;
- 相对倾斜;
- 绝对手腕倾斜;
- 计步功能;
- 时间戳
这些信号和FIFO的中断信号都可以被独立的设定到INT1和INT2中断引脚,通过特定的寄存器分别检测.
INT1引脚通过配置MD1_CFG(5Eh)和INT1_CTRL(0Dh)来选择,其中INT1引脚支持如下中断.
- INT1_STEP_DETECTOR: INT1 上计步器步伐检测中断
- INT1_SIGN_MOT: INT1 上大幅运动中断
- INT1_FULL_FLAG: INT1 上 FIFO 全满标志中断
- INT1_FIFO_OVR: INT1 上 FIFO 溢出标志中断
- INT1_FTH: INT1 上 FIFO 阈值中断
- INT1_BOOT: INT1 上启动中断
- INT1_DRDY_G: INT1 上陀螺仪数据准备就绪
- INT1_DRDY_XL: INT1 上加速度计数据准备就绪
- INT1_INACT_STATE: INT1 上非活动中断
- INT1_SINGLE_TAP: INT1 上单击中断
- INT1_WU: INT1 上唤醒中断
- INT1_FF: INT1 上自由落体中断
- INT1_DOUBLE_TAP: INT1 上双击中断
- INT1_6D: INT1 上 6D 检测中断
- INT1_TILT: INT1 上倾斜中断
- INT1_TIMER: INT1 上定时器中断
INT2引脚通过配置MD2_CFG(5Fh)和INT2_CTRL(0Eh)来选择,其中INT1引脚支持如下中断.
- INT2_STEP_DELTA: INT2 上计步器步数识别时间变化量中断
- INT2_STEP_COUNT_OV: INT2 上步数计数器溢出中断
- INT2_FULL_FLAG: INT2 上 FIFO 全满标志中断
- INT2_FIFO_OVR: INT2 上 FIFO 溢出标志中断
- INT2_FTH: INT2 上 FIFO 阈值中断
- INT2_DRDY_TEMP: INT2 上温度数据准备就绪
- INT2_DRDY_G: INT2 上陀螺仪数据准备就绪
- INT2_DRDY_XL: INT2 上加速度计数据准备就绪
- INT2_INACT_STATE: INT2 上非活动中断
- INT2_SINGLE_TAP: INT2 上单击中断
- INT2_WU: INT2 上唤醒中断
- INT2_FF: INT2 上自由落体中断
- INT2_DOUBLE_TAP: INT2 上双击中断
- INT2_6D: INT2 上 6D 检测中断
- INT2_TILT: INT2 上倾斜中断
- INT2_IRON: INT2 上软铁/硬铁中断
上述的中断可以同时开启,后续使用过程中只需要读取特定的寄存器即可判断具体是哪个中断.
同时支持所有的中断信号都从INT1引脚发出,但此功能默认状态是关闭,如需使用,需要配置CTRL4_C(13h)中的INT2_on_INT1位即可.
其余的关于各个中断详细信息参考AN5040.
7.3.4、LSM6DSL温度传感器
LSM6DSL 具有内部温度传感器,适用于环境温度测量。
如果加速度计和陀螺仪传感器均处于下电模式,则温度传感器关闭。
温度传感器的最大输出数据率为 52 Hz,其值取决于加速度计和陀螺仪传感器如何配置:
- 如果陀螺仪处于下电模式:
- 如果加速度计 ODR 等于 12.5 Hz 低功耗模式,则温度数据速率等于 12.5 Hz;
- 如果加速度计配置为 26 Hz 低功耗模式,则温度数据速率等于 26 Hz;
- 对于所有其他的加速度计配置,温度数据速率均等于 52 Hz。
- 如果陀螺仪不是处于下电模式,则无论加速度计和陀螺仪配置是什么,温度数据速率均为 52 Hz。
7.3.5、LSM6DSL FIFO
LSM6DSL 嵌入了一个 4 kB 的先进先出缓冲器(FIFO).
FIFO内部可存储如下数据.
- 陀螺仪传感器数据;
- 加速度计传感器数据;
- 外部传感器(连接到传感器集合(sensor hub)接口)数据;
- 计步器和时间戳数据;
- 温度传感器数据
7.3.5.1、FIFO模式
FIFO有五种不同的操作模式可以选择
- Bypass mode
- FIFO mode
- Continuous mode
- Continuous-to-FIFO mode
- Bypass-to-continuous mode
7.3.5.1.1、Bypass mode
这个是最简单的,不使用FIFO,FIFO里面是空的.
备注: FIFO置于该模式的时候,缓冲区将会被清0.
7.3.5.1.2、FIFO mode
FIFO继续填直至填满.然后停止采集数据, FIFO 内容保持不变,直至选用不同模式.
7.3.5.1.3、Continuous mode
FIFO 连续填充。当缓冲器满时, FIFO 索引重新从头开始,原有数据被新数据替代。最早先的数据继续被覆盖,直至读取操作释放了 FIFO 空间。要实现空间释放速度快于新数据产生速度,主处理器读取速度很重要。要停止此配置,必须选用 Bypass 模式。
用法和软件环形缓冲区类似.
7.3.5.1.4、Continuous-to-FIFO mode
此模式是先前所述的 Continue 和 FIFO 模式的组合。在 Continue-FIFO 模式中, FIFO 缓冲器开始工作于 Continue模式,当发生事件条件时切换为 FIFO 模式。
事件条件可为以下之一:
- 双击:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_DOUBLE_TAP 位必须被置为 1;
- 倾斜:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_TILT 位必须被置为 1;
- 计步运动:必须配置事件检测,并且 INT1_CTRL 寄存器的 INT1_STEP_DETECTOR 位必须被置为 1;
- 单击:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_SINGLE_TAP 位必须被置为 1;
- 双击:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_DOUBLE_TAP 位必须被置为 1;
- 自由落体:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_FF 位必须被置为 1;
- 唤醒:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_WU 位必须被置为 1;
- 6D:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_6D 位必须被置为 1。
如图,该模式下只有在FIFO已经填满时才会停止.
7.3.5.1.5、Bypass-to-continuous mode
此模式是先前所述的 Bypass 和 Continue 模式的组合。在 Bypass-Continue 模式中, FIFO 缓冲器开始工作于
Bypass 模式,当发生事件条件时切换为 Continue 模式。
事件条件可为以下之一:
- 双击:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_DOUBLE_TAP 位必须被置为 1;
- 倾斜:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_TILT 位必须被置为 1;
- 计步运动:必须配置事件检测,并且 INT1_CTRL 寄存器的 INT1_STEP_DETECTOR 位必须被置为 1;
- 单击:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_SINGLE_TAP 位必须被置为 1;
- 双击:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_DOUBLE_TAP 位必须被置为 1;
- 自由落体:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_FF 位必须被置为 1;
- 唤醒:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_WU 位必须被置为 1;
- 6D:必须配置事件检测,并且 MD2_CFG 寄存器的 INT2_6D 位必须被置为 1。
该模式下只有中断时间内才会读取FIFO,其余时间都是bypass状态.