3.6.2.1 Support FIFO Overview

The support FIFO (SFIFO) is a 16-byte deep register bank which stores data with first-in-first-out functionality. The SFIFO has two read and two write interfaces:

  • AVR bus read and write access
  • Direct write access from the RSSI buffer
  • Direct read access from the TX modulator

Furthermore, the SFIFO implements a configurable fill-level status bit with maskable interrupt signaling. Read attempts to an empty SFIFO (underflow) and write attempts to a full SFIFO (overflow) are indicated by error flags (SFS.SFUFL and SFS.SFOFL) in the user interface. An error IRQ is triggered if masked in SFI.SFERIM.

The following figure shows a block diagram of the SFIFO.
Figure 3-32. SFIFO Block Diagram

The access mode of the SFIFO is configured by the SFC.SFDRA register bit. If the bit is set to ‘0’, the RSSI buffer can write to the SFIFO via the direct write interface while the AVR can only read from the SFIFO. This mode must be selected if the ATA8510/15 is receiving data. If the SFC.SFDRA bit is set to ‘1’, the AVR can only write to the SFIFO while the TX modulator is able to read data via the direct read interface. This mode must be selected if the ATA8510/15 is transmitting data.

The SFIFO can trigger an interrupt if a certain fill level is reached. The interrupt can be switched on by setting the support FIFO fill-level interrupt mask bit (SFI.SFFLIM) to ‘1’. The required fill level can be configured in the support FIFO fill level configuration register (SFC.SFFLC) to any value between 0 and 16. Once the configured fill level is reached (in SFDRA = 0 mode after a byte was written to the SFIFO, in SFDRA = 1 mode after a byte was read from the SFIFO), the support FIFO fill level reached status bit (SFS.SFFLRF) is set and the interrupt is triggered if enabled.

The current fill level can be read at any time in the support FIFO fill level register (SFL.SFFLS).

The AVR can access the data in the SFIFO by writing or reading the SFIFO data register (SFD). The user has to set the SFC.SFDRA correctly to allow either a write or a read access by the AVR.

The current read and write pointer addresses can be read from the SFRP and SFWP registers, respectively. The AVR also has write access to these registers, but manual pointer manipulations must be handled with care and are mainly implemented for debugging purposes.

The SFIFO is reset when activated in the corresponding power reduction register PRR2.PRSF (see Sleep Modes and Active Power Reduction) or by writing a ‘1’ to the SFL.SFCLR bit.

If not stated otherwise, a detailed description of the required register bits is found in Support FIFO Register Description .