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_issueDataOnly512ProgrammingCommand()

Sets up the flash state machine registers for the 512-bit (64 bytes) programming with user provided flash data and issues the programing command to valid Flash.

Synopsis

Fapi_StatusType Fapi_issueDataOnly512ProgrammingCommand( 
                                     uint32 *pu32StartAddress, 
                                     uint8 *pu8DataBuffer, 
                                     uint8 u8DataBufferSizeInBytes,
                                     uint32 u32UserFlashConfig,
                                     uint8 u8Iterator 
                                                       ) 

Parameters

pu32StartAddress [in] 1024-bit aligned flash address to program the provided data.
pu8DataBuffer [in] Pointer to the Data buffer address. Data buffer can be 1024-bit aligned.
u8DataBufferSizeInBytes [in] Number of 8-bit words in the Data buffer. Max Databuffer size in bytes can not exceed 64.
u32UserFlashConfig [in] User flash configuration bitfield
u8Iterator [in] 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 data portion in Flash at the address specified. It can program 512-bit data (Second parameter) at the user provided 512-bit aligned flash address. This function is used when a user application (that embed/use Flash API) has to program 512- bit of data and corresponding 64-bit of ECC data separately. 512-bit Data is programmed using Fapi_issueDataOnly512ProgrammingCommand () function and then the 64-bit ECC is programmed using Fapi_issueEccOnly64ProgrammingCommand() function. Generally, most of the programming utilities do not calculate ECC separately and instead use function Fapi_issueAutoEcc512ProgrammingCommand(). However, some Safety applications may require to insert intentional ECC errors in their Flash image (which is not possible when Fapi_AutoEccGeneration mode is used) to check the health of the Single Error Correction and Double Error Detection (SECDED) module at run time. In such case, ECC is calculated separately (using the Fapi_calculateEcc() function as applicable). Application may want to insert errors in either main array data or in the ECC as needed. In such scenarios, after the error insertion, Fapi_issueDataOnly512ProgrammingCommand() API and then the 64-bit ECC is programmed using Fapi_issueEccOnly64ProgrammingCommand() API can be used to program the data and ECC, respectively.

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

Table 3-5 Permitted Programming Range for Fapi_issueDataOnly512ProgrammingCommand()
Flash API Main Array ECC BANKMGMT and SECCFG
Fapi_issueDataOnly512Pr ogrammingCommand() Allowed Not allowed Not allowed

Restrictions

  • As described above, this function can program only a max of 512-bits (given the address provided is 512-bit aligned) at a time. If the user wants to program more than that, this function can be called in a loop to program 512-bits at a time.
  • The Main Array flash programming must be aligned to 512-bit address boundaries and 64 bytes may only be programmed once per write or erase cycle.
  • 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_AsyncIncorrectDataBufferLength (failure: Data buffer size specified is incorrect. Also, this error is returned if the Fapi_EccOnly mode is selected when programming to the BANKMGMT or SECCFG spaces.)
  • Fapi_Error_FlashRegsNotWritable (failure: Flash register writes failed. 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”)