ZHCAEX4 January   2025 F29H850DM , F29H850TU , F29H859TU-Q1 , F29P589DM-Q1 , F29P589DU-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1 简介
  5. 2 EEPROM 与片上闪存的区别
  6. 3 概述
    1. 3.1 基本概念
    2. 3.2 单存储单元方法
    3. 3.3 乒乓方法
    4. 3.4 创建 EEPROM 节(页)和页标识
  7. 4 软件说明
    1. 4.1 软件功能和流程
  8. 5 单存储单元仿真
    1. 5.1 用户配置
      1. 5.1.1 EEPROM_Config.h
      2. 5.1.2 F29H85x_EEPROM.c
    2. 5.2 EEPROM 函数
      1. 5.2.1 初始化和设置函数
        1. 5.2.1.1 Configure_Device
        2. 5.2.1.2 EEPROM_Config_Check
      2. 5.2.2 页面模式函数
        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 位模式函数
        1. 5.2.3.1 EEPROM_64_Bit_Mode_Check_EOS
        2. 5.2.3.2 EEPROM_Write_64_Bits
      4. 5.2.4 两种模式下使用的函数
        1. 5.2.4.1 EEPROM_Erase
        2. 5.2.4.2 EEPROM_Read
      5. 5.2.5 实用功能
        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 测试示例
  9. 6 乒乓仿真
    1. 6.1 用户配置
      1. 6.1.1 EEPROM_PingPong_Config.h
      2. 6.1.2 F29H85x_EEPROM_PingPong.c
    2. 6.2 EEPROM 函数
      1. 6.2.1 初始化和设置函数
        1. 6.2.1.1 Configure_Device
        2. 6.2.1.2 EEPROM_Config_Check
      2. 6.2.2 页面模式函数
        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 位模式函数
        1. 6.2.3.1 EEPROM_64_Bit_Mode_Check_EOS
        2. 6.2.3.2 EEPROM_Write_64_Bits
      4. 6.2.4 两种模式下使用的函数
        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 实用功能
        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 测试示例
  10. 7 应用集成
  11. 8 闪存 API
    1. 8.1 闪存 API 检查清单
      1. 8.1.1 使用闪存 API 时的注意事项
  12. 9 源文件清单
  13. 10故障排除
    1. 10.1 一般
  14. 11结语
  15. 12参考资料

EEPROM_64_Bit_Mode_Check_EOS

EEPROM_64_Bit_Mode_Check_EOS() 提供确定 EEPROM 单元是否已满并分配正确地址(如果需要)的功能。如果检测到已满的 EEPROM 单元,则标记该单元以进行擦除,并将指针移动到另一个干净单元。

首先,根据所使用的器件和配置检索 EEPROM 的结束地址。END_OF_SECTOR 指令在 EEPROM_Config.h 文件中进行设置。

uint8_t* End_Address = (uint8_t*) END_OF_SECTOR;

接下来,将 EEPROM 组指针与结束地址进行比较。如果写入 64 个新位会超出结束地址,则表示该单元已满并且需要进行擦除。将切换活动 EEPROM 单元,配置新的写入/保护掩码,设置 Erase_Inactive_Unit 标志,并将 EEPROM 组指针重置为新的活动 EEPROM 单元的开头。

if (Bank_Pointer > End_Address - WRITE_SIZE_BYTES)
{
    EEPROM_ACTIVE_UNIT ^= 1;
    Set_Protection_Masks();
    Erase_Inactive_Unit = 1;
    RESET_BANK_POINTER;
}