![]() |
qspipsu
Xilinx SDK Drivers API Documentation
|
This file contains a design example using the QSPIPSU driver (XQspiPsu) with a serial Flash device greater than or equal to 128Mb.
The example writes to flash in GQSPI mode and reads it back in Linear QSPI mode.This examples runs with GENFIFO Manual start. It runs in interrupt mode.This example runs in single mode.
The hardware which this example runs on, must have a serial Flash (Micron N25Q or Spansion S25FL) for it to run.
This example has been tested with the Micron Serial Flash (N25Q512A) in single mode using A53 and R5 processors.
In dual parallel mode flash connection, ZynqMP GQSPI writes data in bytes(Even bytes in lower flash and odd bytes in upper flash), where as LQSPI reads the data in bitwise. so this is causing data mismatch while reading in LQSPI mode. so this application proceeds with single mode irrespective of flash connection.
MODIFICATION HISTORY:
Ver Who Date Changes
1.0 hk 08/21/14 First release sk 06/17/15 Used Tx/Rx flags for Transmitting/Receiving. sk 11/23/15 Added Support for Macronix 1Gb part. 1.2 nsk 07/01/16 Add LQSPI support 1.3 nsk 09/19/16 Update documentation ms 04/05/17 Modified Comment lines in functions to recognize it as documentation block and modified filename tag to include the file in doxygen examples. 1.4 tjs 06/16/17 Added support for IS25LP256D flash part (PR-4650) *
Functions | |
int | QspiPsuInterruptFlashExample (XScuGic *IntcInstancePtr, XQspiPsu *QspiPsuInstancePtr, u16 QspiPsuDeviceId, u16 QspiPsuIntrId) |
The purpose of this function is to illustrate how to use the XQspiPsu device driver in single, parallel and stacked modes using flash devices greater than or equal to 128Mb. More... | |
int | FlashReadID (XQspiPsu *QspiPsuPtr) |
Reads the flash ID and identifies the flash in FCT table. More... | |
int | FlashErase (XQspiPsu *QspiPsuPtr, u32 Address, u32 ByteCount, u8 *WriteBfrPtr) |
This function erases the sectors in the serial Flash connected to the QSPIPSU interface. More... | |
int | FlashWrite (XQspiPsu *QspiPsuPtr, u32 Address, u32 ByteCount, u8 Command, u8 *WriteBfrPtr) |
This function writes to the serial Flash connected to the QSPIPSU interface. More... | |
int | FlashRead (XQspiPsu *QspiPsuPtr, u32 Address, u32 ByteCount, u8 Command, u8 *WriteBfrPtr, u8 *ReadBfrPtr) |
This function performs a read. More... | |
u32 | GetRealAddr (XQspiPsu *QspiPsuPtr, u32 Address) |
This functions translates the address based on the type of interconnection. More... | |
int | BulkErase (XQspiPsu *QspiPsuPtr, u8 *WriteBfrPtr) |
This functions performs a bulk erase operation when the flash device has a single die. More... | |
int | DieErase (XQspiPsu *QspiPsuPtr, u8 *WriteBfrPtr) |
This functions performs a die erase operation on all the die in the flash device. More... | |
void | QspiPsuHandler (void *CallBackRef, u32 StatusEvent, unsigned int ByteCount) |
Callback handler. More... | |
int | main (void) |
Main function to call the QSPIPSU Flash example. More... | |
int | XQspiPsu_LqspiRead (XQspiPsu *InstancePtr, u8 *RecvBufPtr, u32 Address, unsigned ByteCount) |
Read the flash in Linear QSPI mode. More... | |
int BulkErase | ( | XQspiPsu * | QspiPsuPtr, |
u8 * | WriteBfrPtr | ||
) |
This functions performs a bulk erase operation when the flash device has a single die.
Works for both Spansion and Micron
QspiPtr | is a pointer to the QSPIPSU driver component to use. |
WritBfrPtr | is the pointer to command+address to be sent |
int DieErase | ( | XQspiPsu * | QspiPsuPtr, |
u8 * | WriteBfrPtr | ||
) |
This functions performs a die erase operation on all the die in the flash device.
This function uses the die erase command for Micron 512Mbit and 1Gbit
QspiPtr | is a pointer to the QSPIPSU driver component to use. |
WritBfrPtr | is the pointer to command+address to be sent |
int FlashErase | ( | XQspiPsu * | QspiPsuPtr, |
u32 | Address, | ||
u32 | ByteCount, | ||
u8 * | WriteBfrPtr | ||
) |
This function erases the sectors in the serial Flash connected to the QSPIPSU interface.
QspiPtr | is a pointer to the QSPIPSU driver component to use. |
Address | contains the address of the first sector which needs to be erased. |
ByteCount | contains the total size to be erased. |
Pointer | to the write buffer (which is to be transmitted) |
int FlashRead | ( | XQspiPsu * | QspiPsuPtr, |
u32 | Address, | ||
u32 | ByteCount, | ||
u8 | Command, | ||
u8 * | WriteBfrPtr, | ||
u8 * | ReadBfrPtr | ||
) |
This function performs a read.
Default setting is in DMA mode.
QspiPtr | is a pointer to the QSPIPSU driver component to use. |
Address | contains the address of the first sector which needs to be erased. |
ByteCount | contains the total size to be erased. |
Command | is the command used to read data from the flash. Supports normal, fast, dual and quad read commands. |
Pointer | to the write buffer which contains data to be transmitted |
Pointer | to the read buffer to which valid received data should be written |
int FlashReadID | ( | XQspiPsu * | QspiPsuPtr | ) |
Reads the flash ID and identifies the flash in FCT table.
None. |
int FlashWrite | ( | XQspiPsu * | QspiPsuPtr, |
u32 | Address, | ||
u32 | ByteCount, | ||
u8 | Command, | ||
u8 * | WriteBfrPtr | ||
) |
This function writes to the serial Flash connected to the QSPIPSU interface.
All the data put into the buffer must be in the same page of the device with page boundaries being on 256 byte boundaries.
QspiPtr | is a pointer to the QSPIPSU driver component to use. |
Address | contains the address to write data to in the Flash. |
ByteCount | contains the number of bytes to write. |
Command | is the command used to write data to the flash. QSPIPSU device supports only Page Program command to write data to the flash. |
Pointer | to the write buffer (which is to be transmitted) |
u32 GetRealAddr | ( | XQspiPsu * | QspiPsuPtr, |
u32 | Address | ||
) |
This functions translates the address based on the type of interconnection.
In case of stacked, this function asserts the corresponding slave select.
QspiPtr | is a pointer to the QSPIPSU driver component to use. |
Address | which is to be accessed (for erase, write or read) |
References XQspiPsu::Config, and XQspiPsu_Config::ConnectionMode.
int main | ( | void | ) |
Main function to call the QSPIPSU Flash example.
None |
References QspiPsuInterruptFlashExample().
void QspiPsuHandler | ( | void * | CallBackRef, |
u32 | StatusEvent, | ||
unsigned int | ByteCount | ||
) |
Callback handler.
None. |
int QspiPsuInterruptFlashExample | ( | XScuGic * | IntcInstancePtr, |
XQspiPsu * | QspiPsuInstancePtr, | ||
u16 | QspiPsuDeviceId, | ||
u16 | QspiPsuIntrId | ||
) |
int XQspiPsu_LqspiRead | ( | XQspiPsu * | InstancePtr, |
u8 * | RecvBufPtr, | ||
u32 | Address, | ||
unsigned | ByteCount | ||
) |
Read the flash in Linear QSPI mode.
InstancePtr | is a pointer to the XQspiPs instance. |
RecvBufPtr | is a pointer to a buffer for received data. |
Address | is the starting address within the flash from from where data needs to be read. |
ByteCount | contains the number of bytes to receive. |
References XQspiPsu::IsReady.