首页 理论教育AVR单片机与传感器基础:嵌入式存储器FIFO

AVR单片机与传感器基础:嵌入式存储器FIFO

【摘要】:所以,ADXL345内部建有32级先入先出数据存储器,一共可以缓存32次加速度的测量值。如果这三个寄存器中的加速度数据被取走,FIFO存储器中最先测得的加速度值将被自动转移到DATAX、DATAY、DATAZ三个数据寄存器中。ADXL345的FIFO数据存储器有4种工作模式:旁路模式、FIFO模式、流模式和触发模式。从FIFO中读取数据:主机只能通过访问DATAX、DATAY、DATAZ三个数据寄存器而得到加速度数值。

ADXL345每一次对加速度的测量值包括X、Y、Z三个轴,每轴2个字节,共计6个字节的数据。这些数据如果立即进行输出,而主机却来不及响应,则很容易造成数据丢失。所以,ADXL345内部建有32级先入先出(FIFO)数据存储器,一共可以缓存32次加速度的测量值。另外,它还设有DATAX、DATAY、DATAZ三个数据寄存器,主机只能通过访问这三个数据寄存器而得到加速度数值。如果这三个寄存器中的加速度数据被取走,FIFO存储器中最先测得的加速度值将被自动转移到DATAX、DATAY、DATAZ三个数据寄存器中。所以,加上这三个寄存器,可看作有33级数据缓存。

ADXL345的FIFO数据存储器有4种工作模式:旁路模式、FIFO模式、流模式和触发模式。旁路模式:FIFO存储器不可用;FIFO模式:X、Y、Z轴测量数据存储在FIFO存储器中,采样数等于设定值时,Watermark中断置位,缓存满(32个,X、Y、Z轴)时则停止测量;流模式:采样数等于设定值时Watermark中断置位,如果缓存满,则新数据覆盖旧数据,缓存中一直保留X、Y、Z轴最新的32个测量值;触发模式:先流模式工作,触发事件发生后改为FIFO模式。

从FIFO中读取数据:(www.chuimin.cn)

主机只能通过访问DATAX、DATAY、DATAZ三个数据寄存器(地址为0x32~0x37)而得到加速度数值。如果执行单字节读取操作,当前测量值的剩余数据字节将会丢失。因此,所有目标轴应以突发(或多字节)读取操作来读取数据。为确保FIFO完全弹出(即新数据完全转移到DATAX、DATAY、DATAZ寄存器),读取数据寄存器结束后至再读取FIFO或读取FIFO_STATUS寄存器(地址0x39)之前,至少必须有5 μs延迟。以突发(或多字节)方式读取DATAX、DATAY、DATAZ三个寄存器中数据时,只需给出DataX0地址,然后连续读取6个字节。每读一个字节,传感器内部会自动将读取地址加1。如果读取数据寄存器出现从寄存器0x37到寄存器0x38的转变,或引脚变为高电平(SPI),传感器将认为数据读取结束。