2.7.3.2 Data FIFO Processing
The data FIFO (DFIFO) has a depth of 32 bytes and can be used to hold the payload of a telegram.
Data can be written to the DFIFO by using the “Write TX FIFO” SPI command. (For more
information, see Write TX FIFO.) If a
byte is written to a full FIFO, the event flag SYS_ERR is raised in the events.system event
byte, unless the eepTrxConf.sysConfig.DFIFO_OFL_UFL_RX_disable EEPROM variable is set to
‘1
’.
Address | Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|---|---|
0x0017 | sysConfig | — | — | VS22V | VS5V | SFIFO_OFL_UFL_RX_disable | DFIFO_OFL_UFL_RX_disable | AVCCdisable | LOWBATTdisable |
If the DFIFO depth is not sufficient, it can be refilled during operation. An event is available to indicate to an external host that the fill level of the DFIFO reached a certain threshold. The host can now write additional data to the DFIFO.
The fill level threshold can be configured independently for path A and path B of each service in the eepServices.txSysEventx.TxBufFillLevelx[5:0] EEPROM variable. The event flag DFIFO_TX (bit 0) in the events.system event byte is set each time the fill level reaches the configured threshold. Additionally, the EVENT pin is triggered if the eepServices.txSysEventx.txBufEvMaskx EEPROM variable is set.
Address Service0 | Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|---|---|
0x0105 | txSysEventA | TX_Ending | txBufEvMaskA | TxBufFillLevelA[5:0] | |||||
0x0106 | txSysEventB | TX_Ending | txBufEvMaskB | TxBufFillLevelB[5:0] |
The current fill level of the DFIFO can be read at any time by using the “Read Fill Level TX FIFO” SPI command. In TXMode, it is not possible to read data from the DFIFO.
The payload length of bits that must be transmitted from the DFIFO can be limited to a fixed value between 1 and 4095. This is especially useful if the number of transmission bits is not byte-aligned (not divisible by 8). The DFIFO processing is stopped as soon as the configured number of bits is reached, regardless of the actual fill level.
The payload length limit can be set independently for path A and path B of each service in the eepServices.TMTLx[1:0] variables. If the variables are set to “0x00”, the payload limitation is inactive and all the DFIFO content is transmitted.
Address Service0 | Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|---|---|
0x012A | TMTLA[0] | TMTLL[7:0] | |||||||
0x012B | TMTLA[1] | TMTLH[7:0] | |||||||
0x012C | TMTLB[0] | TMTLL[7:0] | |||||||
0x012D | TMTLB[1] | TMTLH[7:0] |
Data Structure
The default organization of the DFIFO is bit-based LSB-first. The data order can be switched to MSB-first if required (see Data Order).
Optionally, the data can be Manchester-coded before transmission (see Data Coding).
If the data polarity in the eepServices.TMCR2x.TMPOL variable is set to
‘1
’, the data in the DFIFO is inverted prior to transmission (see Data Polarity).