SPRADL4 January   2025 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. Introduction
  5. Differences Between EEPROM and On-Chip Flash
  6. Overview
    1. 3.1 Basic Concepts
    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. Single-Unit Emulation
    1. 5.1 User Configuration
      1. 5.1.1 EEPROM_Config.h
      2. 5.1.2 F29H85x_EEPROM.c
    2. 5.2 EEPROM Functions
      1. 5.2.1 Initialization and Setup Functions
        1. 5.2.1.1 Configure_Device
        2. 5.2.1.2 EEPROM_Config_Check
      2. 5.2.2 Page Mode Functions
        1. 5.2.2.1 EEPROM_GetValidBank
        2. 5.2.2.2 EEPROM_UpdateBankStatus
        3. 5.2.2.3 EEPROM_UpdatePageStatus
        4. 5.2.2.4 EEPROM_UpdatePageData
        5. 5.2.2.5 EEPROM_Write_Page
      3. 5.2.3 64-Bit Mode Functions
        1. 5.2.3.1 EEPROM_64_Bit_Mode_Check_EOS
        2. 5.2.3.2 EEPROM_Write_64_Bits
      4. 5.2.4 Functions Used in Both Modes
        1. 5.2.4.1 EEPROM_Erase
        2. 5.2.4.2 EEPROM_Read
      5. 5.2.5 Utility Functions
        1. 5.2.5.1 EEPROM_Write_Buffer
        2. 5.2.5.2 Erase_Bank
        3. 5.2.5.3 Set_Protection_Masks
        4. 5.2.5.4 Configure_Protection_Masks
        5. 5.2.5.5 Fill_Buffer
        6. 5.2.5.6 ClearFSMStatus
    3. 5.3 Testing Example
  9. Ping-Pong Emulation
    1. 6.1 User-Configuration
      1. 6.1.1 EEPROM_PingPong_Config.h
      2. 6.1.2 F29H85x_EEPROM_PingPong.c
    2. 6.2 EEPROM Functions
      1. 6.2.1 Initialization and Setup Functions
        1. 6.2.1.1 Configure_Device
        2. 6.2.1.2 EEPROM_Config_Check
      2. 6.2.2 Page Mode Functions
        1. 6.2.2.1 EEPROM_GetValidBank
        2. 6.2.2.2 EEPROM_UpdateBankStatus
        3. 6.2.2.3 EEPROM_UpdatePageStatus
        4. 6.2.2.4 EEPROM_UpdatePageData
        5. 6.2.2.5 EEPROM_Write_Page
      3. 6.2.3 64-Bit Mode Functions
        1. 6.2.3.1 EEPROM_64_Bit_Mode_Check_EOS
        2. 6.2.3.2 EEPROM_Write_64_Bits
      4. 6.2.4 Functions Used in Both Modes
        1. 6.2.4.1 EEPROM_Erase_Inactive_Unit
        2. 6.2.4.2 EEPROM_Read
        3. 6.2.4.3 EEPROM_Erase_All
      5. 6.2.5 Utility Functions
        1. 6.2.5.1 EEPROM_Write_Buffer
        2. 6.2.5.2 Erase_Bank
        3. 6.2.5.3 Configure_Protection_Masks
        4. 6.2.5.4 Set_Protection_Masks
        5. 6.2.5.5 Fill_Buffer
        6. 6.2.5.6 ClearFSMStatus
    3. 6.3 Testing Example
  10. Application Integration
  11. Flash API
    1. 8.1 Flash API Checklist
      1. 8.1.1 Flash API Do's and Do Not's
  12. Source File Listing
  13. 10Troubleshooting
    1. 10.1 General
  14. 11Conclusion
  15. 12References

EEPROM_UpdateBankStatus

The EEPROM_UpdateBankStatus() function provides functionality for updating the EEPROM bank status. This function called from the EEPROM_Write_Page() function. The EEPROM bank status is first read to determine how to proceed.

uint8_t Current_Bank_Status = *(Bank_Pointer);

If this status indicates the EEPROM bank is empty, the status is changed to Current and programmed.

Fill_Buffer(Bank_Status, status_buffer_len, CURRENT_BANK);

EEPROM_Write_Buffer(Bank_Pointer, Bank_Status);

Page_Counter = 0;
Page_Pointer = Bank_Pointer + WRITE_SIZE_BYTES*2;

If the status is not empty, the next check is for a full EEPROM bank. In this case, the current EEPROM bank's status will be updated to show full and the next bank's status will be set to Current to allow programming of the next EEPROM bank. Lastly, the page pointer is updated to the first page of the new EEPROM bank.

Fill_Buffer(Bank_Status, status_buffer_len, CURRENT_BANK);

EEPROM_Write_Buffer(Bank_Pointer + WRITE_SIZE_BYTES, Bank_Status);

Bank_Pointer += Bank_Size;

if (Bank_Counter == NUM_EEPROM_BANKS - 1)
{
    return;
}

Fill_Buffer(Bank_Status, status_buffer_len, CURRENT_BANK);
EEPROM_Write_Buffer(Bank_Pointer, Bank_Status);
Page_Counter = 0;
Page_Pointer = Bank_Pointer + WRITE_SIZE_BYTES*2;