S32K144之SDK版:FLASH(内部模拟EEPROM)模块应用

基础知识

资源大小

 

 

资源分类

 

 

添加配置模块

设置保护区

 

代码补全

头文件

源文件

初始化

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;
}
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值