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

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.
    GUID-20231017-SS0I-XJ66-XQW8-9T79XLFFLHKH-low.pngFigure 5-2 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.
    GUID-20231017-SS0I-VQBK-W5MF-WSZTPPBMZZVW-low.pngFigure 5-3 Write to EEPROM Unit
    GUID-20231017-SS0I-7RCG-PH5K-FWRZCPG5PVTH-low.pngFigure 5-4 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.
    GUID-20231017-SS0I-BW6F-L0T4-TNGNMCM6HTBV-low.pngFigure 5-5 Write to new EEPROM Unit
    GUID-20231017-SS0I-KL0M-KKL1-R7TVDJZ0GQ45-low.pngFigure 5-6 Erase full EEPROM Unit
  12. This process can be repeated between the two EEPROM units as necessary.
    GUID-20231017-SS0I-BSCL-FMBC-J3DQWSGQ54GV-low.pngFigure 5-7 Write to original EEPROM unit
    GUID-20231017-SS0I-PR1L-XPPS-PKQRNHTKQ4XL-low.pngFigure 5-8 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.