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

Overview

The ROMAPI driver provides the functionalities to operate the external NOR Flash connected to the FLEXSPI controller.

The ROMAPI driver supports:

Data Structures

struct  serial_nor_config_option_t
 Serial NOR Configuration Option. More...
 
struct  flexspi_lut_seq_t
 FLEXSPI LUT Sequence structure. More...
 
struct  flexspi_mem_config_t
 FLEXSPI Memory Configuration Block. More...
 
struct  flexspi_nor_config_t
 Serial NOR configuration block. More...
 
struct  flexspi_xfer_t
 FLEXSPI Transfer Context. More...
 

Macros

#define FSL_ROM_ROMAPI_VERSION   (MAKE_VERSION(1U, 1U, 1U))
 ROM API version 1.1.1. More...
 
#define FSL_ROM_FLEXSPINOR_DRIVER_VERSION   (MAKE_VERSION(1U, 7U, 0U))
 ROM FLEXSPI NOR driver version 1.7.0. More...
 
#define kROM_StatusGroup_FLEXSPINOR   201U
 ROM FLEXSPI NOR status group number. More...
 
#define FSL_ROM_FLEXSPI_BITMASK(bit_offset)   (1U << (bit_offset))
 Generate bit mask.
 
#define FLEXSPI_CFG_BLK_TAG   (0x42464346UL)
 FLEXSPI memory config block related defintions. More...
 
#define FLEXSPI_CFG_BLK_VERSION   (0x56010400UL)
 V1.4.0.
 
#define NOR_CMD_LUT_SEQ_IDX_READ   0U
 NOR LUT sequence index used for default LUT assignment NOTE: The will take effect if the lut sequences are not customized. More...
 
#define NOR_CMD_LUT_SEQ_IDX_READSTATUS   1U
 Read Status LUT sequence id in lookupTable stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_READSTATUS_XPI   2U
 Read status DPI/QPI/OPI sequence id in lookupTable stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE   3U
 Write Enable sequence id in lookupTable stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_XPI   4U
 Write Enable DPI/QPI/OPI sequence id in lookupTable stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_ERASESECTOR   5U
 Erase Sector sequence id in lookupTable stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_ERASEBLOCK   8U
 Erase Block sequence id in lookupTable stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM   9U
 Program sequence id in lookupTable stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_CHIPERASE   11U
 Chip Erase sequence in lookupTable id stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_READ_SFDP   13U
 Read SFDP sequence in lookupTable id stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_RESTORE_NOCMD   14U
 Restore 0-4-4/0-8-8 mode sequence id in lookupTable stored in config block.
 
#define NOR_CMD_LUT_SEQ_IDX_EXIT_NOCMD   15U
 Exit 0-4-4/0-8-8 mode sequence id in lookupTable stored in config blobk.
 

Enumerations

enum  {
  kSerialFlash_ISSI_ManufacturerID = 0x9DU,
  kSerialFlash_Adesto_ManufacturerID = 0x1F,
  kSerialFlash_Winbond_ManufacturerID = 0xEFU,
  kSerialFlash_Cypress_ManufacturerID = 0x01U
}
 Manufacturer ID. More...
 
enum  _flexspi_nor_status {
  kStatus_ROM_FLEXSPI_SequenceExecutionTimeout,
  kStatus_ROM_FLEXSPI_InvalidSequence = MAKE_STATUS(kStatusGroup_FLEXSPI, 1),
  kStatus_ROM_FLEXSPI_DeviceTimeout = MAKE_STATUS(kStatusGroup_FLEXSPI, 2),
  kStatus_ROM_FLEXSPINOR_SFDP_NotFound,
  kStatus_ROM_FLEXSPINOR_Flash_NotFound,
  kStatus_FLEXSPINOR_DTRRead_DummyProbeFailed
}
 ROM FLEXSPI NOR flash status. More...
 
enum  flexspi_operation_t {
  kFLEXSPIOperation_Command,
  kFLEXSPIOperation_Config,
  kFLEXSPIOperation_Write,
  kFLEXSPIOperation_Read
}
 

Functions

void ROM_API_Init (void)
 ROM API init. More...
 

Common ROMAPI fearures info defines

#define FSL_ROM_HAS_FLEXSPINOR_API   (1)
 
#define FSL_ROM_HAS_RUNBOOTLOADER_API   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_GET_CONFIG   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_FLASH_INIT   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_SECTOR   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_BLOCK   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_ALL   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_READ   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_UPDATE_LUT   (1)
 
#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_CMD_XFER   (1)
 

Support for init FLEXSPI NOR configuration

enum  
 Flash Pad Definitions.
 
enum  {
  kFLEXSPIClk_SDR,
  kFLEXSPIClk_DDR
}
 FLEXSPI clock configuration type. More...
 
enum  _flexspi_read_sample_clk
 FLEXSPI Read Sample Clock Source definition.
 
enum  { kFLEXSPIDeviceType_SerialNOR = 1U }
 Flash Type Definition. More...
 
enum  {
  kDeviceConfigCmdType_Generic,
  kDeviceConfigCmdType_QuadEnable,
  kDeviceConfigCmdType_Spi2Xpi,
  kDeviceConfigCmdType_Xpi2Spi,
  kDeviceConfigCmdType_Spi2NoCmd,
  kDeviceConfigCmdType_Reset
}
 Flash Configuration Command Type. More...
 
enum  _flexspi_serial_clk_freq
 Defintions for FLEXSPI Serial Clock Frequency.
 
enum  {
  kFLEXSPIMiscOffset_DiffClkEnable = 0U,
  kFLEXSPIMiscOffset_Ck2Enable = 1U,
  kFLEXSPIMiscOffset_ParallelEnable = 2U,
  kFLEXSPIMiscOffset_WordAddressableEnable = 3U,
  kFLEXSPIMiscOffset_SafeConfigFreqEnable = 4U,
  kFLEXSPIMiscOffset_PadSettingOverrideEnable = 5U,
  kFLEXSPIMiscOffset_DdrModeEnable = 6U,
  kFLEXSPIMiscOffset_UseValidTimeForAllFreq = 7U
}
 Misc feature bit definitions. More...
 

Enter Bootloader

void ROM_RunBootloader (void *arg)
 Enter Bootloader. More...
 

GetConfig

status_t ROM_FLEXSPI_NorFlash_GetConfig (uint32_t instance, flexspi_nor_config_t *config, serial_nor_config_option_t *option)
 Get FLEXSPI NOR Configuration Block based on specified option. More...
 

Initialization

status_t ROM_FLEXSPI_NorFlash_Init (uint32_t instance, flexspi_nor_config_t *config)
 Initialize Serial NOR devices via FLEXSPI. More...
 

Programming

status_t ROM_FLEXSPI_NorFlash_ProgramPage (uint32_t instance, flexspi_nor_config_t *config, uint32_t dst_addr, const uint32_t *src)
 Program data to Serial NOR via FLEXSPI. More...
 

Reading

status_t ROM_FLEXSPI_NorFlash_Read (uint32_t instance, flexspi_nor_config_t *config, uint32_t *dst, uint32_t start, uint32_t lengthInBytes)
 Read data from Serial NOR via FLEXSPI. More...
 

Erasing

status_t ROM_FLEXSPI_NorFlash_Erase (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 ROM_FLEXSPI_NorFlash_EraseSector (uint32_t instance, flexspi_nor_config_t *config, uint32_t address)
 Erase one sector specified by address. More...
 
status_t ROM_FLEXSPI_NorFlash_EraseBlock (uint32_t instance, flexspi_nor_config_t *config, uint32_t start)
 Erase one block specified by address. More...
 
status_t ROM_FLEXSPI_NorFlash_EraseAll (uint32_t instance, flexspi_nor_config_t *config)
 Erase all the Serial NOR devices connected on FLEXSPI. More...
 

Command

status_t ROM_FLEXSPI_NorFlash_CommandXfer (uint32_t instance, flexspi_xfer_t *xfer)
 FLEXSPI command. More...
 

UpdateLut

status_t ROM_FLEXSPI_NorFlash_UpdateLut (uint32_t instance, uint32_t seqIndex, const uint32_t *lutBase, uint32_t seqNumber)
 Configure FLEXSPI Lookup table. More...
 

Device status

status_t ROM_FLEXSPI_NorFlash_WaitBusy (uint32_t instance, flexspi_nor_config_t *config, bool isParallelMode, uint32_t address)
 Wait until device is idle. More...
 

ClearCache

void ROM_FLEXSPI_NorFlash_ClearCache (uint32_t instance)
 Software reset for the FLEXSPI logic. More...
 

Data Structure Documentation

struct serial_nor_config_option_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_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] Data hold time, default value: 3
 
uint8_t csSetupTime
 [0x00e-0x00e] Date setup time, default value: 3
 
uint8_t columnAddressWidth
 [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet
 
uint8_t deviceModeCfgEnable
 [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable
 
uint8_t deviceModeType
 [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc. More...
 
uint16_t waitTimeCfgCommands
 [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command
 
flexspi_lut_seq_t deviceModeSeq
 [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved
 
uint32_t deviceModeArg
 [0x018-0x01b] Argument/Parameter for device configuration
 
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 details
 
uint8_t deviceType
 [0x044-0x044] Device Type: See Flash Type Definition for more details
 
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 Chapter for more details
 
uint8_t lutCustomSeqEnable
 [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH
 
uint32_t reserved3 [2]
 [0x048-0x04f] Reserved for future use
 
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 - busy flag is 0 when flash device is busy
 
uint32_t lookupTable [64]
 [0x080-0x17f] Lookup table holds Flash command sequences
 
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::deviceModeType
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 reserve2 [11]
 Reserved for future use.
 
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.
 

Macro Definition Documentation

#define FSL_ROM_ROMAPI_VERSION   (MAKE_VERSION(1U, 1U, 1U))
#define FSL_ROM_FLEXSPINOR_DRIVER_VERSION   (MAKE_VERSION(1U, 7U, 0U))
#define kROM_StatusGroup_FLEXSPINOR   201U
#define FLEXSPI_CFG_BLK_TAG   (0x42464346UL)

ascii "FCFB" Big Endian

#define NOR_CMD_LUT_SEQ_IDX_READ   0U

READ LUT sequence id in lookupTable stored in config block

Enumeration Type Documentation

anonymous enum
Enumerator
kFLEXSPIClk_SDR 

Clock configure for SDR mode.

kFLEXSPIClk_DDR 

Clock configurat for DDR mode.

anonymous enum
Enumerator
kFLEXSPIDeviceType_SerialNOR 

Flash device is Serial NOR.

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.

anonymous enum
Enumerator
kFLEXSPIMiscOffset_DiffClkEnable 

Bit for Differential clock enable.

kFLEXSPIMiscOffset_Ck2Enable 

Bit for CK2 enable.

kFLEXSPIMiscOffset_ParallelEnable 

Bit for Parallel mode enable.

kFLEXSPIMiscOffset_WordAddressableEnable 

Bit for Word Addressable enable.

kFLEXSPIMiscOffset_SafeConfigFreqEnable 

Bit for Safe Configuration Frequency enable.

kFLEXSPIMiscOffset_PadSettingOverrideEnable 

Bit for Pad setting override enable.

kFLEXSPIMiscOffset_DdrModeEnable 

Bit for DDR clock confiuration indication.

kFLEXSPIMiscOffset_UseValidTimeForAllFreq 

Bit for DLLCR settings under all modes.

anonymous enum
Enumerator
kSerialFlash_ISSI_ManufacturerID 

Manufacturer ID of the ISSI serial flash.

kSerialFlash_Adesto_ManufacturerID 

Manufacturer ID of the Adesto Technologies serial flash.

kSerialFlash_Winbond_ManufacturerID 

Manufacturer ID of the Winbond serial flash.

kSerialFlash_Cypress_ManufacturerID 

Manufacturer ID for Cypress.

Enumerator
kStatus_ROM_FLEXSPI_SequenceExecutionTimeout 

Status for Sequence Execution timeout.

kStatus_ROM_FLEXSPI_InvalidSequence 

Status for Invalid Sequence.

kStatus_ROM_FLEXSPI_DeviceTimeout 

Status for Device timeout.

kStatus_ROM_FLEXSPINOR_SFDP_NotFound 

Status for SFDP read failure.

kStatus_ROM_FLEXSPINOR_Flash_NotFound 

Status for Flash detection failure.

kStatus_FLEXSPINOR_DTRRead_DummyProbeFailed 

Status for DDR Read dummy probe failure.

Enumerator
kFLEXSPIOperation_Command 

FLEXSPI operation: Only command, both TX and RX buffer are ignored.

kFLEXSPIOperation_Config 

FLEXSPI operation: Configure device mode, the TX FIFO size is fixed in LUT.

kFLEXSPIOperation_Write 

FLEXSPI operation: Write, only TX buffer is effective.

kFLEXSPIOperation_Read 

FLEXSPI operation: Read, only Rx Buffer is effective.

Function Documentation

void ROM_API_Init ( void  )

Get the bootloader api entry address.

void ROM_RunBootloader ( void *  arg)
Parameters
argA pointer to the storage for the bootloader param. refer to System Boot Chapter in device reference manual for details.
status_t ROM_FLEXSPI_NorFlash_GetConfig ( uint32_t  instance,
flexspi_nor_config_t config,
serial_nor_config_option_t option 
)
Parameters
instancestorge the instance of FLEXSPI.
configA pointer to the storage for the driver runtime state.
optionA pointer to the storage Serial NOR Configuration Option Context.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_DeviceTimeoutthe device timeout
status_t ROM_FLEXSPI_NorFlash_Init ( uint32_t  instance,
flexspi_nor_config_t config 
)

This function checks and initializes the FLEXSPI module for the other FLEXSPI APIs.

Parameters
instancestorge the instance of FLEXSPI.
configA pointer to the storage for the driver runtime state.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_DeviceTimeoutthe device timeout
status_t ROM_FLEXSPI_NorFlash_ProgramPage ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t  dst_addr,
const uint32_t *  src 
)

This function programs the NOR flash memory with the dest address for a given flash area as determined by the dst address and the length.

Parameters
instancestorge the instance of FLEXSPI.
configA pointer to the storage for the driver runtime state.
dst_addrA pointer to the desired flash memory to be programmed. NOTE: It is recommended that use page aligned access; If the dst_addr is not aligned to page,the driver automatically aligns address down with the page address.
srcA pointer to the source buffer of data that is to be programmed into the NOR flash.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_DeviceTimeoutthe device timeout
status_t ROM_FLEXSPI_NorFlash_Read ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t *  dst,
uint32_t  start,
uint32_t  lengthInBytes 
)

This function read the NOR flash memory with the start address for a given flash area as determined by the dst address and the length.

Parameters
instancestorge the instance of FLEXSPI.
configA pointer to the storage for the driver runtime state.
dstA pointer to the dest buffer of data that is to be read from the NOR flash. NOTE: It is recommended that use page aligned access; If the dstAddr is not aligned to page,the driver automatically aligns address down with the page address.
startThe start address of the desired NOR flash memory to be read.
lengthInBytesThe length, given in bytes to be read.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_DeviceTimeoutthe device timeout
status_t ROM_FLEXSPI_NorFlash_Erase ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t  start,
uint32_t  length 
)

This function erases the appropriate number of flash sectors based on the desired start address and length.

Parameters
instancestorge the index of FLEXSPI.
configA pointer to the storage for the driver runtime state.
startThe start address of the desired NOR flash memory to be erased. NOTE: It is recommended that use sector-aligned access nor device; If dstAddr is not aligned with the sector,the driver automatically aligns address down with the sector address.
lengthThe length, given in bytes to be erased. NOTE: It is recommended that use sector-aligned access nor device; If length is not aligned with the sector,the driver automatically aligns up with the sector.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_DeviceTimeoutthe device timeout
status_t ROM_FLEXSPI_NorFlash_EraseSector ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t  address 
)

This function erases one of NOR flash sectors based on the desired address.

Parameters
instancestorge the index of FLEXSPI.
configA pointer to the storage for the driver runtime state.
addressThe start address of the desired NOR flash memory to be erased. NOTE: It is recommended that use sector-aligned access nor device; If dstAddr is not aligned with the sector,The driver automatically aligns address down with the sector address.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_DeviceTimeoutthe device timeout
status_t ROM_FLEXSPI_NorFlash_EraseBlock ( uint32_t  instance,
flexspi_nor_config_t config,
uint32_t  start 
)

This function erases one block of NOR flash based on the desired address.

Parameters
instancestorge the index of FLEXSPI.
configA pointer to the storage for the driver runtime state.
startThe start address of the desired NOR flash memory to be erased. NOTE: It is recommended that use block-aligned access nor device; If dstAddr is not aligned with the block,The driver automatically aligns address down with the block address.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_DeviceTimeoutthe device timeout
status_t ROM_FLEXSPI_NorFlash_EraseAll ( uint32_t  instance,
flexspi_nor_config_t config 
)
Parameters
instancestorge the instance of FLEXSPI.
configA pointer to the storage for the driver runtime state.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_DeviceTimeoutthe device timeout
status_t ROM_FLEXSPI_NorFlash_CommandXfer ( uint32_t  instance,
flexspi_xfer_t xfer 
)

This function is used to perform the command write sequence to the NOR device.

Parameters
instancestorge the index of FLEXSPI.
xferA pointer to the storage FLEXSPI Transfer Context.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
status_t ROM_FLEXSPI_NorFlash_UpdateLut ( uint32_t  instance,
uint32_t  seqIndex,
const uint32_t *  lutBase,
uint32_t  seqNumber 
)
Parameters
instancestorge the index of FLEXSPI.
seqIndexstorge the sequence Id.
lutBaseA pointer to the look-up-table for command sequences.
seqNumberstorge sequence number.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
status_t ROM_FLEXSPI_NorFlash_WaitBusy ( uint32_t  instance,
flexspi_nor_config_t config,
bool  isParallelMode,
uint32_t  address 
)
Parameters
instanceIndicates the index of FLEXSPI.
configA pointer to the storage for the driver runtime state
isParallelModeIndicates whether NOR flash is in parallel mode.
addressIndicates the operation(ersse/program/read) address for serial NOR flash.
Return values
kStatus_SuccessApi was executed succesfuly.
kStatus_InvalidArgumentA invalid argument is provided.
kStatus_ROM_FLEXSPI_SequenceExecutionTimeoutSequence Execution timeout.
kStatus_ROM_FLEXSPI_InvalidSequenceA invalid Sequence is provided.
kStatus_ROM_FLEXSPI_DeviceTimeoutDevice timeout.
void ROM_FLEXSPI_NorFlash_ClearCache ( uint32_t  instance)

This function sets the software reset flags for both AHB and buffer domain and resets both AHB buffer and also IP FIFOs.

Parameters
instancestorge the index of FLEXSPI.