Using FIFO modes
AN4450
18/26
DocID025978 Rev 1
The whole FIFO content can be read by reading 3x32 bytes from PRESS_OUT_XL location
in a single I²C read transaction. Internally the reading address will automatically roll back
from 0x2A down to 0x28 when FIFO is active to allow a quick read of its content.
5.1.2 Bypass
mode
(F_MODE[2..0]="000" in FIFO_CTRL (0x2E))
The FIFO is not operational and for this reason the buffer remains empty. The pressure
value is sent directly to PRESS_OUT registers.
5.1.3 FIFO
mode
(F_MODE[2..0]="001" in FIFO_CTRL (0x2E))
The measurement from the sensor are sent to FIFO buffer, the FIFO content is read using
the registers PRESS_OUT_XL (0x28), PRESS_OUT_L (0x29) and PRESS_OUT_H (0x2A).
An interrupt can be enabled (WTM_EN bit[5] in CTRL_REG2 (0x21) in order to be raised
when the FIFO is filled to the level specified by the WTM_POINT[4..0] bits[4..0] in the
FIFO_CTRL (0x2E) register. The FIFO continues filling until it is full (32 slots of data for XL,
L and H). When full, the FIFO stops collecting incoming pressure measurements.
5.1.4 Stream
mode
(F_MODE[2..0]="010" in FIFO_CTRL (0x2E))
Like in FIFO mode the measurements are stored in the buffer before being available in
PRESS_OUT_XL, PRESS_OUT_L and PRESS_OUT_H. On the contrary of FIFO mode,
when full, the FIFO discards the older data as the new arrive. An interrupt can be enabled
and set as in FIFO mode though the same register FIFO_CTRL (0x2E).
Stream mode can be used to implement a digital filter averaging the samples stored in the
FIFO.
5.1.5
FIFO mean mode (F_MODE[2..0]="110" in FIFO_CTRL (0x2E))
This mode is used in order to enable the “low noise mode”. In this mode the pressure data
are stored in the FIFO after being averaged depending on AVGP[1..0] bit in register
RES_CONF (0x10).
Pressure data stored in the FIFO buffer are further averaged, to implement a moving
average, using a number of samples defined by WTM_POINT[3..0] in register FIFO_CTRL
(0x2E) and with the speed defined by ODR[2..0] in register CTRL_REG1 (0x20) the result is
placed in PRESS_OUT registers.
There are two possible ways to provide data output pressure averaged by FIFO:
1.
Same data rate (ODR setting) of data coming from sensor when the FIFO_MEAN_DEC
bit[4] of register CTRL_REG2 (0x21) is reset (0=Disable)
2. Decimated output at 1 Hz when the FIFO_MEAN_DEC bit[4] of register CTRL_REG2
(0x21) is set (1=Enable)
In case 1, we will have the output data averaged by the last samples defined by
WTM_POINT[4..0] in register FIFO_CTRL (0x2E)