SPRUJB8 April   2024

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Reference Material
    2. 1.2 Function Listing Format
  5. 2TMS320F28P65x 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 Flash Wrapper 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
  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_issueProgrammingCommandForEccAddresses()
      7. 3.2.7  Fapi_issueAutoEcc512ProgrammingCommand()
      8. 3.2.8  Fapi_issueDataAndEcc512ProgrammingCommand()
      9. 3.2.9  Fapi_issueDataOnly512ProgrammingCommand()
      10. 3.2.10 Fapi_issueEccOnly64ProgrammingCommand()
      11. 3.2.11 Fapi_issueAsyncCommand()
      12. 3.2.12 Fapi_checkFsmForReady()
      13. 3.2.13 Fapi_getFsmStatus()
    3. 3.3 Read Functions
      1. 3.3.1 Fapi_doBlankCheck()
      2. 3.3.2 Fapi_doVerify()
    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()
  7. 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
  8.   A Flash State Machine Commands
  9.   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
    4.     B.4 Structures
      1.      B.4.1 Fapi_FlashStatusWordType
      2.      B.4.2 Fapi_LibraryInfoType
  10.   C Summary of Changes From v3.00.01 to v3.00.02

Introduction

This reference guide provides a detailed description of Texas Instruments' TMS320F28P65x Flash API Library (FAPI_F28P65x _EABI_v3.00.02.lib or FAPI_F28P65x _COFF_v3.00.02.lib) functions that can be used to erase, program and verify Flash on TMS320F28P65x devices. Note that Flash API V3.00.XX.XX should be used only with TMS320F28P65x devices. The Flash API Library is provided in C2000Ware at C2000Ware_x_xx_xx_xx\libraries\flash_api\F28P65x.

TMS320F28P65x devices have up to five flash banks. Out of these five banks, the user application can map any bank to any CPU (CPU1 or CPU2) as per the application’s requirement using the BANKMUXSEL register. Since there is only one flash wrapper (and only one flash pump) in this device, only one bank can be erased/programmed at a time. A semaphore (called as FLASHCTLSEM or FLASHSEM) is provided to manage the ownership of the flash wrapper between the two CPUs. Before performing any flash erase/program operations, a given CPU has to gain the ownership of the flash wrapper by using this semaphore. Once the erase and program operations are complete, the respective CPU should relinquish the ownership of the flash wrapper using this semaphore to allow the other CPU to gain the ownership of the flash wrapper when needed. For more details on the BANKMUXSEL and the FLASHCTLSEM (also called as FLASHSEM) registers, see the TMS320F28P65x Real-Time Microcontrollers Technical Reference Manual. Note that the flash API library does not configure these registers. Before performing any flash erase/program operations using the flash API library, the user application should configure these registers as per the application’s requirement. The flash API usage example provided in the C2000Ware uses the IPC_claimFlashSemaphore() to configure the FLASHCTLSEM and SysCtl_allocateFlashBank() configure the BANKMUXSEL. These functions are provided in the driverlib. Refer to the flash programming example provided in C2000Ware at “C2000Ware_.....\driverlib\F28P65x\examples\....\flash\flashapi_128bit_programming\flashapi_cpu1_128bitprogramming.c”