SPRADE8A November   2023  – April 2024 F29H850TU , F29H859TU-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. Introduction
  5. Difference Between EEPROM and On-Chip Flash
  6. Overview
    1. 3.1 Basic Concept
    2. 3.2 Single-Unit Method
    3. 3.3 Ping-Pong Method
    4. 3.4 Creating EEPROM Sections (Pages) and Page Identification
  7. Software Description
    1. 4.1 Software Functionality and Flow
  8. Ping-Pong Emulation
    1. 5.1 User-Configuration
      1. 5.1.1 EEPROM_PingPong_Config.h
      2. 5.1.2 F28P65x_EEPROM_PingPong.c
    2. 5.2 EEPROM Functions
      1. 5.2.1  EEPROM_Config_Check
      2. 5.2.2  Configure_Protection_Masks
      3. 5.2.3  EEPROM_Write
      4. 5.2.4  EEPROM_Read
      5. 5.2.5  EEPROM_Erase
        1. 5.2.5.1 Erase_Bank
      6. 5.2.6  EEPROM_GetValidBank
      7. 5.2.7  EEPROM_UpdateBankStatus
      8. 5.2.8  EEPROM_UpdatePageStatus
      9. 5.2.9  EEPROM_UpdatePageData
      10. 5.2.10 EEPROM_Get_64_Bit_Data_Address
      11. 5.2.11 EEPROM_Program_64_Bits
      12. 5.2.12 EEPROM_CheckStatus
      13. 5.2.13 ClearFSMStatus
    3. 5.3 Testing Example
  9. Single-Unit Emulation
    1. 6.1 User-Configuration
      1. 6.1.1 EEPROM_Config.h
      2. 6.1.2 F28P65x_EEPROM.c
    2. 6.2 EEPROM Functions
      1. 6.2.1  EEPROM_Config_Check
      2. 6.2.2  Configure_Protection_Masks
      3. 6.2.3  EEPROM_Write
      4. 6.2.4  EEPROM_Read
      5. 6.2.5  EEPROM_Erase
      6. 6.2.6  EEPROM_GetValidBank
      7. 6.2.7  EEPROM_Get_64_Bit_Data_Address
      8. 6.2.8  EEPROM_UpdateBankStatus
      9. 6.2.9  EEPROM_UpdatePageStatus
      10. 6.2.10 EEPROM_UpdatePageData
      11. 6.2.11 EEPROM_Get_64_Bit_Data_Address
      12. 6.2.12 EEPROM_Program_64_Bits
      13. 6.2.13 EEPROM_CheckStatus
      14. 6.2.14 ClearFSMStatus
    3. 6.3 Testing Example
  10. Application Integration
  11. Adapting to Other Gen 3 C2000 MCUs
  12. Flash API
    1. 9.1 Flash API Checklist
      1. 9.1.1 Flash API Do's and Do Not's
  13. 10Source File Listing
  14. 11Troubleshooting
    1. 11.1 General
  15. 12Conclusion
  16. 13References
  17. 14Revision History

Flash API Do's and Do Not's

API Do's

  • Execute the Flash API code from RAM or a Flash Bank not selected for EEPROM Emulation (some functions must be run from RAM).
  • Configure the API for the correct CPU frequency of operation
  • Follow the Flash API checklist to integrate the API into an application
  • Configure the PLL as needed and pass the configured CPUCLK value to Fapi_initializeAPI() function. Note that the flash API library does not support flash erase/program operations when the system frequency is less than or equal to 20 MHz.
  • Configure BANKMUXSEL and FLASHCTLSEM registers as needed
  • Configure waitstates as per the device-specific data manual before calling Flash API functions. The Flash API issues and errors if the waitstate configured by the application is not appropriate for the operating frequency of the application.
  • Carefully review the API restrictions described in the TMS320F28P65x Flash API Version 3.02.00.00 Reference Guide.

API Do Not's

  • Do not execute Flash API from the same Flash Bank that is selected for emulation
  • Do not configure interrupt service routines (ISRs) that result in read/fetch access from the Flash bank on which an erase/program operation is in progress. Flash API functions, user application functions that call Flash API functions, and any ISRs, must be executed from RAM or the flash bank on which there is no active erase/program operation in progress.
  • Do not access the Flash bank or OTP on which the Flash erase/program operation is in progress
  • ECC should not be programmed for link-pointer locations. The API skips programming the ECC when the start address provided for the program operation is any of the three link-pointer addresses. Care should be taken to maintain a separate structure/section for link-pointer locations in the application. Do not mix these fields with other DCSM OTP settings. If other fields are mixed with link-pointers, API skips programming ECC for the non-link-pointer locations as well. This causes ECC errors in the application.