User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 348
UG585 (v1.11) September 27, 2016
Chapter 12: Quad-SPI Flash Controller
12.3.2 Linear Addressing Mode
Example: Linear Addressing Mode (Memory Reads)
The sequence of operations for data reads in linear addressing mode is as follows:
1. Set manual start enable to auto mode. Set qspi.Config_reg[Man_start_en] = 0.
2. Assert the chip select. Set qspi.Config_reg[PCS] = 0.
3. Program the configuration register for linear addressing mode. Example values are shown in
Table 12-3, page 344.
4. Enable the controller. Set qspi.En_REG[SPI_EN] = 1.
5. Read data from the linear address memory region. The memory range depends on the size
and number of devices. The range is from 0xFC00_0000 up to 0xFDFF_FFFF.
6. Disable the controller. Set qspi.En_REG[SPI_EN] = 0.
7. De-assert chip select. Set qspi.Config_reg[PCS] = 1.
12.3.3 Configure I/O Mode
Example: I/O Mode (Memory Reads and Writes)
The sequence of operations uses I/O mode for reads and writes.
1. Enable manual mode. Write 1 to qspi.Config_reg[Man_start_en, Manual_CS] = 1.
2. Configure the flash device. Refer to Figure 12-6, page 355. Use reset values of the
qspi.LQSPI_CFG register for a single flash device. In case of a parallel dual flash device, write 1 to
the TWO_MEM, SEP_BUS bit fields.
3. Assert chip select. Set qspi.Config_reg[PCS] = 0.
4. Enable the controller. Set qspi.En_REG[SPI_EN] = 1.
5. Write byte sequences to the flash memory. Write from 1 to 4 bytes to the TxFIFO using the TXD
registers. Refer to section 12.2.3 I/O Mode Transmit Registers (TXD).
6. Avoid TxFIFO overflow. When the TxFIFO is empty, 252 bytes can be written. After that, software
can avoid overflowing the TxFIFO by reading qspi.Intr_status_REG[TX_FIFO_full] and waiting until
it equals 0 before writing to a TXD register.
7. Enable the interrupts. Write to qspi.Intrpt_en_REG. Interrupt handlers that handle the interrupt
conditions are discussed in interrupt handlers section.
8. Start data transfer. Set qspi.Config_reg[Man_start_com] = 1.
9. Interrupt handler: Transfer all the required data to QSPI flash during program/read operations
to Quad-SPI flash. (See Example: I/O Mode Interrupt Service Routine, page 349.)
10. If read operations are carried out: re-arrange the READ data to eliminate the data read due to
dummy cycles.
11. Disable controller. Set qspi.En_REG[SPI_EN] = 0.
12. De-assert chip select. Set QSPI.Config_reg[PCS] = 1.