基础知识
资源大小
资源分类
添加配置模块
设置保护区
代码补全
头文件
源文件
初始化
void Flash_Init(void)
{
uint8_t ret = 0;
ret = FLASH_SUCCESS;
///initial flash
ret =FLASH_DRV_Init(&Flash1_InitConfig0,&flashSSDConfig);
DEV_ASSERT(STATUS_SUCCESS == ret);
///若未分配EEE,则执行分配指令
if(0 == flashSSDConfig.EEESize)
{
/* 分区这个函数必须使用
* 选配分出内存分区段
* uEEEDataSizeCode FCCOB4 0X2选择4K 的EEPROM空间
* uDEPartitionCode FCCOB5 0x8选择64K 的EEPROM空间
* uCSEcKeySize FCCOB1 CSEc加密服务选项 无
* uSFE FCCOB2 仅验证属性关闭
* flexRamEnableLoadEEEData FCCOB3 复位期间是否加载数据 加载 */
/*分区配置时备份区size = EEESize*16 分区代码参考芯片的DataSheet*/
ret = FLASH_DRV_DEFlashPartition(&flashSSDConfig, 0x02u, 0x08u, 0x0u, false, true);
DEV_ASSERT(STATUS_SUCCESS == ret);
///重新分配后一定要记得重新初始化
FLASH_DRV_Init(&Flash1_InitConfig0, &flashSSDConfig);
/*
* 选配分出内存分区段
* flexRamFuncCode FCCOB1 EEE_ENABLE 使能FlexRAM 模拟EEPROM
* byteOfQuickWrite FCCOB4 FCCOB5
* pEEPROMStatus EEPROM状态 结构体中三个状态
* */
FLASH_DRV_SetFlexRamFunction(&flashSSDConfig,EEE_ENABLE,0x00,NULL);
DEV_ASSERT(STATUS_SUCCESS==ret);
}
ret = ret;
}
读取函数
uint8_t Flash_Get_FlashData(uint32_t pDest, uint8_t* pSource, uint16_t Size)
{
uint8_t ret = FLASH_SUCCESS;
if ((FTFx_FCNFG & FTFx_FCNFG_EEERDY_MASK) == FTFx_FCNFG_EEERDY_MASK)
{
while ((Size > 0U) && (ret == FLASH_SUCCESS))
{
*pSource = *((uint8_t *)pDest++);
Size--;
pSource++;
}
}
else
{
ret = STATUS_UNSUPPORTED;
}
return ret;
}
写入函数
uint8_t Flash_Set_FlashData(uint32_t Address,uint8_t* pData,uint16_t Size)
{
uint8_t u8Ret = FLASH_SUCCESS;
if (flashSSDConfig.EEESize != 0u)
{
u8Ret = FLASH_DRV_EEEWrite(&flashSSDConfig, Address, Size, pData);
DEV_ASSERT(STATUS_SUCCESS == u8Ret);
}
else
{
u8Ret = FLASH_FAILURE;
}
return u8Ret;
}