Mistake on this page?
Report an issue in GitHub or email us
Public Member Functions
QSPI Class Reference

A QSPI Driver, used for communicating with QSPI slave devices. More...

#include <QSPI.h>

Inheritance diagram for QSPI:
NonCopyable< QSPI >

Public Member Functions

 QSPI (PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel=NC, int mode=0)
 Create a QSPI master connected to the specified pins. More...
 
 QSPI (const qspi_pinmap_t &pinmap, int mode=0)
 Create a QSPI master connected to the specified pins. More...
 
qspi_status_t configure_format (qspi_bus_width_t inst_width, qspi_bus_width_t address_width, qspi_address_size_t address_size, qspi_bus_width_t alt_width, qspi_alt_size_t alt_size, qspi_bus_width_t data_width, int dummy_cycles)
 Configure the data transmission format. More...
 
qspi_status_t set_frequency (int hz=1000000)
 Set the qspi bus clock frequency. More...
 
qspi_status_t read (int address, char *rx_buffer, size_t *rx_length)
 Read from QSPI peripheral with the preset read_instruction and alt_value. More...
 
qspi_status_t write (int address, const char *tx_buffer, size_t *tx_length)
 Write to QSPI peripheral using custom write instruction. More...
 
qspi_status_t read (qspi_inst_t instruction, int alt, int address, char *rx_buffer, size_t *rx_length)
 Read from QSPI peripheral using custom read instruction, alt values. More...
 
qspi_status_t write (qspi_inst_t instruction, int alt, int address, const char *tx_buffer, size_t *tx_length)
 Write to QSPI peripheral using custom write instruction, alt values. More...
 
qspi_status_t command_transfer (qspi_inst_t instruction, int address, const char *tx_buffer, size_t tx_length, const char *rx_buffer, size_t rx_length)
 Perform a transaction to write to an address(a control register) and get the status results. More...
 

Detailed Description

A QSPI Driver, used for communicating with QSPI slave devices.

The default format is set to Quad-SPI(1-1-1), and a clock frequency of 1MHz Most QSPI devices will also require Chip Select which is indicated by ssel.

Note
Synchronization level: Thread safe

Example:

// Write 4 byte array to a QSPI slave, and read the response, note that each device will have its specific read/write/alt values defined
#include "mbed.h"
#define CMD_WRITE 0x02
#define CMD_READ 0x03
#define ADDRESS 0x1000
// hardware ssel (where applicable)
QSPI qspi_device(QSPI_FLASH1_IO0, QSPI_FLASH1_IO1, QSPI_FLASH1_IO2, QSPI_FLASH1_IO3, QSPI_FLASH1_SCK, QSPI_FLASH1_CSN); // io0, io1, io2, io3, sclk, ssel
int main() {
char tx_buf[] = { 0x11, 0x22, 0x33, 0x44 };
char rx_buf[4];
int buf_len = sizeof(tx_buf);
qspi_status_t result = qspi_device.write(CMD_WRITE, 0, ADDRESS, tx_buf, &buf_len);
if (result != QSPI_STATUS_OK) {
printf("Write failed");
}
result = qspi_device.read(CMD_READ, 0, ADDRESS, rx_buf, &buf_len);
if (result != QSPI_STATUS_OK) {
printf("Read failed");
}
}

Definition at line 86 of file QSPI.h.

Constructor & Destructor Documentation

QSPI ( PinName  io0,
PinName  io1,
PinName  io2,
PinName  io3,
PinName  sclk,
PinName  ssel = NC,
int  mode = 0 
)

Create a QSPI master connected to the specified pins.

io0-io3 is used to specify the Pins used for Quad SPI mode

Parameters
io01st IO pin used for sending/receiving data during data phase of a transaction
io12nd IO pin used for sending/receiving data during data phase of a transaction
io23rd IO pin used for sending/receiving data during data phase of a transaction
io34th IO pin used for sending/receiving data during data phase of a transaction
sclkQSPI Clock pin
sselQSPI chip select pin
modeClock polarity and phase mode (0 - 3) of SPI (Default: Mode=0 uses CPOL=0, CPHA=0, Mode=1 uses CPOL=1, CPHA=1)
QSPI ( const qspi_pinmap_t pinmap,
int  mode = 0 
)

Create a QSPI master connected to the specified pins.

io0-io3 is used to specify the Pins used for Quad SPI mode

Parameters
pinmapreference to structure which holds static pinmap
modeClock polarity and phase mode (0 - 3) of SPI (Default: Mode=0 uses CPOL=0, CPHA=0, Mode=1 uses CPOL=1, CPHA=1)

Member Function Documentation

qspi_status_t command_transfer ( qspi_inst_t  instruction,
int  address,
const char *  tx_buffer,
size_t  tx_length,
const char *  rx_buffer,
size_t  rx_length 
)

Perform a transaction to write to an address(a control register) and get the status results.

Parameters
instructionInstruction value to be used in instruction phase. Use QSPI_NO_INST to skip the instruction phase
addressSome instruction might require address. Use -1 if no address
tx_bufferBuffer containing data to be sent to peripheral
tx_lengthPointer to a variable containing the length of data to be transmitted, and on return this variable will be updated with the actual number of bytes written
rx_bufferBuffer for data to be read from the peripheral
rx_lengthPointer to a variable containing the length of rx_buffer, and on return this variable will be updated with the actual number of bytes read
Returns
Returns QSPI_STATUS_SUCCESS on successful reads and QSPI_STATUS_ERROR on failed reads.
qspi_status_t configure_format ( qspi_bus_width_t  inst_width,
qspi_bus_width_t  address_width,
qspi_address_size_t  address_size,
qspi_bus_width_t  alt_width,
qspi_alt_size_t  alt_size,
qspi_bus_width_t  data_width,
int  dummy_cycles 
)

Configure the data transmission format.

Parameters
inst_widthBus width used by instruction phase(Valid values are QSPI_CFG_BUS_SINGLE, QSPI_CFG_BUS_DUAL, QSPI_CFG_BUS_QUAD)
address_widthBus width used by address phase(Valid values are QSPI_CFG_BUS_SINGLE, QSPI_CFG_BUS_DUAL, QSPI_CFG_BUS_QUAD)
address_sizeSize in bits used by address phase(Valid values are QSPI_CFG_ADDR_SIZE_8, QSPI_CFG_ADDR_SIZE_16, QSPI_CFG_ADDR_SIZE_24, QSPI_CFG_ADDR_SIZE_32)
alt_widthBus width used by alt phase(Valid values are QSPI_CFG_BUS_SINGLE, QSPI_CFG_BUS_DUAL, QSPI_CFG_BUS_QUAD)
alt_sizeSize in bits used by alt phase (must be a multiple of the number of bus lines indicated in alt_width)
data_widthBus width used by data phase(Valid values are QSPI_CFG_BUS_SINGLE, QSPI_CFG_BUS_DUAL, QSPI_CFG_BUS_QUAD)
dummy_cyclesNumber of dummy clock cycles to be used after alt phase
qspi_status_t read ( int  address,
char *  rx_buffer,
size_t *  rx_length 
)

Read from QSPI peripheral with the preset read_instruction and alt_value.

Parameters
addressAddress to be accessed in QSPI peripheral
rx_bufferBuffer for data to be read from the peripheral
rx_lengthPointer to a variable containing the length of rx_buffer, and on return this variable will be updated with the actual number of bytes read
Returns
Returns QSPI_STATUS_SUCCESS on successful reads and QSPI_STATUS_ERROR on failed reads.
qspi_status_t read ( qspi_inst_t  instruction,
int  alt,
int  address,
char *  rx_buffer,
size_t *  rx_length 
)

Read from QSPI peripheral using custom read instruction, alt values.

Parameters
instructionInstruction value to be used in instruction phase. Use QSPI_NO_INST to skip the instruction phase
altAlt value to be used in Alternate-byte phase. Use -1 for ignoring Alternate-byte phase
addressAddress to be accessed in QSPI peripheral
rx_bufferBuffer for data to be read from the peripheral
rx_lengthPointer to a variable containing the length of rx_buffer, and on return this variable will be updated with the actual number of bytes read
Returns
Returns QSPI_STATUS_SUCCESS on successful reads and QSPI_STATUS_ERROR on failed reads.
qspi_status_t set_frequency ( int  hz = 1000000)

Set the qspi bus clock frequency.

Parameters
hzSCLK frequency in hz (default = 1MHz)
Returns
Returns QSPI_STATUS_SUCCESS on successful, fails if the interface is already init-ed
qspi_status_t write ( int  address,
const char *  tx_buffer,
size_t *  tx_length 
)

Write to QSPI peripheral using custom write instruction.

Parameters
addressAddress to be accessed in QSPI peripheral
tx_bufferBuffer containing data to be sent to peripheral
tx_lengthPointer to a variable containing the length of data to be transmitted, and on return this variable will be updated with the actual number of bytes written
Returns
Returns QSPI_STATUS_SUCCESS on successful reads and QSPI_STATUS_ERROR on failed reads.
qspi_status_t write ( qspi_inst_t  instruction,
int  alt,
int  address,
const char *  tx_buffer,
size_t *  tx_length 
)

Write to QSPI peripheral using custom write instruction, alt values.

Parameters
instructionInstruction value to be used in instruction phase. Use QSPI_NO_INST to skip the instruction phase
altAlt value to be used in Alternate-byte phase. Use -1 for ignoring Alternate-byte phase
addressAddress to be accessed in QSPI peripheral
tx_bufferBuffer containing data to be sent to peripheral
tx_lengthPointer to a variable containing the length of data to be transmitted, and on return this variable will be updated with the actual number of bytes written
Returns
Returns QSPI_STATUS_SUCCESS on successful reads and QSPI_STATUS_ERROR on failed reads.
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.