FIFO 的存在可显著降低系统功耗:主机无需持续轮询传感器,只需在需要时唤醒,并一次性突发读取 FIFO 中的有效数据。
LSM6DSO 在 FIFO 中内置 3 kB 数据空间(开启压缩后最高 9 kB),可存储:
陀螺仪数据
加速度计数据
外部传感器数据(最多 4 路)
步数计数
时间戳
温度
写入 FIFO 的触发源可配置为:
加速度计/陀螺仪“数据就绪”信号
Sensor Hub 的“数据就绪”信号
步检信号
应用层可通过 FIFO 专用配置,灵活设置各物理传感器的批处理速率:加速度计、陀螺仪、温度传感器的批处理速率由用户自由选择。
外部传感器写入 FIFO 可受加速度计“数据就绪”信号或外部传感器中断触发。
每检测到一步,步数计数及其时间戳可一并存入 FIFO;时间戳批处理支持 1、8、32 三种降采样系数。
借助 FIFO_DATA_OUT_TAG 字节,可轻松识别 FIFO 流中每个数据字的含义,实现简单重建。
FIFO 能正确重建每条传感器数据的时间戳。若在运行中修改 ODR 或 BDR(批处理数据速率),FIFO 会记录新配置及生效时间戳,应用层无需关闭批处理即可准确知道变更时刻。
此外,FIFO 内置压缩算法,用户启用后可将有效存储空间扩展至 9 kB,同时利用更短的接口通信长度完成 FIFO 刷新,进一步降低通信功耗。
可编程 FIFO 水印阈值通过 FIFO_CTRL1(07h) 与 FIFO_CTRL2(08h) 的 WTM[8:0] 位设定。
专用状态寄存器 FIFO_STATUS1(3Ah)、FIFO_STATUS2(3Bh) 可读取:
FIFO 溢出事件
FIFO 满/空状态
FIFO 水印状态
未读样本数
如需在 INT1/INT2 引脚产生对应中断,可在 INT1_CTRL(0Dh)、INT2_CTRL(0Eh) 中配置。
FIFO 支持 6 种工作模式,通过 FIFO_CTRL4(0Ah) 的 FIFO_MODE[2:0] 选择:
Bypass 模式
FIFO 模式
Continuous 模式
Continuous-to-FIFO 模式
Bypass-to-Continuous 模式
Bypass-to-FIFO 模式