1.以下是自己经验证总结后的EEPROM初始化操作,亲测有效。
void flash_init(void)
{
/* 安装烧录命令完成事件中断 */
INT_SYS_InstallHandler(FTFC_IRQn, CCIF_Handler, (isr_t*) 0);
INT_SYS_EnableIRQ(FTFC_IRQn);
/* 使能中断 */
INT_SYS_EnableIRQGlobal();
/* 调用其他功能时之前一定要先使能FLASH外设驱动 */
ret = FLASH_DRV_Init(&Flash1_InitConfig0, &flashSSDConfig);
DEV_ASSERT(STATUS_SUCCESS == ret);
#if ((FEATURE_FLS_HAS_FLEX_NVM == 1u) & (FEATURE_FLS_HAS_FLEX_RAM == 1u))
/* 将FLEXRAM设置为EEPROM */
if (flashSSDConfig.EEESize == 0u)
{
/* 将FLEXRAM设置为EEPROM,并且将FLEXNVM设置为EEPROM的备份区
* - EEEDataSizeCode = 0x02u: EEPROM size = 4 Kbytes
* - DEPartitionCode = 0x08u: EEPROM backup size = 64 Kbytes
* - uCSEcKeySize = 0x08u: CSEc加密服务选项
* - uSFE = false 仅验证属性关闭
* - flexRamEnableLoadEEEData = true 复位期间是否加载数据 加载
*/
ret = FLASH_DRV_DEFlashPartition(&flashSSDConfig, 0x02u, 0x08u, 0x0u, false, true);
DEV_ASSERT(STATUS_SUCCESS == ret);
/* 重新初始化FLASH驱动.用来更新设置 */
ret = FLASH_DRV_Init(&Flash1_InitConfig0, &flashSSDConfig);
DEV_ASSERT(STATUS_SUCCESS == ret);
/*将FLEXRAM设置为可供EEPROM使用*/
ret = FLASH_DRV_SetFlexRamFunction(&flashSSDConfig, EEE_ENABLE, 0x00u, NULL);
DEV_ASSERT(STATUS_SUCCESS == ret);
}
#endif