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.
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_GetManufactureData() Read data stored in 'NXP Manufacuring Programmed CFG Page
Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/iap1
|
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...
|
|
|
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.
|
|
|
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 -.
|
|