MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages

Overview

Data Structures

struct  serial_nor_config_option_t
 Serial NOR Configuration Option. More...
 
union  flash_run_context_t
 Flash Run Context. More...
 
struct  flexspi_lut_seq_t
 FlexSPI LUT Sequence structure. More...
 
struct  flexspi_dll_time_t
 FlexSPI Dll Time Block. More...
 
struct  flexspi_mem_config_t
 FlexSPI Memory Configuration Block. More...
 
struct  flexspi_xfer_t
 FlexSPI Transfer Context. More...
 
struct  flexspi_nor_config_t
 Serial NOR configuration block. More...
 

Macros

#define NOR_CMD_INDEX_READ   CMD_INDEX_READ
 FlexSPI LUT command. More...
 
#define NOR_CMD_INDEX_READSTATUS   CMD_INDEX_READSTATUS
 1
 
#define NOR_CMD_INDEX_WRITEENABLE   CMD_INDEX_WRITEENABLE
 2
 
#define NOR_CMD_INDEX_ERASESECTOR   3
 3
 
#define NOR_CMD_INDEX_PAGEPROGRAM   CMD_INDEX_WRITE
 4
 
#define NOR_CMD_INDEX_CHIPERASE   5
 5
 
#define NOR_CMD_INDEX_DUMMY   6
 6
 
#define NOR_CMD_INDEX_ERASEBLOCK   7
 7
 
#define NOR_CMD_LUT_SEQ_IDX_READ   CMD_LUT_SEQ_IDX_READ
 0 READ LUT sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_READSTATUS   CMD_LUT_SEQ_IDX_READSTATUS
 1 Read Status LUT sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_READSTATUS_XPI   2
 2 Read status DPI/QPI/OPI sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE   CMD_LUT_SEQ_IDX_WRITEENABLE
 3 Write Enable sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_XPI   4
 4 Write Enable DPI/QPI/OPI sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_ERASESECTOR   5
 5 Erase Sector sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_ERASEBLOCK   8
 8 Erase Block sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM   CMD_LUT_SEQ_IDX_WRITE
 9 Program sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_CHIPERASE   11
 11 Chip Erase sequence in lookupTable id stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_READ_SFDP   13
 13 Read SFDP sequence in lookupTable id stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_RESTORE_NOCMD   14
 14 Restore 0-4-4/0-8-8 mode sequence id in lookupTable stored in config block
 
#define NOR_CMD_LUT_SEQ_IDX_EXIT_NOCMD   15
 15 Exit 0-4-4/0-8-8 mode sequence id in lookupTable stored in config blobk
 

Enumerations

enum  
 Flash Configuration Option0 device_type. More...
 
enum  
 Flash Configuration Option0 quad_mode_setting. More...
 
enum  
 Flash Configuration Option0 misc_mode. More...
 
enum  
 FLEXSPI_RESET_PIN boot configurations in OTP.
 
enum  
 Flash Configuration Option1 flash_connection. More...
 
enum  
 Flash Device Mode Configuration Sequence.
 
enum  
 Flash Config Mode Definition.
 
enum  {
  kFlexSpiDeviceType_SerialNOR = 1,
  kFlexSpiDeviceType_SerialNAND = 2,
  kFlexSpiDeviceType_SerialRAM = 3,
  kFlexSpiDeviceType_MCP_NOR_NAND = 0x12,
  kFlexSpiDeviceType_MCP_NOR_RAM = 0x13
}
 Flash Device Type Definition. More...
 
enum  
 Flash Pad Definitions.
 
enum  {
  kDeviceConfigCmdType_Generic,
  kDeviceConfigCmdType_QuadEnable,
  kDeviceConfigCmdType_Spi2Xpi,
  kDeviceConfigCmdType_Xpi2Spi,
  kDeviceConfigCmdType_Spi2NoCmd,
  kDeviceConfigCmdType_Reset
}
 Flash Configuration Command Type. More...
 
enum  flexspi_operation_t {
  kFlexSpiOperation_Command = 0,
  kFlexSpiOperation_Config = 1,
  kFlexSpiOperation_Write = 2,
  kFlexSpiOperation_Read = 3,
  kFlexSpiOperation_End = kFlexSpiOperation_Read
}
 FlexSPI Operation Type. More...
 

Functions

status_t IAP_FlexspiNorInit (uint32_t instance, flexspi_nor_config_t *config)
 Initialize Serial NOR devices via FlexSPI. More...
 
status_t IAP_FlexspiNorPageProgram (uint32_t instance, flexspi_nor_config_t *config, uint32_t dstAddr, const uint32_t *src)
 Program data to Serial NOR via FlexSPI. More...
 
status_t IAP_FlexspiNorEraseAll (uint32_t instance, flexspi_nor_config_t *config)
 Erase all the Serial NOR devices connected on FlexSPI. More...
 
status_t IAP_FlexspiNorErase (uint32_t instance, flexspi_nor_config_t *config, uint32_t start, uint32_t length)
 Erase Flash Region specified by address and length. More...
 
status_t IAP_FlexspiNorEraseSector (uint32_t instance, flexspi_nor_config_t *config, uint32_t address)
 Erase one sector specified by address. More...
 
status_t IAP_FlexspiNorEraseBlock (uint32_t instance, flexspi_nor_config_t *config, uint32_t address)
 Erase one block specified by address. More...
 
status_t IAP_FlexspiNorGetConfig (uint32_t instance, flexspi_nor_config_t *config, serial_nor_config_option_t *option)
 Get FlexSPI NOR Configuration Block based on specified option. More...
 
status_t IAP_FlexspiNorRead (uint32_t instance, flexspi_nor_config_t *config, uint32_t *dst, uint32_t start, uint32_t bytes)
 Read data from Flexspi NOR Flash. More...
 
status_t IAP_FlexspiXfer (uint32_t instance, flexspi_xfer_t *xfer)
 Get FlexSPI Xfer data. More...
 
status_t IAP_FlexspiUpdateLut (uint32_t instance, uint32_t seqIndex, const uint32_t *lutBase, uint32_t numberOfSeq)
 Update FlexSPI Lookup table. More...
 
status_t IAP_FlexspiSetClockSource (uint32_t clockSrc)
 Set the clock source for FlexSPI. More...
 
void IAP_FlexspiConfigClock (uint32_t instance, uint32_t freqOption, uint32_t sampleClkMode)
 Configure the flexspi interface clock frequency and data sample mode. More...
 
status_t IAP_FlexspiNorAutoConfig (uint32_t instance, flexspi_nor_config_t *config, serial_nor_config_option_t *option)
 Configure flexspi nor automatically. More...
 

FlexSPI status.

enum  
 FlexSPI Driver status group. More...
 
enum  _flexspi_status {
  kStatus_FLEXSPI_Success = MAKE_STATUS(kStatusGroup_Generic, 0),
  kStatus_FLEXSPI_Fail = MAKE_STATUS(kStatusGroup_Generic, 1),
  kStatus_FLEXSPI_InvalidArgument = MAKE_STATUS(kStatusGroup_Generic, 4),
  kStatus_FLEXSPI_SequenceExecutionTimeout,
  kStatus_FLEXSPI_InvalidSequence = MAKE_STATUS(kStatusGroup_FlexSPI, 1),
  kStatus_FLEXSPI_DeviceTimeout = MAKE_STATUS(kStatusGroup_FlexSPI, 2),
  kStatus_FLEXSPINOR_ProgramFail,
  kStatus_FLEXSPINOR_EraseSectorFail,
  kStatus_FLEXSPINOR_EraseAllFail = MAKE_STATUS(kStatusGroup_FlexSPINOR, 2),
  kStatus_FLEXSPINOR_WaitTimeout = MAKE_STATUS(kStatusGroup_FlexSPINOR, 3) ,
  kStatus_FLEXSPINOR_WriteAlignmentError,
  kStatus_FLEXSPINOR_CommandFailure,
  kStatus_FLEXSPINOR_SFDP_NotFound = MAKE_STATUS(kStatusGroup_FlexSPINOR, 7),
  kStatus_FLEXSPINOR_Unsupported_SFDP_Version,
  kStatus_FLEXSPINOR_Flash_NotFound,
  kStatus_FLEXSPINOR_DTRRead_DummyProbeFailed
}
 FlexSPI Driver status. More...
 

Data Structure Documentation

struct serial_nor_config_option_t
union flash_run_context_t
struct flexspi_lut_seq_t

Data Fields

uint8_t seqNum
 Sequence Number, valid number: 1-16.
 
uint8_t seqId
 Sequence Index, valid number: 0-15.
 
struct flexspi_dll_time_t
struct flexspi_mem_config_t

Data Fields

uint32_t tag
 [0x000-0x003] Tag, fixed value 0x42464346UL
 
uint32_t version
 [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix
 
uint32_t reserved0
 [0x008-0x00b] Reserved for future use
 
uint8_t readSampleClkSrc
 [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3
 
uint8_t csHoldTime
 [0x00d-0x00d] CS hold time, default value: 3
 
uint8_t csSetupTime
 [0x00e-0x00e] CS setup time, default value: 3
 
uint8_t columnAddressWidth
 [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For
 
uint8_t deviceModeCfgEnable
 Serial NAND, need to refer to datasheet. More...
 
uint8_t deviceModeType
 [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch,
 
uint16_t waitTimeCfgCommands
 Generic configuration, etc. More...
 
flexspi_lut_seq_t deviceModeSeq
 DPI/QPI/OPI switch or reset command. More...
 
uint32_t deviceModeArg
 sequence number, [31:16] Reserved More...
 
uint8_t configCmdEnable
 [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable
 
uint8_t configModeType [3]
 [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe
 
flexspi_lut_seq_t configCmdSeqs [3]
 [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq
 
uint32_t reserved1
 [0x02c-0x02f] Reserved for future use
 
uint32_t configCmdArgs [3]
 [0x030-0x03b] Arguments/Parameters for device Configuration commands
 
uint32_t reserved2
 [0x03c-0x03f] Reserved for future use
 
uint32_t controllerMiscOption
 [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more
 
uint8_t deviceType
 details More...
 
uint8_t sflashPadType
 [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal
 
uint8_t serialClkFreq
 [0x046-0x046] Serial Flash Frequencey, device specific definitions, See System Boot
 
uint8_t lutCustomSeqEnable
 Chapter for more details. More...
 
uint32_t reserved3 [2]
 be done using 1 LUT sequence, currently, only applicable to HyperFLASH More...
 
uint32_t sflashA1Size
 [0x050-0x053] Size of Flash connected to A1
 
uint32_t sflashA2Size
 [0x054-0x057] Size of Flash connected to A2
 
uint32_t sflashB1Size
 [0x058-0x05b] Size of Flash connected to B1
 
uint32_t sflashB2Size
 [0x05c-0x05f] Size of Flash connected to B2
 
uint32_t csPadSettingOverride
 [0x060-0x063] CS pad setting override value
 
uint32_t sclkPadSettingOverride
 [0x064-0x067] SCK pad setting override value
 
uint32_t dataPadSettingOverride
 [0x068-0x06b] data pad setting override value
 
uint32_t dqsPadSettingOverride
 [0x06c-0x06f] DQS pad setting override value
 
uint32_t timeoutInMs
 [0x070-0x073] Timeout threshold for read status command
 
uint32_t commandInterval
 [0x074-0x077] CS deselect interval between two commands
 
flexspi_dll_time_t dataValidTime [2]
 [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B
 
uint16_t busyOffset
 [0x07c-0x07d] Busy offset, valid value: 0-31
 
uint16_t busyBitPolarity
 [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 -
 
uint32_t lookupTable [64]
 busy flag is 0 when flash device is busy More...
 
flexspi_lut_seq_t lutCustomSeq [12]
 [0x180-0x1af] Customizable LUT Sequences
 
uint32_t reserved4 [4]
 [0x1b0-0x1bf] Reserved for future use
 

Field Documentation

uint8_t flexspi_mem_config_t::deviceModeCfgEnable

[0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable

uint16_t flexspi_mem_config_t::waitTimeCfgCommands

[0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for

flexspi_lut_seq_t flexspi_mem_config_t::deviceModeSeq

[0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt

uint32_t flexspi_mem_config_t::deviceModeArg

[0x018-0x01b] Argument/Parameter for device configuration

uint8_t flexspi_mem_config_t::deviceType

[0x044-0x044] Device Type: See Flash Type Definition for more details

uint8_t flexspi_mem_config_t::lutCustomSeqEnable

[0x047-0x047] LUT customization Enable, it is required if the program/erase cannot

uint32_t flexspi_mem_config_t::reserved3[2]

[0x048-0x04f] Reserved for future use

uint32_t flexspi_mem_config_t::lookupTable[64]

[0x080-0x17f] Lookup table holds Flash command sequences

struct flexspi_xfer_t

Data Fields

flexspi_operation_t operation
 FlexSPI operation.
 
uint32_t baseAddress
 FlexSPI operation base address.
 
uint32_t seqId
 Sequence Id.
 
uint32_t seqNum
 Sequence Number.
 
bool isParallelModeEnable
 Is a parallel transfer.
 
uint32_t * txBuffer
 Tx buffer.
 
uint32_t txSize
 Tx size in bytes.
 
uint32_t * rxBuffer
 Rx buffer.
 
uint32_t rxSize
 Rx size in bytes.
 
struct flexspi_nor_config_t

Data Fields

flexspi_mem_config_t memConfig
 Common memory configuration info via FlexSPI.
 
uint32_t pageSize
 Page size of Serial NOR.
 
uint32_t sectorSize
 Sector size of Serial NOR.
 
uint8_t ipcmdSerialClkFreq
 Clock frequency for IP command.
 
uint8_t isUniformBlockSize
 Sector/Block size is the same.
 
uint8_t isDataOrderSwapped
 Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2)
 
uint8_t reserved0 [1]
 Reserved for future use.
 
uint8_t serialNorType
 Serial NOR Flash type: 0/1/2/3.
 
uint8_t needExitNoCmdMode
 Need to exit NoCmd mode before other IP command.
 
uint8_t halfClkForNonReadCmd
 Half the Serial Clock for non-read command: true/false.
 
uint8_t needRestoreNoCmdMode
 Need to Restore NoCmd mode after IP commmand execution.
 
uint32_t blockSize
 Block size.
 
uint32_t flashStateCtx
 Flash State Context.
 
uint32_t reserve2 [10]
 Reserved for future use.
 

Macro Definition Documentation

#define NOR_CMD_INDEX_READ   CMD_INDEX_READ

0

Enumeration Type Documentation

anonymous enum
Enumerator
kStatus_FLEXSPI_Success 

API is executed successfully.

kStatus_FLEXSPI_Fail 

API is executed fails.

kStatus_FLEXSPI_InvalidArgument 

Invalid argument.

kStatus_FLEXSPI_SequenceExecutionTimeout 

The FlexSPI Sequence Execution timeout.

kStatus_FLEXSPI_InvalidSequence 

The FlexSPI LUT sequence invalid.

kStatus_FLEXSPI_DeviceTimeout 

The FlexSPI device timeout.

kStatus_FLEXSPINOR_ProgramFail 

Status for Page programming failure.

kStatus_FLEXSPINOR_EraseSectorFail 

Status for Sector Erase failure.

kStatus_FLEXSPINOR_EraseAllFail 

Status for Chip Erase failure.

kStatus_FLEXSPINOR_WaitTimeout 

Status for timeout.

kStatus_FLEXSPINOR_WriteAlignmentError 

Status for Alignement error.

kStatus_FLEXSPINOR_CommandFailure 

Status for Erase/Program Verify Error.

kStatus_FLEXSPINOR_SFDP_NotFound 

Status for SFDP read failure.

kStatus_FLEXSPINOR_Unsupported_SFDP_Version 

Status for Unrecognized SFDP version.

kStatus_FLEXSPINOR_Flash_NotFound 

Status for Flash detection failure.

kStatus_FLEXSPINOR_DTRRead_DummyProbeFailed 

Status for DDR Read dummy probe failure.

anonymous enum
anonymous enum
anonymous enum
anonymous enum
anonymous enum
Enumerator
kFlexSpiDeviceType_SerialNOR 

Flash devices are Serial NOR.

kFlexSpiDeviceType_SerialNAND 

Flash devices are Serial NAND.

kFlexSpiDeviceType_SerialRAM 

Flash devices are Serial RAM/HyperFLASH.

kFlexSpiDeviceType_MCP_NOR_NAND 

Flash device is MCP device, A1 is Serial NOR, A2 is Serial NAND.

kFlexSpiDeviceType_MCP_NOR_RAM 

Flash deivce is MCP device, A1 is Serial NOR, A2 is Serial RAMs.

anonymous enum
Enumerator
kDeviceConfigCmdType_Generic 

Generic command, for example: configure dummy cycles, drive strength, etc.

kDeviceConfigCmdType_QuadEnable 

Quad Enable command.

kDeviceConfigCmdType_Spi2Xpi 

Switch from SPI to DPI/QPI/OPI mode.

kDeviceConfigCmdType_Xpi2Spi 

Switch from DPI/QPI/OPI to SPI mode.

kDeviceConfigCmdType_Spi2NoCmd 

Switch to 0-4-4/0-8-8 mode.

kDeviceConfigCmdType_Reset 

Reset device command.

Enumerator
kFlexSpiOperation_Command 

FlexSPI operation: Only command, both TX and.

kFlexSpiOperation_Config 

RX buffer are ignored.

FlexSPI operation: Configure device mode, the

kFlexSpiOperation_Write 

TX FIFO size is fixed in LUT.

FlexSPI operation: Write, only TX buffer is

kFlexSpiOperation_Read 

effective

FlexSPI operation: Read, only Rx Buffer is

kFlexSpiOperation_End 

effective.

Function Documentation

status_t IAP_FlexspiNorInit ( uint32_t  instance,
flexspi_nor_config_t config 
)

This function configures the FlexSPI controller with the arguments pointed by param config.

Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiNorPageProgram ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t  dstAddr,
const uint32_t *  src 
)

This function Program data to specified destination address.

Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
dstAddrThe destination address to be programmed.
srcPoints to the buffer which hold the data to be programmed.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiNorEraseAll ( uint32_t  instance,
flexspi_nor_config_t config 
)
Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiNorErase ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t  start,
uint32_t  length 
)
Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
startThe start address to be erased.
lengthThe length to be erased.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiNorEraseSector ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t  address 
)
Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
addressThe address of the sector to be erased.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiNorEraseBlock ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t  address 
)
Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
addressThe address of the block to be erased.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiNorGetConfig ( uint32_t  instance,
flexspi_nor_config_t config,
serial_nor_config_option_t option 
)
Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
optionThe Flash Configuration Option block. Refer to serial_nor_config_option_t.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiNorRead ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t *  dst,
uint32_t  start,
uint32_t  bytes 
)
Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
dstBuffer address used to store the read data.
startThe Read address.
bytesThe Read size
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiXfer ( uint32_t  instance,
flexspi_xfer_t xfer 
)
Parameters
instanceFlexSPI controller instance, only support 0.
xferThe FlexSPI Transfer Context block. Refer to flexspi_xfer_t.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiUpdateLut ( uint32_t  instance,
uint32_t  seqIndex,
const uint32_t *  lutBase,
uint32_t  numberOfSeq 
)
Parameters
instanceFlexSPI controller instance, only support 0.
seqIndexThe index of FlexSPI LUT to be updated.
lutBasePoints to the buffer which hold the LUT data to be programmed.
numberOfSeqThe number of LUT seq that need to be updated.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiSetClockSource ( uint32_t  clockSrc)
Parameters
clockSrcClock source for flexspi interface.
Returns
The status flags. This is a member of the enumeration _flexspi_status
void IAP_FlexspiConfigClock ( uint32_t  instance,
uint32_t  freqOption,
uint32_t  sampleClkMode 
)
Parameters
instanceFlexSPI controller instance, only support 0.
freqOptionFlexSPI interface clock frequency selection.
sampleClkModeFlexSPI controller data sample mode.
Returns
The status flags. This is a member of the enumeration _flexspi_status
status_t IAP_FlexspiNorAutoConfig ( uint32_t  instance,
flexspi_nor_config_t config,
serial_nor_config_option_t option 
)
Parameters
instanceFlexSPI controller instance, only support 0.
configThe Flash configuration block. Refer to flexspi_nor_config_t.
optionThe Flash Configuration Option block. Refer to serial_nor_config_option_t.
Returns
The status flags. This is a member of the enumeration _flexspi_status