MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
IAP: In Application Programming Driver

Overview

The MCUXpresso SDK provides a driver for the In Application Programming (IAP).
It provides a set of functions to call the on-chip in application programming interface. User code executing from on-chip RAM can call these function to read information like part id, read and write flash, read and write ffr.

In Application Programming operation

FLASH_Init() Initializes the global flash properties structure members

FLASH_Erase() Erases the flash sectors encompassed by parameters passed into function

FLASH_Program() Programs flash with data at locations passed in through parameters

FLASH_VerifyErase() Verifies an erasure of the desired flash area hase been erased

FLASH_VerifyProgram() Verifies programming of the desired flash area hase been programed

FLASH_GetProperty() Returns the desired flash property.

FFR_Init() Generic APIs for FFR

FFR_Deinit() Generic APIs for FFR

FFR_CustomerPagesInit() APIs to access CFPA pages

FFR_InfieldPageWrite() APIs to access CFPA pages

FFR_GetCustomerInfieldData() APIs to access CMPA pages

FFR_GetCustomerData() Read data stored in 'Customer Factory CFG Page

FFR_KeystoreWrite() Read data stored in 'Customer Factory CFG Page

FFR_KeystoreGetAC() Read data stored in 'Customer Factory CFG Page

FFR_KeystoreGetKC() Read data stored in 'Customer Factory CFG Page

FFR_GetUUID() Read data stored in 'NXP Manufacuring Programmed CFG Page

FFR_GetManufactureData() Read data stored in 'NXP Manufacuring Programmed CFG Page

Typical use case

IAP Basic Operations

Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/iap1

Files

file  fsl_iap.h
 
file  fsl_iap.h
 

Data Structures

struct  flexspi_lut_seq_t
 FlexSPI LUT Sequence structure. More...
 
struct  flexspi_mem_config_t
 FlexSPI Memory Configuration Block. More...
 
struct  flexspi_xfer_t
 FlexSPI Transfer Context. More...
 

Macros

#define NOR_CMD_INDEX_READ   CMD_INDEX_READ
 0
 
#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
 
#define NOR_CMD_INDEX_READ   CMD_INDEX_READ
 0
 
#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  _flexspi_nor_status {
  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,
  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
}
 
enum  {
  kFlexSpiDeviceType_SerialNOR = 1,
  kFlexSpiDeviceType_SerialNAND = 2,
  kFlexSpiDeviceType_SerialRAM = 3,
  kFlexSpiDeviceType_MCP_NOR_NAND = 0x12,
  kFlexSpiDeviceType_MCP_NOR_RAM = 0x13
}
 Flash 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,
  kFlexSpiOperation_Config,
  kFlexSpiOperation_Write,
  kFlexSpiOperation_Read,
  kFlexSpiOperation_End = kFlexSpiOperation_Read,
  kFlexSpiOperation_Command,
  kFlexSpiOperation_Config,
  kFlexSpiOperation_Write,
  kFlexSpiOperation_Read,
  kFlexSpiOperation_End = kFlexSpiOperation_Read
}
 
enum  
 OTP Status Group.
 
enum  {
  kStatus_OTP_InvalidAddress = MAKE_STATUS(kStatusGroup_OtpGroup, 1),
  kStatus_OTP_ProgramFail = MAKE_STATUS(kStatusGroup_OtpGroup, 2),
  kStatus_OTP_CrcFail = MAKE_STATUS(kStatusGroup_OtpGroup, 3),
  kStatus_OTP_Error = MAKE_STATUS(kStatusGroup_OtpGroup, 4),
  kStatus_OTP_EccCheckFail = MAKE_STATUS(kStatusGroup_OtpGroup, 5),
  kStatus_OTP_Locked = MAKE_STATUS(kStatusGroup_OtpGroup, 6),
  kStatus_OTP_Timeout = MAKE_STATUS(kStatusGroup_OtpGroup, 7),
  kStatus_OTP_CrcCheckPass = MAKE_STATUS(kStatusGroup_OtpGroup, 8)
}
 OTP Error Status definitions. More...
 
enum  _flexspi_nor_status {
  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,
  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
}
 
enum  {
  kFlexSpiDeviceType_SerialNOR = 1,
  kFlexSpiDeviceType_SerialNAND = 2,
  kFlexSpiDeviceType_SerialRAM = 3,
  kFlexSpiDeviceType_MCP_NOR_NAND = 0x12,
  kFlexSpiDeviceType_MCP_NOR_RAM = 0x13
}
 Flash 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,
  kFlexSpiOperation_Config,
  kFlexSpiOperation_Write,
  kFlexSpiOperation_Read,
  kFlexSpiOperation_End = kFlexSpiOperation_Read,
  kFlexSpiOperation_Command,
  kFlexSpiOperation_Config,
  kFlexSpiOperation_Write,
  kFlexSpiOperation_Read,
  kFlexSpiOperation_End = kFlexSpiOperation_Read
}
 
enum  
 OTP Status Group.
 
enum  {
  kStatus_OTP_InvalidAddress = MAKE_STATUS(kStatusGroup_OtpGroup, 1),
  kStatus_OTP_ProgramFail = MAKE_STATUS(kStatusGroup_OtpGroup, 2),
  kStatus_OTP_CrcFail = MAKE_STATUS(kStatusGroup_OtpGroup, 3),
  kStatus_OTP_Error = MAKE_STATUS(kStatusGroup_OtpGroup, 4),
  kStatus_OTP_EccCheckFail = MAKE_STATUS(kStatusGroup_OtpGroup, 5),
  kStatus_OTP_Locked = MAKE_STATUS(kStatusGroup_OtpGroup, 6),
  kStatus_OTP_Timeout = MAKE_STATUS(kStatusGroup_OtpGroup, 7),
  kStatus_OTP_CrcCheckPass = MAKE_STATUS(kStatusGroup_OtpGroup, 8)
}
 OTP Error Status definitions. More...
 

Functions

status_t IAP_FlexspiNorInit (uint32_t instance, flexspi_nor_config_t *config)
 Initialize Serial NOR devices via FlexSPI.
 
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.
 
status_t IAP_FlexspiNorEraseAll (uint32_t instance, flexspi_nor_config_t *config)
 Erase all the Serial NOR devices connected on FlexSPI.
 
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.
 
status_t IAP_FlexspiNorEraseSector (uint32_t instance, flexspi_nor_config_t *config, uint32_t address)
 Erase one sector specified by address.
 
status_t IAP_FlexspiNorEraseBlock (uint32_t instance, flexspi_nor_config_t *config, uint32_t address)
 Erase one block specified by address.
 
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.
 
status_t IAP_FlexspiNorRead (uint32_t instance, flexspi_nor_config_t *config, uint32_t *dst, uint32_t start, uint32_t bytes)
 Read data from Serial NOR.
 
status_t IAP_FlexspiXfer (uint32_t instance, flexspi_xfer_t *xfer)
 Xfer data.
 
status_t IAP_FlexspiUpdateLut (uint32_t instance, uint32_t seqIndex, const uint32_t *lutBase, uint32_t numberOfSeq)
 Update LUT.
 
status_t IAP_FlexspiSetClockSource (uint32_t clockSrc)
 Set the clock source for FlexSPI.
 
void IAP_FlexspiConfigClock (uint32_t instance, uint32_t freqOption, uint32_t sampleClkMode)
 Configure flexspi clock.
 
 AT_QUICKACCESS_SECTION_CODE (status_t IAP_FlexspiNorAutoConfig(uint32_t instance, flexspi_nor_config_t *config, serial_nor_config_option_t *option))
 Configure flexspi nor automatically.
 

Variables

uint32_t   serial_nor_config_option_t::max_freq: 4
 Maximum supported Frequency.
 
uint32_t   serial_nor_config_option_t::misc_mode: 4
 miscellaneous mode
 
uint32_t   serial_nor_config_option_t::quad_mode_setting: 4
 Quad mode setting.
 
uint32_t   serial_nor_config_option_t::cmd_pads: 4
 Command pads.
 
uint32_t   serial_nor_config_option_t::query_pads: 4
 SFDP read pads.
 
uint32_t   serial_nor_config_option_t::device_type: 4
 Device type.
 
uint32_t   serial_nor_config_option_t::option_size: 4
 Option size, in terms of uint32_t, size = (option_size + 1) * 4.
 
uint32_t   serial_nor_config_option_t::tag: 4
 Tag, must be 0x0E.
 
uint32_t   serial_nor_config_option_t::dummy_cycles: 8
 Dummy cycles before read.
 
uint32_t   serial_nor_config_option_t::status_override: 8
 Override status register value during device mode configuration.
 
uint32_t   serial_nor_config_option_t::pinmux_group: 4
 The pinmux group selection.
 
uint32_t   serial_nor_config_option_t::dqs_pinmux_group: 4
 The DQS Pinmux Group Selection.
 
uint32_t   serial_nor_config_option_t::drive_strength: 4
 The Drive Strength of FlexSPI Pads.
 
uint32_t   serial_nor_config_option_t::flash_connection: 4
 Flash connection option: 0 - Single Flash connected to port A, 1 -.
 
uint8_t flexspi_lut_seq_t::seqNum
 Sequence Number, valid number: 1-16.
 
uint8_t flexspi_lut_seq_t::seqId
 Sequence Index, valid number: 0-15.
 
uint32_t flexspi_mem_config_t::tag
 [0x000-0x003] Tag, fixed value 0x42464346UL
 
uint32_t flexspi_mem_config_t::version
 [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix
 
uint32_t flexspi_mem_config_t::reserved0
 [0x008-0x00b] Reserved for future use
 
uint8_t flexspi_mem_config_t::readSampleClkSrc
 [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3
 
uint8_t flexspi_mem_config_t::csHoldTime
 [0x00d-0x00d] CS hold time, default value: 3
 
uint8_t flexspi_mem_config_t::csSetupTime
 [0x00e-0x00e] CS setup time, default value: 3
 
uint8_t flexspi_mem_config_t::columnAddressWidth
 [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For
 
uint8_t flexspi_mem_config_t::deviceModeCfgEnable
 Serial NAND, need to refer to datasheet. More...
 
uint8_t flexspi_mem_config_t::deviceModeType
 [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch,
 
uint16_t flexspi_mem_config_t::waitTimeCfgCommands
 Generic configuration, etc. More...
 
flexspi_lut_seq_t flexspi_mem_config_t::deviceModeSeq
 DPI/QPI/OPI switch or reset command. More...
 
uint32_t flexspi_mem_config_t::deviceModeArg
 sequence number, [31:16] Reserved More...
 
uint8_t flexspi_mem_config_t::configCmdEnable
 [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable
 
uint8_t flexspi_mem_config_t::configModeType [3]
 [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe
 
flexspi_lut_seq_t flexspi_mem_config_t::configCmdSeqs [3]
 [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq
 
uint32_t flexspi_mem_config_t::reserved1
 [0x02c-0x02f] Reserved for future use
 
uint32_t flexspi_mem_config_t::configCmdArgs [3]
 [0x030-0x03b] Arguments/Parameters for device Configuration commands
 
uint32_t flexspi_mem_config_t::reserved2
 [0x03c-0x03f] Reserved for future use
 
uint32_t flexspi_mem_config_t::controllerMiscOption
 [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more More...
 
uint8_t flexspi_mem_config_t::deviceType
 details More...
 
uint8_t flexspi_mem_config_t::sflashPadType
 [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal
 
uint8_t flexspi_mem_config_t::serialClkFreq
 [0x046-0x046] Serial Flash Frequencey, device specific definitions, See System Boot
 
uint8_t flexspi_mem_config_t::lutCustomSeqEnable
 Chapter for more details. More...
 
uint32_t flexspi_mem_config_t::reserved3 [2]
 be done using 1 LUT sequence, currently, only applicable to HyperFLASH More...
 
uint32_t flexspi_mem_config_t::sflashA1Size
 [0x050-0x053] Size of Flash connected to A1
 
uint32_t flexspi_mem_config_t::sflashA2Size
 [0x054-0x057] Size of Flash connected to A2
 
uint32_t flexspi_mem_config_t::sflashB1Size
 [0x058-0x05b] Size of Flash connected to B1
 
uint32_t flexspi_mem_config_t::sflashB2Size
 [0x05c-0x05f] Size of Flash connected to B2
 
uint32_t flexspi_mem_config_t::csPadSettingOverride
 [0x060-0x063] CS pad setting override value
 
uint32_t flexspi_mem_config_t::sclkPadSettingOverride
 [0x064-0x067] SCK pad setting override value
 
uint32_t flexspi_mem_config_t::dataPadSettingOverride
 [0x068-0x06b] data pad setting override value
 
uint32_t flexspi_mem_config_t::dqsPadSettingOverride
 [0x06c-0x06f] DQS pad setting override value
 
uint32_t flexspi_mem_config_t::timeoutInMs
 [0x070-0x073] Timeout threshold for read status command
 
uint32_t flexspi_mem_config_t::commandInterval
 [0x074-0x077] CS deselect interval between two commands
 
flexspi_dll_time_t flexspi_mem_config_t::dataValidTime [2]
 [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B
 
uint16_t flexspi_mem_config_t::busyOffset
 [0x07c-0x07d] Busy offset, valid value: 0-31 More...
 
uint16_t flexspi_mem_config_t::busyBitPolarity
 [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - More...
 
uint32_t flexspi_mem_config_t::lookupTable [64]
 busy flag is 0 when flash device is busy More...
 
flexspi_lut_seq_t flexspi_mem_config_t::lutCustomSeq [12]
 [0x180-0x1af] Customizable LUT Sequences
 
uint32_t flexspi_mem_config_t::reserved4 [4]
 [0x1b0-0x1bf] Reserved for future use
 
flexspi_operation_t flexspi_xfer_t::operation
 FlexSPI operation.
 
uint32_t flexspi_xfer_t::baseAddress
 FlexSPI operation base address.
 
uint32_t flexspi_xfer_t::seqId
 Sequence Id.
 
uint32_t flexspi_xfer_t::seqNum
 Sequence Number.
 
bool flexspi_xfer_t::isParallelModeEnable
 Is a parallel transfer.
 
uint32_t * flexspi_xfer_t::txBuffer
 Tx buffer.
 
uint32_t flexspi_xfer_t::txSize
 Tx size in bytes.
 
uint32_t * flexspi_xfer_t::rxBuffer
 Rx buffer.
 
uint32_t flexspi_xfer_t::rxSize
 Rx size in bytes.
 
flexspi_mem_config_t flexspi_nor_config_t::memConfig
 Common memory configuration info via FlexSPI.
 
uint32_t flexspi_nor_config_t::pageSize
 Page size of Serial NOR.
 
uint32_t flexspi_nor_config_t::sectorSize
 Sector size of Serial NOR.
 
uint8_t flexspi_nor_config_t::ipcmdSerialClkFreq
 Clock frequency for IP command.
 
uint8_t flexspi_nor_config_t::isUniformBlockSize
 Sector/Block size is the same.
 
uint8_t flexspi_nor_config_t::isDataOrderSwapped
 Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2)
 
uint8_t flexspi_nor_config_t::reserved0 [1]
 Reserved for future use.
 
uint8_t flexspi_nor_config_t::serialNorType
 Serial NOR Flash type: 0/1/2/3.
 
uint8_t flexspi_nor_config_t::needExitNoCmdMode
 Need to exit NoCmd mode before other IP command.
 
uint8_t flexspi_nor_config_t::halfClkForNonReadCmd
 Half the Serial Clock for non-read command: true/false.
 
uint8_t flexspi_nor_config_t::needRestoreNoCmdMode
 Need to Restore NoCmd mode after IP commmand execution.
 
uint32_t flexspi_nor_config_t::blockSize
 Block size.
 
uint32_t flexspi_nor_config_t::flashStateCtx
 Flash State Context.
 
uint32_t flexspi_nor_config_t::reserve2 [10]
 Reserved for future use.
 
uint32_t   serial_nor_config_option_t::max_freq: 4
 Maximum supported Frequency.
 
uint32_t   serial_nor_config_option_t::misc_mode: 4
 miscellaneous mode
 
uint32_t   serial_nor_config_option_t::quad_mode_setting: 4
 Quad mode setting.
 
uint32_t   serial_nor_config_option_t::cmd_pads: 4
 Command pads.
 
uint32_t   serial_nor_config_option_t::query_pads: 4
 SFDP read pads.
 
uint32_t   serial_nor_config_option_t::device_type: 4
 Device type.
 
uint32_t   serial_nor_config_option_t::option_size: 4
 Option size, in terms of uint32_t, size = (option_size + 1) * 4.
 
uint32_t   serial_nor_config_option_t::tag: 4
 Tag, must be 0x0E.
 
uint32_t   serial_nor_config_option_t::dummy_cycles: 8
 Dummy cycles before read.
 
uint32_t   serial_nor_config_option_t::status_override: 8
 Override status register value during device mode configuration.
 
uint32_t   serial_nor_config_option_t::pinmux_group: 4
 The pinmux group selection.
 
uint32_t   serial_nor_config_option_t::dqs_pinmux_group: 4
 The DQS Pinmux Group Selection.
 
uint32_t   serial_nor_config_option_t::drive_strength: 4
 The Drive Strength of FlexSPI Pads.
 
uint32_t   serial_nor_config_option_t::flash_connection: 4
 Flash connection option: 0 - Single Flash connected to port A, 1 -.
 

Driver version

#define FSL_IAP_DRIVER_VERSION   (MAKE_VERSION(2, 0, 0))
 IAP driver version 2.0.0. More...
 

Driver version

#define FSL_IAP_DRIVER_VERSION   (MAKE_VERSION(2, 0, 0))
 IAP driver version 2.0.0. More...
 

Data Structure Documentation

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

Serial NOR configuration block.

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 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 More...
 
uint16_t busyBitPolarity
 [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - More...
 
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
 
flexspi_device_config_t deviceConfig
 Device configuration structure.
 
flexspi_port_t devicePort
 Device connected to which port, SS0_A means port A1, SS0_B means port B1.
 
uint32_t dataBytesPerPage
 Data Size in one page, usually it is 2048 or 4096.
 
uint32_t bytesInPageSpareArea
 Total size in one page, usually, it equals 2 ^ width of column address.
 
uint32_t pagesPerBlock
 Pages per block.
 
uint32_t eccStatusMask
 ECC status mask.
 
uint32_t eccFailureMask
 ECC failure mask.
 
serial_nor_device_type_t deviceType
 Serial nor flash device type.
 
serial_nor_command_mode_t CurrentCommandMode
 Serial nor flash corrent command mode.
 
serial_nor_transfer_mode_t transferMode
 Transfer rate is SDR or DDR mode.
 
serial_nor_quad_mode_t quadMode
 Serial nor flash quad mode setting. More...
 
serial_nor_enhance_mode_t enhanceMode
 Serial nor flash performance enhance mode setting. More...
 
flexspi_pad_t commandPads
 Command padS setting. More...
 
flexspi_pad_t queryPads
 SFDP read pads setting. More...
 
uint8_t statusOverride
 Override status register value during device mode configuration. More...
 
uint32_t bytesInPageSize
 Page size in byte of Serial NOR.
 
uint32_t bytesInSectorSize
 Minimun Sector size in byte supported by Serial NOR.
 
uint32_t bytesInMemorySize
 Memory size in byte of Serial NOR.
 
uint8_t ipcmdSerialClkFreq
 Clock frequency for IP command.
 
uint8_t serialNorType
 Serial NOR Flash type: 0/1/2/3.
 
uint8_t needExitNoCmdMode
 Need to exit NoCmd mode before other IP command.
 
bool halfClkForNonReadCmd
 Half the Serial Clock for non-read command: true/false.
 
uint8_t needRestoreNoCmdMode
 Need to Restore NoCmd mode after IP commmand execution.
 
bool deviceModeCfgEnable
 Device Mode Configure enable flag, true - Enable, false - Disable.
 
uint32_t manufacturerId
 Manufacturer ID that each vendor has a unique ID depend on JESD216 spec.
 

Field Documentation

serial_nor_quad_mode_t flexspi_mem_config_t::quadMode
serial_nor_enhance_mode_t flexspi_mem_config_t::enhanceMode
flexspi_pad_t flexspi_mem_config_t::commandPads
flexspi_pad_t flexspi_mem_config_t::queryPads
uint8_t flexspi_mem_config_t::statusOverride
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_IAP_DRIVER_VERSION   (MAKE_VERSION(2, 0, 0))

Version 2.0.0.

#define FSL_IAP_DRIVER_VERSION   (MAKE_VERSION(2, 0, 0))

Version 2.0.0.

Enumeration Type Documentation

Enumerator
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.

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
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.

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.

anonymous enum
Enumerator
kStatus_OTP_InvalidAddress 

Invalid OTP address.

kStatus_OTP_ProgramFail 

Program Fail.

kStatus_OTP_CrcFail 

CrcCheck Fail.

kStatus_OTP_Error 

Errors happened during OTP operation.

kStatus_OTP_EccCheckFail 

Ecc Check failed during OTP operation.

kStatus_OTP_Locked 

OTP Fuse field has been locked.

kStatus_OTP_Timeout 

OTP operation time out.

kStatus_OTP_CrcCheckPass 

OTP CRC Check Pass.

Enumerator
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.

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
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.

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.

anonymous enum
Enumerator
kStatus_OTP_InvalidAddress 

Invalid OTP address.

kStatus_OTP_ProgramFail 

Program Fail.

kStatus_OTP_CrcFail 

CrcCheck Fail.

kStatus_OTP_Error 

Errors happened during OTP operation.

kStatus_OTP_EccCheckFail 

Ecc Check failed during OTP operation.

kStatus_OTP_Locked 

OTP Fuse field has been locked.

kStatus_OTP_Timeout 

OTP operation time out.

kStatus_OTP_CrcCheckPass 

OTP CRC Check Pass.

Variable 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

uint32_t flexspi_mem_config_t::controllerMiscOption

Controller Misc Options, see Misc feature bit definitions for more.

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

[0x048-0x04f] Reserved for future use

uint16_t flexspi_mem_config_t::busyOffset

Busy offset, valid value: 0-31, only need for check option kNandReadyCheckOption_RB.

uint16_t flexspi_mem_config_t::busyBitPolarity

Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 -busy flag is 0 when flash device is busy, only need for check option kNandReadyCheckOption_RB.

uint32_t flexspi_mem_config_t::lookupTable

Lookup table holds Flash command sequences.

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