Registers
CTRL0
- Name: Control Register 0
- Description: This register controls the serial data transfer. It is impossible to write to this register when the QSPI is enabled.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x00
- Reset Value: 0x01070000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:25 |
RSVD |
R |
Reserved bits |
|
24 |
S_ST_EN |
RW |
0x1 |
Slave Select Toggle Enable. When operating in QSPI mode with clock phase (SERIAL_CLK_PHASE) set to 0, this register controls the behavior of the slave select line (CS) between data frames. If this register field is set to 1, the CS line will toggle between consecutive data frames, with the serial clock (SCLK) being held to its default value while CS is high; if this register field is set to 0 the CS will stay low and SCLK will run continuously for the duration of the transfer. |
23 |
RSVD |
R |
Reserved bits |
|
22:21 |
SPI_FRAME_FORMAT |
RW |
0x0 |
SPI Frame Format: Selects data frame format for Transmitting/Receiving the data bits. Value:
|
20:16 |
DATA_FRAME_SIZE |
RW |
0x7 |
Data Frame Size in 32-bit transfer size mode. Used to select the data frame size in 32-bit transfer mode. When the data frame size is programmed to be less than 32 bits, the receive data is automatically right-justified by the receive logic, with the upper bits of the receive FIFO zero-padded. You are responsible for making sure that transmit data is right-justified before writing into the transmit FIFO. The transmit logic ignores the upper unused bits when transmitting the data. Note: When SPI_FRAME_FORMAT is not set to 0x0,
Value:
|
15:12 |
CTRL_FRAME_SIZE |
RW |
0x0 |
Control Frame Size. Selects the length of the control word for the Microwire frame format. Value:
|
11 |
SHIFT_REG_LOOP |
RW |
0x0 |
Shift Register Loop. Used for testing purposes only. When internally active, connects the transmit shift register output to the receive shift register input. Value:
|
10 |
RSVD |
R |
Reserved bits |
|
9:8 |
XFE_MODE |
RW |
0x0 |
Transfer Mode. This transfer mode is only valid when the SPI is configured as master device.
When SPI_FRAME_FORMAT is not set to 2'b00. There are only two valid combinations:
Value:
|
7 |
SERIAL_CLK_POL |
RW |
0x0 |
Serial Clock Polarity. Valid when the frame format (FRAME_FORMAT) is set to Motorola SPI. Used to select the polarity of the inactive serial clock, which is held inactive when the SPI master is not actively transferring data on the serial bus. Value:
|
6 |
SERIAL_CLK_PHASE |
RW |
0x0 |
Serial Clock Phase. Valid when the frame format (FRAME_FORMAT) is set to Motorola SPI. The serial clock phase selects the relationship of the serial clock with the slave select signal. When SCPH = 0, data is captured on the first edge of the serial clock. When SCPH = 1, the serial clock starts toggling one cycle after the slave select line is activated, and data is captured on the second edge of the serial clock. Value:
|
5:4 |
FRAME_FORMAT |
RW |
0x0 |
Frame Format. Selects which serial protocol transfers the data. Value:
|
3:0 |
RSVD |
R |
Reserved bits |
CTRL1
- Name: Control Register 1
- Description: This register exists only when the SPI is configured as a master device. Control register 1 controls the end of serial transfers when in receive-only mode. It is impossible to write to this register when the SPI is enabled.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x04
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:16 |
RSVD |
R |
Reserved bits |
|
15:0 |
NUM_DATA_FRAME |
RW |
0x0 |
Number of Data Frames. When XFE_MODE = 0x2 or XFE_MODE = 0x3, this register field sets the number of data frames to be continuously received by the SPI. The SPI continues to receive serial data until the number of data frames received is equal to this register value plus 1, which enables you to receive up to 64 KB of data in a continuous transfer. Note: When the SPI is configured as a slave, this register serves no purpose. |
SSI_EN
- Name: SSI Enable Register
- Description: This register enables and disables the SPI.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x08
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:1 |
RSVD |
R |
Reserved bits |
|
0 |
SSI_EN |
RW |
0x0 |
SSI Enable. Enables and disables all QSPI operations. When disabled, all serial transfers are halted immediately. Transmit and receive FIFO buffers are cleared when the device is disabled. Value:
|
MW_CTRL
- Name: Microwire Control Register
- Description: This register controls the direction of the data word for the half-duplex Microwire serial protocol. It is impossible to write to this register when the QSPI is enabled.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x0C
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:3 |
RSVD |
R |
Reserved bits |
|
2 |
MW_HSG |
RW |
0x0 |
Microwire Handshaking. Used to enable and disable the busy/ready handshaking interface for the Microwire protocol. When enabled, the SPI checks for a ready status from the target slave, after the transfer of the last data/control bit, before clearing the SSI_BUSY status in the STAT register. Value:
Note: When the SPI is configured as a slave, this register serves no purpose. |
1 |
MW_DIR_DW |
RW |
0x0 |
Microwire Control. Defines the direction of the data word when the Microwire serial protocol is used. Value:
|
0 |
MW_XFE_MODE |
RW |
0x0 |
Microwire Transfer Mode. Defines whether the Microwire transfer is sequential or non-sequential. When sequential mode is used, only one control word is needed to transmit or receive a block of data words. When non-sequential mode is used, there must be a control word for each data word that is transmitted or received. Value:
|
S_EN
- Name: Slave Enable Register
- Description: This register exists only when the SPI is configured as a master device. The register enables the individual slave select output lines from the SPI master.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x10
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:2 |
RSVD |
R |
Reserved bits |
|
1:0 |
S_EN |
RW |
0x0 |
Slave Select Enable. Each bit in this register corresponds to a slave select line (CSn) from the SPI master. Value:
Note: When the SPI is configured as a slave, this register serves no purpose. |
BAUD
- Name: Baud Rate Register
- Description: This register exists only when the SPI is configured as a master device. The register derives the frequency of the serial clock that regulates the data transfer. It is impossible to write to this register when the SPI is enabled.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x14
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:16 |
RSVD |
R |
Reserved bits |
|
15:0 |
SSI_CLK_DIV |
RW |
0x0 |
SSI Clock Divider. The LSB for this field is always set to 0 and is unaffected by a write operation, which ensures an even value is held in this register. If the value is 0, the serial output clock (sclk_out) is disabled. The frequency of the sclk_out is derived from the following equation: Fsclk_out = Fssi_clk/SSI_CLK_DIVNote: When the SPI is configured as a slave, this register serves no purpose. |
TX_FIFO_TL
- Name: Transmit FIFO Threshold Level
- Description: This register controls the threshold value for the transmit FIFO memory.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x18
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:3 |
RSVD |
R |
Reserved bits |
|
2:0 |
TX_FIFO_THD |
RW |
0x0 |
Transmit FIFO Threshold. Controls the level of entries (or below) at which the transmit FIFO controller triggers an interrupt. The FIFO depth is configurable in the range 2 – 256; this register is sized to the number of address bits needed to access the FIFO. If you attempt to set this value greater than or equal to the depth of the FIFO, this field is not written and retains its current value. When the number of transmit FIFO entries is less than or equal to this value, the transmit FIFO empty interrupt is triggered. |
RX_FIFO_TL
- Name: Receive FIFO Threshold Level
- Description: This register controls the threshold value for the receive FIFO memory.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x1C
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:3 |
RSVD |
R |
Reserved bits |
|
2:0 |
RX_FIFO_THD |
RW |
0x0 |
Receive FIFO Threshold. Controls the level of entries (or above) at which the receive FIFO controller triggers an interrupt. The FIFO depth is configurable in the range 2 – 256. This register is sized to the number of address bits needed to access the FIFO. If you attempt to set this value greater than the depth of the FIFO, this field is not written and retains its current value. When the number of receive FIFO entries is greater than or equal to this value + 1, the receive FIFO full interrupt is triggered. |
TX_FIFO_LEVEL
- Name: Transmit FIFO Level Register
- Description: This register contains the number of valid data entries in the transmit FIFO memory.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x20
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:4 |
RSVD |
R |
Reserved bits |
|
3:0 |
TX_FIFO_LEVEL |
R |
0x0 |
Transmit FIFO Level. Contains the number of valid data entries in the transmit FIFO. |
RX_FIFO_LEVEL
- Name: Receive FIFO Level Register
- Description: This register contains the number of valid data entries in the receive FIFO memory. This register can be ready at any time.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x24
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:4 |
RSVD |
R |
Reserved bits |
|
3:0 |
RX_FIFO_LEVEL |
R |
0x0 |
Receive FIFO Level. Contains the number of valid data entries in the receive FIFO. |
STAT
- Name: Status Register
- Description: This is a read-only register used to indicate the current transfer status, FIFO status, and any transmission/reception errors that may have occurred. The status register may be read at any time.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x28
- Reset Value: 0x00000006
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:7 |
RSVD |
R |
Reserved bits |
|
6 |
DATA_COLN_ERR |
R |
0x0 |
Data Collision Error. This bit will be set if MISO input is asserted by other master, when the SPI master is in the middle of the transfer. This informs the processor that the last data transfer was halted before completion. This bit is cleared when read. |
5 |
TX_ERR |
R |
0x0 |
Transmission Error. Set if the transmit FIFO is empty when a transfer is started. Data from the previous transmission is resent on the txd line. This bit is cleared when read. Value:
Note: When the SPI is configured as a master, this register serves no purpose. |
4 |
RX_FIFO_FULL |
R |
0x0 |
Receive FIFO Full. When the receive FIFO is completely full, this bit is set. When the receive FIFO contains one or more empty location, this bit is cleared. Value:
|
3 |
RX_FIFO_NE |
R |
0x0 |
Receive FIFO Not Empty. Set when the receive FIFO contains one or more entries and is cleared when the receive FIFO is empty. This bit can be polled by software to completely empty the receive FIFO. Value:
|
2 |
TX_FIFO_EMPTY |
R |
0x1 |
Transmit FIFO Empty. When the transmit FIFO is completely empty, this bit is set. When the transmit FIFO contains one or more valid entries, this bit is cleared. This bit field does not request an interrupt. Value:
|
1 |
TX_FIFO_NF |
R |
0x1 |
Transmit FIFO Not Full. Set when the transmit FIFO contains one or more empty locations, and is cleared when the FIFO is full. Value:
|
0 |
SSI_BUSY |
R |
0x0 |
SSI Busy Flag. When set, indicates that a serial transfer is in progress; when cleared indicates that the SPI is idle or disabled. Value:
|
INT_MASK
- Name: Interrupt Mask Register
- Description: This read/write register masks or enables all interrupts generated by the SPI. When the SPI is configured as a slave device, the MULTI_M_CIM bit field is not present. This changes the reset value from 0x3F for serial-master configurations to 0x1F for serial-slave configurations.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x2C
- Reset Value: 0x0000003F
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:6 |
RSVD |
R |
Reserved bits |
|
5 |
MULTI_M_CIM |
RW |
0x1 |
Multi-Master Contention Interrupt Mask. Value:
|
4 |
RX_FIFO_FIS |
RW |
0x1 |
Receive FIFO Full Interrupt Mask Value:
|
3 |
RX_FIFO_OIS |
RW |
0x1 |
Receive FIFO Overflow Interrupt Mask Value:
|
2 |
RX_FIFO_UIS |
RW |
0x1 |
Receive FIFO Underflow Interrupt Mask Value:
|
1 |
TX_FIFO_OIS |
RW |
0x1 |
Transmit FIFO Overflow Interrupt Mask Value:
|
0 |
TX_FIFO_EIS |
RW |
0x1 |
Transmit FIFO Empty Interrupt Mask Value:
|
INT_STAT
- Name: Interrupt Status Register
- Description: This register reports the status of the SPI interrupts after they have been enabled.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x30
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:6 |
RSVD |
R |
Reserved bits |
|
5 |
MULTI_M_CIS |
R |
0x0 |
Multi-Master Contention Interrupt Status Value:
|
4 |
RX_FIFO_FIS |
R |
0x0 |
Receive FIFO Full Interrupt Status Value:
|
3 |
RX_FIFO_OIS |
R |
0x0 |
Receive FIFO Overflow Interrupt Status Value:
|
2 |
RX_FIFO_UIS |
R |
0x0 |
Receive FIFO Underflow Interrupt Status Value:
|
1 |
TX_FIFO_OIS |
R |
0x0 |
Transmit FIFO Overflow Interrupt Status Value:
|
0 |
TX_FIFO_EIS |
R |
0x0 |
Transmit FIFO Empty Interrupt Status Value:
|
RAW_INT_STAT
- Name: Raw Interrupt Status Register
- Description: This read-only register reports the status of the SPI interrupts prior to be enabled.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x34
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:6 |
RSVD |
R |
Reserved bits |
|
5 |
MULTI_M_CRIS |
R |
0x0 |
Multi-Master Contention Raw Interrupt Status Value:
|
4 |
RX_FIFO_FRIS |
R |
0x0 |
Receive FIFO Full Raw Interrupt Status Value:
|
3 |
RX_FIFO_ORIS |
R |
0x0 |
Receive FIFO Overflow Raw Interrupt Status Value:
|
2 |
RX_FIFO_URIS |
R |
0x0 |
Receive FIFO Underflow Raw Interrupt Status Value:
|
1 |
TX_FIFO_ORIS |
R |
0x0 |
Transmit FIFO Overflow Raw Interrupt Status Value:
|
0 |
TX_FIFO_ERIS |
R |
0x0 |
Transmit FIFO Empty Raw Interrupt Status Value:
|
TX_FIFO_OIC
- Name: Transmit FIFO Overflow Interrupt Clear Register.
- Description: Transmit FIFO Overflow Interrupt Clear Register.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x38
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:1 |
RSVD |
R |
Reserved bits |
|
0 |
TX_FIFO_OIC |
R |
0x0 |
Clear Transmit FIFO Overflow Interrupt. This register reflects the status of the interrupt. A read from this register clears the txo_intr interrupt; writing has no effect. |
RX_FIFO_OIC
- Name: Receive FIFO Overflow Interrupt Clear Register
- Description: Receive FIFO Overflow Interrupt Clear Register.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x3C
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:1 |
RSVD |
R |
Reserved bits |
|
0 |
RX_FIFO_OIC |
R |
0x0 |
Clear Receive FIFO Overflow Interrupt. This register reflects the status of the interrupt. A read from this register clears the rxo_intr interrupt; writing has no effect. |
RX_FIFO_UIC
- Name: Receive FIFO Underflow Interrupt Clear Register
- Description: Receive FIFO Underflow Interrupt Clear Register.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x40
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:1 |
RSVD |
R |
Reserved bits |
|
0 |
RX_FIFO_UIC |
R |
0x0 |
Clear Receive FIFO Underflow Interrupt. This register reflects the status of the interrupt. A read from this register clears the rxu_intr interrupt; writing has no effect. |
MULTI_M_IC
- Name: Multi-Master Interrupt Clear Register
- Description: Multi-Master Interrupt Clear Register
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x44
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:1 |
RSVD |
R |
Reserved bits |
|
0 |
MULTI_M_IC |
R |
0x0 |
Clear Multi-Master Contention Interrupt. This register reflects the status of the interrupt. A read from this register clears the mst_intr interrupt; writing has no effect. |
INT_CLR
- Name: Interrupt Clear Register
- Description: Interrupt Clear Register
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x48
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:1 |
RSVD |
R |
Reserved bits |
|
0 |
INT_CLR |
R |
0x0 |
Clear Interrupts. This register is set if any of the interrupts below are active. A read clears the txo_intr, rxu_intr, rxo_intr, and the mst_intr interrupts. Writing to this register has no effect. |
DMA_CTRL
- Name: DMA Control Register
- Description: The register is used to enable the DMA Controller interface operation.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x4C
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:2 |
RSVD |
R |
Reserved bits |
|
1 |
TX_DMA_EN |
RW |
0x0 |
Transmit DMA Enable. This bit enables/disables the transmit FIFO DMA channel. Value:
|
0 |
RX_DMA_EN |
RW |
0x0 |
Receive DMA Enable. This bit enables/disables the receive FIFO DMA channel Value:
|
DMA_TX_DL
- Name: DMA Transmit Data Level
- Description: This register controls the threshold value for the transmit FIFO memory.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x50
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:3 |
RSVD |
R |
Reserved bits |
|
2:0 |
DMA_TX_DL |
RW |
0x0 |
Transmit Data Level. This bit field controls the level at which a DMA request is made by the transmit logic. It is equal to the watermark level; that is, the dma_tx_req signal is generated when the number of valid data entries in the transmit FIFO is equal to or below this field value, and TX_DMA_EN = 1. |
DMA_RX_DL
- Name: DMA Receive Data Level
- Description: This register controls the threshold value for the receive FIFO memory
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x54
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:3 |
RSVD |
R |
Reserved bits |
|
2:0 |
DMA_RX_DL |
RW |
0x0 |
Receive Data Level. This bit field controls the level at which a DMA request is made by the receive logic. The watermark level = DMA_RX_DL +1; that is, dma_rx_req is generated when the number of valid data entries in the receive FIFO is equal to or above this field value + 1, and RX_DMA_EN =1. |
DATA
- Name: Data Register
- Description: The SPI data register is a 32-bit read/write buffer for the transmit/receive FIFOs. When the register is read, data in the receive FIFO buffer is accessed. When it is written to, data is moved into the transmit FIFO buffer; a write can occur only when SSI_EN = 1. FIFOs are reset when SSI_EN = 0.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0x60
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:0 |
DATA |
RW |
0x0 |
Data Register. When writing to this register, you must right-justify the data. Read data is automatically right-justified. |
RX_SMP_DLY
- Name: RX Sample Delay Register
- Description: This register controls the number of ssi_clk cycles that are delayed (from the default sample time) before the actual sample of the rxd input occurs. It is impossible to write to this register when the SPI is enabled.
- Base Address: 0xA000C200 + x*0x600
- Offset: 0xF0
- Reset Value: 0x00000000
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:8 |
RSVD |
R |
Reserved bits |
|
7:0 |
RX_SMP_DLY |
RW |
0x0 |
RX Sample Delay. This register is used to delay the sample of the rxd input port. Each value represents a single ssi_clk delay on the sample of rxd. The maximum value is 7. Note: When the SPI is configured as a slave, this register serves no purpose. |
SPI_CTRL
- Name: SPI Control Register
- Description: This register is used to control the serial data transfer in SPI mode of operation. The register is only relevant when SPI_FRAME_FORMAT is set to either 01 or 10. It is not possible to write to this register when the SPI is enabled (SSI_EN=1).
- Base Address: 0xA000C200 + x*0x600
- Offset: 0xF4
- Reset Value: 0x00000200
Bits | Field Name | RW | Reset | Description |
---|---|---|---|---|
31:16 |
RSVD |
R |
Reserved bits |
|
15:11 |
WAIT_CYCLES |
RW |
0x0 |
Wait cycles Number of wait cycles in Dual/Quad mode between control frames transmit and data reception. This value is specified as number of SPI clock cycles. |
10 |
RSVD |
R |
Reserved bits |
|
9:8 |
INST_LEN |
RW |
0x2 |
Instruction Length Dual/Quad mode instruction length in bits. Value:
|
7:6 |
RSVD |
R |
Reserved bits |
|
5:2 |
ADDR_LEN |
RW |
0x0 |
Address Length. This bit defines Length of Address to be transmitted. Only after this much bits are programmed in to the FIFO the transfer can begin. Value:
|
1:0 |
XFE_FORMAT_AI |
RW |
0x0 |
Address and instruction transfer format. Selects whether QSPI will transmit instruction/address either in Standard SPI mode or the SPI mode selected in CTRL0. SPI_FRAME_FORMAT field. Value:
|