Other Parts Discussed in Thread: C2000WARE
器件型号: TMS320F28P550SJ
主题: C2000WARE 中讨论的其他器件
您好、
我使用为 EEPROM 乒乓模型提供的 C2000Ware_6_00_00 示例。 由于每次在 EEPROM_NVM 期间调用擦除函数、因此每次进行软复位时都会擦除 Config_Check。 是否可以添加一项检查、通过检查组中的数据是否可用、并在初始化期间仅复位一次、而不是每次软复位、来防止调用擦除函数。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Other Parts Discussed in Thread: C2000WARE
器件型号: TMS320F28P550SJ
主题: C2000WARE 中讨论的其他器件
您好、
我使用为 EEPROM 乒乓模型提供的 C2000Ware_6_00_00 示例。 由于每次在 EEPROM_NVM 期间调用擦除函数、因此每次进行软复位时都会擦除 Config_Check。 是否可以添加一项检查、通过检查组中的数据是否可用、并在初始化期间仅复位一次、而不是每次软复位、来防止调用擦除函数。
尊敬的 Srikanth:
C2000Ware EEPROM 乒乓示例不包括一种内置机制、用于在存储体中已存在有效数据时跳过擦除。 您需要在内部的擦除调用之前添加自定义验证检查 EEPROM_Config_Check 、以便有条件地跳过它。
在 C2000 闪存上、 擦除会将所有位设置为 1 (即,擦除闪存读数为) 0xFFFF。 您可以利用它来检测银行是否已包含有效数据:
在每个 NVM 存储库中为“幻数“或签名(例如,或任何非的值)保留一个已知位置 0xA5A5 0xFFFF。
在中调用 erase 函数之前 EEPROM_Config_Check、请先读取该位置。 如果签名存在且有效、则跳过擦除—该存储体已有初始化数据。
仅 当签名位置读取 0xFFFF (空白/已擦除)或包含意外值(损坏的数据)时才擦除。
伪代码示例:
// At the start of EEPROM_Config_Check, before the erase call:
uint16_t signature = *(volatile uint16_t *)EEPROM_BANK_SIGNATURE_ADDR;
if (signature == EEPROM_VALID_SIGNATURE)
{
// Valid data exists — skip erase, proceed to normal operation
return;
}
// Signature not found — first-time init or corrupted bank
// Proceed with erase and then write the signature after initialization
Fapi_issueAsyncCommandWithAddress(Fapi_EraseBank, ...);
// ... after erase and initial data programming ...
// Program the signature to mark the bank as initializedFapi_doBlankCheck() 检查闪存主阵列是否等于 0xFFFF —确认某个区域是否已擦除。 您还可以使用此 API 调用来确定存储体状态、而不是(或对幻数进行补充)。您也可以 Fapi_doBlankCheck() 直接在存储体的数据区域上使用。 如果返回存储体 不为空、则表示您知道数据已编程、可以跳过擦除。 但是、专用签名/幻数更可靠、因为它可以区分“有效的初始化数据“和“部分写入/损坏的数据“。
此致、
Zackary Fleenor