ZHCADD5A November 2023 – April 2024 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
EEPROM_Get_64_Bit_Data_Address() 提供确定 EEPROM 单元是否已满并分配正确地址(如果需要)的功能。如果检测到已满的 EEPROM 单元,则使用 EEPROM_Erase() 函数擦除 EEPROM,并切换活动 EEPROM 单元。
首先,根据所使用的器件和配置设置 EEPROM 的结束地址。END_OF_SECTOR 指令在 EEPROM_Config.h 文件中进行设置。
End_Address = (uint16 *)END_OF_SECTOR; // Set End_Address for sector
接下来,将 EEPROM 组指针与结束地址进行比较。如果从当前 EEPROM 组指针开始写入 4 个 16 位字会超出结束地址,则表明该扇区已满。此时,将切换活动 EEPROM 单元,配置新的写入/保护掩码,设置 Erase_Inactive_Unit 标志,并将 EEPROM 组指针重置为新的活动 EEPROM 单元的开头。
if(Bank_Pointer > End_Address-3) // Test if EEPROM is full
{
EEPROM_ACTIVE_UNIT ^= 1;
uint64 WE_Protection_AB_Mask = Configure_Protection_Masks(
FIRST_AND_LAST_SECTOR[EEPROM_ACTIVE_UNIT],
NUM_EEPROM_SECTORS);
WE_Protection_A_Mask = 0xFFFFFFFF ^ (uint32)WE_Protection_AB_Mask;
WE_Protection_B_Mask = 0x00000FFF ^ WE_Protection_AB_Mask >> 32;
Erase_Inactive_Unit = 1;
RESET_BANK_POINTER;
}