SPB_MULTI_SPI_TRANSFER structure (spb.h)
The SPB_MULTI_SPI_TRANSFER structure describes a SPI I/O operation which is to be executed using a multi-SPI transfer mode such as Dual or Quad SPI.
Syntax
typedef struct SPB_MULTI_SPI_TRANSFER {
SPB_MULTI_SPI_TRANSFER_HEADER Header;
ULONG TransferPhaseCount;
SPB_TRANSFER_LIST_ENTRY TransferPhases[1];
} SPB_MULTI_SPI_TRANSFER, *PSPB_MULTI_SPI_TRANSFER;
Members
Header
A SPB_MULTI_SPI_TRANSFER_HEADER structure containing the parameters of the transfer.
TransferPhaseCount
The number of transfer phases present in the transfer structure. For a read operation, this should be set to 2 (representing a read phase, then a write phase). For a write operation, this should be set to 1 (representing solely a write phase).
TransferPhases[1]
An array of SPB_TRANSFER_LIST_ENTRY structures, representing the phases of the transfer.
Remarks
If this structure is used directly (rather than SPB_MULTI_SPI_WRITE_TRANSFER or SPB_MULTI_SPI_READ_TRANSFER), it must be initialized using the SPB_MULTI_SPI_TRANSFER_INIT helper function.
This structure (and the associated header) allows for the following to be specified:
- Dual or quad SPI transfer modes.
- One or two transfer phases - a write phase, followed by an optional read phase.
- A variable number of bytes to be transmitted at the beginning of the write phase in single-SPI mode, before switching to the specified multi-SPI mode.
- Where a read phase is provided, a variable number of wait cycles between write and read phases - clock cycles where no data is to be transferred.
The following restrictions apply to this structure:
- The TransferPhases structure in the request must contain exactly one or two entries. The first entry describes a buffer that contains data to write to the device. The second, optional, entry describes a buffer used to hold data read from the device.
- The direction of these TransferPhases should be set to SpbTransferDirectionToDevice and SpbTransferDirectionFromDevice respectively.
- Each SPB_TRANSFER_LIST_ENTRY structure in the transfer list must specify a DelayInUs value of zero.
Requirements
Requirement | Value |
---|---|
Header | spb.h |