ZHCADD5A November   2023  – April 2024 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 简介
  5. EEPROM 与片上闪存的区别
  6. 概述
    1. 3.1 基本概念
    2. 3.2 单存储单元方法
    3. 3.3 乒乓方法
    4. 3.4 创建 EEPROM 节(页)和页标识
  7. 软件说明
    1. 4.1 软件功能和流程
  8. 乒乓仿真
    1. 5.1 用户配置
      1. 5.1.1 EEPROM_PingPong_Config.h
      2. 5.1.2 F28P65x_EEPROM_PingPong.c
    2. 5.2 EEPROM 函数
      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 测试示例
  9. 单存储单元仿真
    1. 6.1 用户配置
      1. 6.1.1 EEPROM_Config.h
      2. 6.1.2 F28P65x_EEPROM.c
    2. 6.2 EEPROM 函数
      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 测试示例
  10. 应用集成
  11. 适配其他第 3 代 C2000 MCU
  12. 闪存 API
    1. 9.1 闪存 API 检查清单
      1. 9.1.1 使用闪存 API 时的注意事项
  13. 10源文件清单
  14. 11故障排除
    1. 11.1 常见问题
  15. 12结语
  16. 13参考资料
  17. 14修订历史记录

EEPROM_Read

EEPROM_Read() 函数的功能是读取最近写入的数据并将该数据存储到临时缓冲区。此函数可用于调试目的,或者在运行时读取存储的数据。页面模式与 64 位模式的行为有所不同。通常,最近写入的数据(页面或 64 位)存储在 Read_Buffer 中。

页面模式:首先,该函数通过检查 Empty_EEPROM 标志来验证数据是否已写入 EEPROM。如果在写入任何数据之前尝试读取数据,则读入缓冲区的值无效并抛出错误。如果数据已写入,则找到当前的 EEPROM 组和页面,然后填充读缓冲区。

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 位模式:首先,该函数通过检查 Empty_EEPROM 标志来验证数据是否已写入 EEPROM。如果在写入任何数据之前尝试读取数据,则读入缓冲区的值无效并抛出错误。如果数据已写入,则指针向后移动四个地址(共 64 位),读取缓冲区被数据填满。

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++);
    }
}