FIFO
LIS2DH为三个输出通道X、Y和Z各内置了一个32槽位的数据FIFO。这能为系统节省大量功耗,因为主处理器无需持续轮询传感器数据,而只需在需要时唤醒并从FIFO中突发读取大量有效数据。该缓冲区可按照四种不同模式工作:Bypass模式、FIFO模式、Stream模式和Stream-to-FIFO模式。每种模式通过FIFO_CTRL_REG(2Eh)寄存器中的FIFO_MODE位进行选择。可编程的水印级别、FIFO空或FIFO满事件可被使能,以在INT1/2引脚上产生专用中断(通过FIFO_CFG_REG配置)。
Bypass模式
在Bypass模式下,FIFO不工作,因此保持为空。如下文所述,每个通道仅使用第一个地址,剩余的FIFO槽位均为空。
FIFO模式
在FIFO模式下,X、Y和Z通道的数据被存入FIFO。当FIFO填充达到FIFO_CTRL_REG(2Eh)的FIFO_WTMK_LEVEL位所指定的水平时,可以使能水印中断(FIFO_CTRL_REG中的FIFO_WTMK_EN位)。FIFO持续填充直至满(X、Y和Z各32槽数据)。当FIFO满时,停止从输入通道收集数据。
Stream模式
在Stream模式下,X、Y和Z测量的数据被存入FIFO。可以使能并设置水印中断,设置方式与FIFO模式相同。FIFO持续填充直至满(X、Y和Z各32槽数据)。当FIFO满时,随着新数据到来而丢弃旧数据。
Stream-to-FIFO模式
在Stream-to-FIFO模式下,X、Y和Z测量的数据被存入FIFO。当FIFO填充达到FIFO_CTRL_REG的FIFO_WTMK_LEVEL位所指定的水平时,可以使能水印中断(FIFO_CTRL_REG中的FIFO_WTMK_EN位)。FIFO持续填充直至满(X、Y和Z各32槽10位数据)。当FIFO满时,随着新数据到来而丢弃旧数据。一旦触发事件发生,FIFO开始在FIFO模式下工作。
从FIFO检索数据
FIFO数据通过OUT_X(地址寄存器29h)、OUT_Y(地址寄存器2Bh)和OUT_Z(地址寄存器2Dh)读取。当FIFO处于Stream、Trigger或FIFO模式时,对OUT_X、OUT_Y或OUT_Z寄存器的读取操作即可获取存入FIFO的数据。每次从FIFO读取数据时,最旧的X、Y和Z数据被放入OUT_X、OUT_Y和OUT_Z寄存器,可以使用单次读取(single read)和突发读取(burst read)操作。
读取地址由器件自动更新,当到达寄存器0x2D时会回滚到0x28。为了在多字节读取中读取所有FIFO级别,需要读取192字节(6个输出寄存器 × 32级)。