SPRUJE7A January   2025  – July 2025 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Differences From C28x
    2. 1.2 Function Listing Format
  5. 2F29H85x Flash API Overview
    1. 2.1 Introduction
    2. 2.2 API Overview
    3. 2.3 Using API
      1. 2.3.1 Initialization Flow
        1. 2.3.1.1 After Device Power Up
        2. 2.3.1.2 On System Frequency Change
      2. 2.3.2 Building With the API
        1. 2.3.2.1 Object Library Files
        2. 2.3.2.2 Distribution Files
      3. 2.3.3 Key Facts for Flash API Usage
  6. 3API Functions
    1. 3.1 Initialization Functions
      1. 3.1.1 Fapi_initializeAPI()
    2. 3.2 Flash State Machine Functions
      1. 3.2.1  Fapi_setActiveFlashBank()
      2. 3.2.2  Fapi_setupBankSectorEnable()
      3. 3.2.3  Fapi_issueAsyncCommandWithAddress()
      4. 3.2.4  Fapi_issueBankEraseCommand()
      5. 3.2.5  Fapi_issueProgrammingCommand()
      6. 3.2.6  Fapi_issueAutoEcc512ProgrammingCommand()
      7. 3.2.7  Fapi_issueDataAndEcc512ProgrammingCommand()
      8. 3.2.8  Fapi_issueDataOnly512ProgrammingCommand()
      9. 3.2.9  Fapi_issueEccOnly64ProgrammingCommand()
      10. 3.2.10 Fapi_issueAsyncCommand()
      11. 3.2.11 Fapi_checkFsmForReady()
      12. 3.2.12 Fapi_getFsmStatus()
    3. 3.3 Read Functions
      1. 3.3.1 Fapi_doBlankCheck()
      2. 3.3.2 Fapi_doVerify()
      3. 3.3.3 Fapi_doVerifyByByte()
    4. 3.4 Informational Functions
      1. 3.4.1 Fapi_getLibraryInfo()
    5. 3.5 Utility Functions
      1. 3.5.1 Fapi_flushPipeline()
      2. 3.5.2 Fapi_calculateEcc()
      3. 3.5.3 Fapi_isAddressEcc()
      4. 3.5.4 Fapi_getUserConfiguration()
      5. 3.5.5 Fapi_setFlashCPUConfiguration()
      6. 3.5.6 Fapi_issueProgBankMode()
  7. 4SECCFG and BANKMGMT Programming Using the Flash API
    1. 4.1 BANKMGMT Programming
    2. 4.2 SECCFG Programming
  8. 5Allowed Programming Ranges for All Modes
  9. 6Recommended FSM Flows
    1. 6.1 New Devices From Factory
    2. 6.2 Recommended Erase Flow
    3. 6.3 Recommended Bank Erase Flow
    4. 6.4 Recommended Program Flow
  10. 7References
  11.   A Flash State Machine Commands
  12.   B Typedefs, Defines, Enumerations and Structure
    1.     B.1 Type Definitions
    2.     B.2 Defines
    3.     B.3 Enumerations
      1.      B.3.1 Fapi_FlashProgrammingCommandsType
      2.      B.3.2 Fapi_FlashBankType
      3.      B.3.3 Fapi_FlashStateCommandsType
      4.      B.3.4 Fapi_StatusType
      5.      B.3.5 Fapi_ApiProductionStatusType
      6.      B.3.6 Fapi_BankID
      7.      B.3.7 Fapi_FLCID
      8.      B.3.8 Fapi_BankMode
      9.      B.3.9 Fapi_CPU1BankSwap
      10.      B.3.10 Fapi_CPU3BankSwap
      11.      B.3.11 Fapi_FOTAStatus
      12.      B.3.12 Fapi_SECVALID
      13.      B.3.13 Fapi_BankMgmtAddress
    4.     B.4 Structures
      1.      B.4.1 Fapi_FlashStatusWordType
      2.      B.4.2 Fapi_LibraryInfoType
  13.   Revision History

Fapi_issueEccOnly64ProgrammingCommand()

Sets up the flash state machine registers for the 64-bit (8 bytes) programming with user provided ECC data and issues the programing command to valid Flash, BANKMGMT, and SECCFG memory.

Synopsis

Fapi_StatusType Fapi_issueEccOnly64ProgrammingCommand(
                                       uint32_t *pu32StartAddress,
                                       uint8_t *pu8EccBuffer,
                                       uint8_t  u8EccBufferSizeInBytes,
                                       uint32_t u32UserFlashConfig,
                                       uint8_t  u8Iterator
                                       );

Parameters

pu32StartAddress [in] 512-bit aligned flash address to program the provided ECC data.
pu8EccBuffer [in] Pointer to the ECC buffer address
u8EccBufferSizeInBytes [in] Number of bytes in the ECC buffer. Max Eccbuffer size in bytes can not exceed 16.
u32UserFlashConfig User Flash configuration.
u8Iterator Iterator for program and erase operations on interleaved banks.
0: Data Flash/non-interleaved
1: B0 or B2 (dependent on provided address)
2: B1 or B3 (dependent on provided address)

Description

This function only programs the ECC portion in Flash ECC memory space at the address (Flash main array address can be provided for this function and not the corresponding ECC address) specified. It can program 64-bit of ECC data (second parameter) at the ECC address corresponding to the user provided 512-bit aligned flash address. 64-bit ECC data can be split as 8 bytes ECC data correlated to 512-bit aligned data (4 × 128, each 2 bytes corresponding to each 128 data).

For more information, see Table 3-6.

Table 3-6 64-Bit ECC Data Interpretation
512 Bits Data (4 * 128bits)
1st 128-Bit Data 2nd 128-Bit Data 3rd 128-Bit Data 4th 128-Bit Data
LSB of pu8EccBuffer[0] LSB of pu8EccBuffer[1] LSB of pu8EccBuffer[2] LSB of pu8EccBuffer[3]
MSB of pu8EccBuffer[0] MSB of pu8EccBuffer[1] MSB of pu8EccBuffer[2] MSB of pu8EccBuffer[3]

For allowed programming range for the function, see Table 3-7.

Table 3-7 Permitted Programming Range for Fapi_issueEccOnly64ProgrammingCommand()
Flash API Main Array ECC BANKMGMT and SECCFG
Fapi_issueEccOnly64Prog rammingCommand() Not allowed Allowed Not allowed

Restrictions

  • As described above, this function can program only a max of 64-bits ECC at a time. If the user wants to program more than that, this function can be called in a loop to program 64-bits at a time.
  • The Main Array flash programming must be aligned to 512-bit address boundaries and 64-bit ECC word can only be programmed once per write or erase cycle.
  • ECC can not be programmed for BANKMGMT or SECCFG locations. 512-bit address range starting with a BANKMGMT or SECCFG address shall always be programmed using 128-bit Fapi_issueProgrammingCommand().

Return Value

  • Fapi_Status_Success (success)
  • Fapi_Status_FsmBusy (FSM busy)
  • Fapi_Error_AsyncDataEccBufferLengthMismatch (failure: Data buffer size either is not 64-bit aligned or data length crosses the 128-bit aligned memory boundary.)
  • Fapi_Error_FlashRegsNotWritable (failure: Flash register writes failed. The user can make sure that the API is executing from the correct CPU.)
  • Fapi_Error_FeatureNotAvailable (failure: User passed a mode that is not supported.)
  • Fapi_Error_InvalidAddress (failure: User provided an invalid address. For the valid address range, see the F29H85x and F29P58x Real-Time Microcontrollers Data Sheet.)

Sample Implementation

(For more information, see the flash programming example provided in the F29H85x SDK at “f29h85x-sdk > examples > driverlib > single_core > flash > flash_mode0_512_program”)