FIFO的存在使得系统能够持续节能,因为主机处理器无需持续从传感器轮询数据,而是仅在需要时唤醒,并从FIFO中一次性读取重要数据。
LSM6DSV16X在FIFO中嵌入了1.5 KB的数据(启用压缩功能后可达4.5 KB),用于存储以下数据:
• 陀螺仪
• 加速度计
• 外部传感器(最多4个)
• 步数计数器
• 时间戳
• 温度
• MLC特征和滤波器
• SFLP输出数据(四元数、陀螺仪偏差、重力矢量)
将数据写入FIFO(先进先出)的操作可配置为由以下方式触发:
• 加速度计/陀螺仪数据就绪信号
• 传感器集线器数据就绪信号
• 步数检测信号
这些应用在为具有FIFO专用配置的物理传感器选择批处理速率时具有最大的灵活性:用户可以选择加速度计、陀螺仪和温度传感器的批处理速率。外部传感器写入FIFO的操作可以由加速度计数据就绪信号或外部传感器中断触发。每次检测到步数时,步数计数器可以与相关的时间戳一起存储在FIFO中。可以选择以1、8或32的系数对FIFO中的时间戳批处理进行抽取。
得益于FIFO_DATA_OUT_TAG字节,识别FIFO中单词的含义,从而重建FIFO流是一项简单的任务。
FIFO允许正确重建存储在FIFO中的每个传感器的时间戳信息。如果执行了ODR或BDR(批量数据速率)配置的更改,应用程序可以正确重建时间戳,并确切地知道更改是在何时应用的,而无需禁用FIFO批处理功能。FIFO会存储新配置的信息以及设备中应用更改的时间戳。
最后,FIFO内嵌了一种压缩算法,用户可以启用该算法,以便在FIFO中存储多达4.5 KB的数据,并利用接口通信长度进行FIFO刷新和通信功耗优化。
可编程FIFO水印阈值可通过FIFO_CTRL1(07h)寄存器中的WTM[7:0]位进行设置。为监控FIFO状态,可读取专用寄存器(FIFO_STATUS1(1Bh)、FIFO_STATUS2(1Ch))以检测FIFO溢出事件、FIFO满状态、FIFO空状态、FIFO水印状态以及FIFO中存储的未读取样本数量。若要在这些状态事件的INT1和INT2引脚上生成专用中断,可在INT1_CTRL(0Dh)和INT2_CTRL(0Eh)中设置配置。
FIFO缓冲区可根据七种不同模式进行配置:
• 旁路模式
• 先进先出(FIFO)模式
• 连续模式
• 连续到FIFO模式
• 连续工作模式至满载模式
• 旁路至连续模式
• 旁路至FIFO模式
每种模式均由FIFO_CTRL4(0Ah)寄存器中的FIFO_MODE_[2:0]位选择。