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

SECCFG Programming

SECCFG sectors are a portion of Flash memory designated for storing the SSU user configuration, or User Protection Policy (UPP). Each CPU has an active SECCFG start address, and an alternate (reserve) SECCFG start address. The reserve (alternate) SECCFG sectors' start address can be used when erasing/programming SECCFG sector when using flash API. For SECCFG configuration details, see the F29H85x and F29P58x Real-Time Microcontrollers Technical Reference Manual.

Note: The user must always provide the entire sector length (0x1000) when programming SECCFG using Flash API. Unused sector locations can be written as 0xFF.
Table 4-3 SECCFG Start Addresses
Bank ModeCPUxSWAPRegionCPU1/CPU2 BankCPU1 AddressCPU2 AddressCPU3 BankCPU3 Address
Mode 0ActiveFLC1.B0/B10x10D8 10000x10D8 1800FLC2.B0/B10x10D8 9000
AlternateFLC1.B2/B30x10D8 50000x10D8 5800FLC2.B2/B30x10D8 D000
Mode 1SWAP = 0ActiveFLC1.B0/B10x10D8 10000x10D8 1800FLC2.B0/B10x10D8 5000
AlternateFLC1.B2/B30x10D9 90000x10D9 9800FLC2.B2/B30x10D9 D000
SWAP = 1ActiveFLC1.B2/B30x10D8 10000x10D8 1800FLC2.B2/B30x10D8 5000
AlternateFLC1.B0/B10x10D9 90000x10D9 9800FLC2.B0/B10x10D9 D000
Mode 2ActiveFLC1.B0/B10x10D8 10000x10D8 1800FLC2.B0/B10x10D9 1000
AlternateFLC1.B2/B30x10D8 50000x10D8 5800FLC2.B2/B30x10D9 5000
Mode 3SWAP = 0ActiveFLC1.B0/B10x10D8 10000x10D8 1800FLC2.B0/B10x10D9 1000
AlternateFLC1.B2/B30x10D9 90000x10D9 9800FLC2.B2/B30x10D9 D000
SWAP = 1ActiveFLC1.B2/B30x10D8 10000x10D8 1800FLC2.B2/B30x10D9 1000
AlternateFLC1.B0/B10x10D9 90000x10D9 9800FLC2.B0/B10x10D9 D000

Steps for programming SECCFG are as follows:

  1. Issue an erase sector command. Users can always provide an alternate (reserve) FLC address for the start address when erasing SECCFG using the Flash API. For more information, see the SECCFG Start Addresses.
  2. Issue a 128-bit programming command to program the SECCFG sector.
    1. Users can always use the AutoEccGeneration programming mode
    2. The start address can be an alternate (reserve) sector address. For more information, see the SECCFG Start Addresses.
    3. The entire sector length must be programmed, unused locations can be programmed as 0xFF.
  3. After programming the SECCFG sector, an external reset (XSRn) can be issued in order for boot ROM to read the active SECCFG sector value and write it to the necessary SSU register.