SPRADE8A November   2023  – April 2024 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

EEPROM_Read

The EEPROM_Read() function provides functionality for reading the most recently written data and storing that data into a temporary buffer. This function can be used for debug purposes or to read stored data at runtime. The behavior differs in Page Mode vs 64-bit mode. In general, the most recently written data (page or 64-bits) are stored in the Read_Buffer.

Page Mode: First, the function verifies that data has been written to EEPROM by checking the Empty_EEPROM flag. If attempting to read data before any has been written, the values read into the buffer are invalid and an error is thrown. If data has been written, the current EEPROM Bank and Page are found and then the Read Buffer is filled.

uint16 i;

// Check for empty EEPROM
if (Empty_EEPROM)
{
    Sample_Error(); // Attempting to read data that hasn't been written
} else
{
    // Find Current Bank and Current Page
    EEPROM_GetValidBank(1);

    // Increment page pointer to point at first data word
    Page_Pointer += 8;

    // Transfer contents of Current Page to Read Buffer
    for(i=0;i<DATA_SIZE;i++)
    {
        Read_Buffer[i] = *(Page_Pointer++);
    }
    }

64-Bit Mode: First, the function verifies that data has been written to EEPROM by checking the Empty_EEPROM flag. If attempting to read data before any has been written, the values read into the buffer are invalid and an error is thrown. If data has been written,The pointer is moved back by four addresses (64-bits total) and the Read Buffer is filled with the data.

uint16 i;

// Check for empty EEPROM
if (Empty_EEPROM)
{
    Sample_Error(); // Attempting to read data that hasn't been written
} else
{
    // Move the bank pointer backwards to read data
    Bank_Pointer -= 4;

    // Transfer contents of Current Page to Read Buffer
    for(i=0;i<4;i++)
    {
        Read_Buffer[i] = *(Bank_Pointer++);
    }
}