Up to fourteen unique interrupt conditions are possible depending on whether the system is configured with FIFOs or not, as well as if it is configured in master mode or slave mode. A system without FIFOs has seven interrupts. The 32-bit interrupt status register within the interrupt controller can enable each interrupt independently. The IP Interrupt Status Register (IPISR) collects all of the interrupt events. Bit assignments are shown in This Figure and described in Table: IP Interrupt Status Register Description (Core Base Address + 0x20). The interrupt register is a read/toggle-on-write register. Writing a 1 to a bit position within the register causes the corresponding bit to toggle. All register bits are cleared on reset.
Bits |
Name |
Core Access |
Reset Value |
Description |
---|---|---|---|---|
31:14 |
Reserved |
N/A |
N/A |
Reserved |
13 |
Command Error |
R/TOW(1) |
0 |
Command error. IPISR Bit[13] is the command error. •The core is configured in dual/quad SPI mode and •The first entry in the SPI DTR FIFO (after reset) does not match with the supported command list for particular memory. When the SPI command in DTR FIFO does not match with the internal supported command list, the core completes the SPI transactions in standard SPI format. This bit is set to show this behavior of the core. |
12 |
Loopback Error |
R/TOW(1) |
0 |
Loopback error. IPISR Bit[12] is the loopback error. •The core is configured in dual or quad SPI transfer mode and •The LOOP bit is set in control register (SPICR(0)). In standard SPI mode, this bit is always in default state. |
11 |
MSB Error |
R/TOW(1) |
0 |
MSB error. IPISR Bit[11] is the MSB error. •The core is configured in either dual or quad SPI mode and •The LSB First bit in the control register (SPICR) is set to 1. In standard SPI mode, this bit is always in default state. |
10 |
Slave Mode Error |
R/TOW(1) |
1 |
I/O mode instruction error. IPISR Bit[10] is the slave mode error. •The core is configured in either dual or quad SPI mode and •The core is configured in master = 0 in control register (SPICR(2)). In standard SPI mode, this bit is always in default state. |
9 |
CPOL_CPHA Error |
R/TOW(1) |
0 |
CPOL_CPHA error. IPISR Bit[9] is the CPOL_CPHA error. •The core is configured in either dual or quad SPI mode and •The CPOL - CPHA control register bits are set to 01 or 10. In standard SPI mode, this bit is always in default state. |
8 |
DRR_Not_Empty |
R/TOW(1) |
0 |
DRR not empty. IPISR Bit[8] is the DRR not empty bit. Note: The assertion of this bit is applicable only when the FIFO Depth parameter is 16 or 256 and the core is configured in slave mode in standard SPI mode. When FIFO Depth is set to 0, this bit always returns 0. This bit has no significance in dual/quad mode. |
7 |
Slave_Select_Mode |
R/TOW(1) |
0 |
Slave select mode. IPISR Bit[7] is the slave select mode bit. Note: This bit is applicable only in standard SPI slave mode. |
6 |
TX FIFO Half Empty |
R/TOW(1) |
0 |
Transmit FIFO half empty. In standard SPI configuration, IPISR Bit[6] is the transmit FIFO half-empty interrupt. For example, when FIFO depth = 16, this bit is set by a one-clock period strobe to the interrupt register when the occupancy value is decremented from 1000 to 0111. Note that 0111 means there are 8 elements in the FIFO to be transmitted. In this mode, the FIFO depth is fixed to 16 only. The same logic applies when the FIFO depth is 256 where 10000000 changes to 01111111. Note: This interrupt exists only if the AXI Quad SPI core is configured with FIFOs (In standard, dual or quad SPI mode). |
5 |
DRR Overrun |
R/TOW(1) |
0 |
Data receive register/FIFO overrun. IPISR Bit[5] is the data receive FIFO overrun interrupt. This bit is set by a one-clock period strobe to the interrupt register when an attempt to write data to a full receive register or FIFO is made by the SPI core logic to complete a SPI transfer. |
4 |
DRR Full |
R/TOW(1) |
0 |
Data receive register/FIFO full. IPISR Bit[4] is the data receive register full interrupt. Without FIFOs, this bit is set at the end of a SPI element transfer by a one-clock period strobe to the interrupt register (An element can be a byte, half-word, or word depending on the value of Transfer Width). |
3 |
DTR Underrun |
R/TOW(1) |
0 |
Data transmit register/FIFO underrun. IPISR Bit[3] is the data transmit register/FIFO under-run interrupt. This bit is set at the end of a SPI element transfer by a one-clock period strobe to the interrupt register when data is requested from an empty transmit register/FIFO by the SPI core logic to perform a SPI transfer. |
2 |
DTR Empty(2) |
R/TOW(1) |
0 |
Data transmit register/FIFO empty. IPISR Bit[2] is the data transmit register/FIFO empty interrupt. It is set when the last byte of data has been transferred out to the external flash memory. See Transfer End Period. |
1 |
Slave MODF |
R/TOW(1) |
0 |
Slave mode-fault error. IPISR Bit[1] is the slave mode-fault error flag. This interrupt is generated if the SS signal goes active while the SPI device is configured as a slave, but is not enabled. |
0 |
MODF |
R/TOW(1) |
0 |
Mode-fault error. IPISR Bit[0] is the mode-fault error flag. |
Notes: 1.TOW = Toggle On Write. Writing a 1 to a bit position within the register causes the corresponding bit position in the register to toggle. 2.Look for the DTR Empty bit in IPISR to make sure that the transaction from the IP to flash memory is complete. |