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_PingPong_Config.h

EEPROM_PingPong_Config.h 包含允许用户更改 EEPROM 配置各个方面的定义。这些方面包括:

  • 定义正在使用的器件型号。这允许在并非所有器件都通用的闪存组中进行 EEPROM 仿真。

// Un-comment appropriate definition if one of the following variants is being used
#define F28P65xDKx 1
//#define F28P65xSKx 1
//#define F28P65xSHx 1
  • 在页面模式和 64 位模式之间进行选择。

//#define _64_BIT_MODE 1
#define PAGE_MODE 1
  • 选择要用于仿真的闪存组。默认情况下,闪存 API 和程序从闪存组 0 中存储/运行,因此该闪存组无法用于 EEPROM 仿真。通常,闪存 API 和程序应该从与用于 EEPROM 仿真的闪存组不同的闪存组中存储/运行。

#define FLASH_BANK_SELECT FlashBank1StartAddress
  • 定义闪存扇区大小(单位为 16 位字)。这会因使用的器件而异,请参阅相应的数据表了解详细信息。

#define FLASH_SECTOR_SIZE F28P65x_FLASH_SECTOR_SIZE
  • 定义一个闪存组中有多少个闪存扇区。这会因使用的器件而异,请参阅相应的数据表了解详细信息。

#define NUM_FLASH_SECTORS F28P65x_NUM_FLASH_SECTORS
  • 选择要仿真的 EEPROM 组的数量。

#define NUM_EEPROM_BANKS 4
  • 选择每个 EEPROM 组中有多少个 EEPROM 页面

#define NUM_EEPROM_PAGES 3
  • 选择每个 EEPROM 页面中包含的数据空间大小(单位为 16 位字)。尽管可以指定任何大小,但该大小将调整为大于或等于指定大小的最接近的四的倍数。例如,每页 6 个 16 位字的指定大小将被编程为每页 8 个 16 位字,最后两个字被视为 0xFFFF。这是为了符合闪存要求(为每个 64 位对齐的闪存存储器地址进行 8 位 ECC 编程)。

#define DATA_SIZE 64