SPRUJ27C November   2022  – November 2023 TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1

 

  1.   1
  2.   Trademarks
  3. 1Introduction
    1. 1.1 Reference Material
    2. 1.2 Function Listing Format
  4. 2TMS320F28003x 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 FMC and Bank Setup
        3. 2.3.1.3 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
  5. 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_issueAsyncCommandWithAddress()
      3. 3.2.3 Fapi_issueBankEraseCommand()
      4. 3.2.4 Fapi_issueProgrammingCommand()
      5. 3.2.5 Fapi_issueProgrammingCommandForEccAddresses()
      6. 3.2.6 Fapi_issueFsmSuspendCommand()
      7. 3.2.7 Fapi_issueAsyncCommand()
      8. 3.2.8 Fapi_checkFsmForReady()
      9. 3.2.9 Fapi_getFsmStatus()
    3. 3.3 Read Functions
      1. 3.3.1 Fapi_doBlankCheck()
      2. 3.3.2 Fapi_doVerify()
      3. 3.3.3 Fapi_calculatePsa()
      4. 3.3.4 Fapi_doPsaVerify()
    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_remapEccAddress()
      5. 3.5.5 Fapi_calculateFletcherChecksum()
  6. 4Recommended FSM Flows
    1. 4.1 New Devices From Factory
    2. 4.2 Recommended Erase Flow
    3. 4.3 Recommended Bank Erase Flow
    4. 4.4 Recommended Program Flow
  7. 5Software Application Assumptions of Use Related to Safety
  8.   A Flash State Machine Commands
    1.     A.1 Flash State Machine Commands
  9.   B Compiler Version and Build Settings
  10.   C Object Library Function Information
    1.     C.1 TMS320F28003x Flash API Library
  11.   D Typedefs, Defines, Enumerations and Structures
    1.     D.1 Type Definitions
    2.     D.2 Defines
    3.     D.3 Enumerations
      1.      D.3.1 Fapi_FlashProgrammingCommandsType
      2.      D.3.2 Fapi_FlashBankType
      3.      D.3.3 Fapi_FlashStateCommandsType
      4.      D.3.4 Fapi_FlashReadMarginModeType
      5.      D.3.5 Fapi_StatusType
      6.      D.3.6 Fapi_ApiProductionStatusType
    4.     D.4 Structures
      1.      D.4.1 Fapi_FlashStatusWordType
      2.      D.4.2 Fapi_LibraryInfoType
  12.   E Parallel Signature Analysis (PSA) Algorithm
    1.     E.1 Function Details
  13.   F ECC Calculation Algorithm
    1.     F.1 Function Details
  14.   G Errata
  15.   Revision History

Software Application Assumptions of Use Related to Safety

  1. The global variables of the flash API will be initialized only when Fapi_initializeAPI() is executed. Hence, this function must be executed once before using any of the other flash API functions. There is no need to call this function more than once. However, this function must be called whenever the user application updates the system frequency or the flash wait state configuration at runtime (which is rare).
  2. Before executing Fapi_initializeAPI(), the user application must ensure that the PLL is configured correctly for the desired output frequency. Note that SysCtl_setClock() provided in the driverlib achieves this by using the DCC module. SysCtl_isPLLValid() called by SysCtl_setClock() uses the DCC module to ensure that the PLL output is in the expected range. For more details of the DCC module, see the device-specific technical reference manual.
  3. If the user application requires protection of the flash register space from any corruption due to reasons like runaway code, it can be accomplished by using the ERAD module. For ERAD usage details, see the device-specific technical reference manual.
  4. When using Fapi_BlankCheck() for the flash main array address range, it is suggested to check the corresponding ECC array address range as well. ECC address range for each sector is given in the Memory Map table in the device-specific data sheet.
  5. User application software must enable ECC evaluation for the flash read/fetch path using the ECC_ENABLE register as needed. Flash API does not enable/disable this register. Note that the ECC_ENABLE is enabled by default at power up. Hence, the user application software defines the NMI ISR and flash single bit error ISR to be able to respond for the single and uncorrectable flash errors. For more details on the FLASH_ECC_REGS registers, see the device-specific technical reference manual.
  6. If the user application’s safety standards require it to read the entire flash memory range periodically to ensure that the data is intact, the user application may do so and calculate checksum/CRC for the entire flash memory range. VCU CRC module can be used to accomplish this. For more details on the VCU CRC module, see the device-specific technical reference manual.
  7. If the user application’s safety standards require it to read the flash register space periodically to ensure that the register configuration is intact, application may do so and calculate checksum/CRC for the flash register memory range.
  8. If the user application’s safety standards require it to verify (using CPU read) the flash content after program and erase operations, it can do so by using Fapi_doVerify() and Fapi_doBlankCheck(), respectively.
  9. Flash API does not configure/service the watchdog. The user application can configure the watchdog and service it as needed (either serially in between the flash API function calls or using a CPU timer ISR).
  10. If the flash API code in RAM or flash gets overwritten due to improper application design (for example, stack overflow), ITRAPs (illegal instruction trap) may occur when the CPU tries to execute the flash API functions. Hence, the user application defines ITRAP ISR to respond such events.