SPRADE8B November   2023  – August 2025 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
  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 Testing Example
  9. EEPROM Functions
    1. 6.1  EEPROM_Config_Check
    2. 6.2  Configure_Protection_Masks
    3. 6.3  EEPROM_Write
    4. 6.4  EEPROM_Read
    5. 6.5  EEPROM_Erase
      1. 6.5.1 Erase_Bank
    6. 6.6  EEPROM_GetValidBank
    7. 6.7  EEPROM_UpdateBankStatus
    8. 6.8  EEPROM_UpdatePageStatus
    9. 6.9  EEPROM_UpdatePageData
    10. 6.10 EEPROM_Get_64_Bit_Data_Address
    11. 6.11 EEPROM_Program_64_Bits
    12. 6.12 EEPROM_CheckStatus
    13. 6.13 ClearFSMStatus
  10. Single-Unit Emulation
    1. 7.1 User-Configuration
      1. 7.1.1 EEPROM_Config.h
      2. 7.1.2 F28P65x_EEPROM.c
    2. 7.2 EEPROM Functions
      1. 7.2.1  EEPROM_Config_Check
      2. 7.2.2  Configure_Protection_Masks
      3. 7.2.3  EEPROM_Write
      4. 7.2.4  EEPROM_Read
      5. 7.2.5  EEPROM_Erase
      6. 7.2.6  EEPROM_GetValidBank
      7. 7.2.7  EEPROM_Get_64_Bit_Data_Address
      8. 7.2.8  EEPROM_UpdateBankStatus
      9. 7.2.9  EEPROM_UpdatePageStatus
      10. 7.2.10 EEPROM_UpdatePageData
      11. 7.2.11 EEPROM_Get_64_Bit_Data_Address
      12. 7.2.12 EEPROM_Program_64_Bits
      13. 7.2.13 EEPROM_CheckStatus
      14. 7.2.14 ClearFSMStatus
    3. 7.3 Testing Example
  11. Application Integration
    1. 8.1 Software Functionality and Flow
  12. Adapting to Other Gen 3 C2000 MCUs
  13. 10Flash API
    1. 10.1 Flash API Checklist
      1. 10.1.1 Flash API Do's and Do Not's
  14. 11Source File Listing
  15. 12Troubleshooting
    1. 12.1 General
  16. 13Conclusion
  17. 14References
  18. 15Revision History

Testing Example

The examples provided were tested with F28P650DK9. To properly test the example, the memory window and breakpoints need to be utilized within Code Composer Studio. The following steps were followed to program and test the project.

  1. Connect the F28P650DK9 to the PC via USB and an XDS110 Debug Probe with JTAG connection.
  2. Connect a 5V DC power supply to the board.
  3. Start Code Composer Studio and open the F28P65x_EEPROM_PingPong_Example.pjt.
  4. Build the project by selecting Project -> Build Project.
  5. Launch the Target Configurations by going to View -> Target Configurations -> F28P65x_EEPROM_PingPong_Example -> targetConfigs -> right-click TMS320F28P650DK9.ccxml -> Launch Selected Configuration.
  6. Connect to CPU1 by going to the Debug window, right clicking Texas Instruments XDS110 USB Debug Probe_0/C28xx_CPU1, and selecting Connect Target.
  7. Load symbols by clicking Load Symbols and selecting the F28P65x_EEPROM_PingPong.out from the project.
  8. Set breakpoints to properly view data written to and read from the memory within the memory window as shown in Break Points.
    TMS320F28P650DK9 TMS320F280039C Break PointsFigure 5-1 Break Points
  9. Run to the first break-point and open the Memory Browser (View -> Memory Browser) to view the data. Bank_Pointer can be used to watch the data written and Read_Buffer to watch the data being read back from the memory. This is shown in Write to EEPROM Unit and Read Data.
    TMS320F28P650DK9 TMS320F280039C Write to EEPROM UnitFigure 5-2 Write to EEPROM Unit
    TMS320F28P650DK9 TMS320F280039C Read DataFigure 5-3 Read Data
  10. Continue running from break-point to break-point until the program has finished or EEPROM is full.
  11. Once EEPROM is full, you will see the new data written to the previously inactive unit and the full EEEPROM will be erased. Shown in Write to new EEPROM Unit and Erase full EEPROM Unit.
    TMS320F28P650DK9 TMS320F280039C Write to new EEPROM UnitFigure 5-4 Write to new EEPROM Unit
    TMS320F28P650DK9 TMS320F280039C Erase full EEPROM UnitFigure 5-5 Erase full EEPROM Unit
  12. This process can be repeated between the two EEPROM units as necessary.
    TMS320F28P650DK9 TMS320F280039C Write to original EEPROM unitFigure 5-6 Write to original EEPROM unit
    TMS320F28P650DK9 TMS320F280039C Erase full EEPROM UnitFigure 5-7 Erase full EEPROM Unit

The preceding steps were used to test the Page Mode configuration. The 64-Bit Mode configuration can also be tested with the same procedure. To enable 64-Bit Mode, change the definition in the EEPROM_PingPong_Config.h file by un-commenting the _64_BIT_MODE directive and commenting out the PAGE_MODE directive.