这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K3XX】DFLASH写入擦除验证

共1条 1/1 1 跳转至

【S32K3XX】DFLASH写入擦除验证

高工
2026-01-27 15:49:08     打赏

【简介】

             在上一篇帖子(【S32K3XX】Flash驱动使用)介绍了S32K3芯片的 C40 IP 的flash驱动的适配方法。我们之前介绍了PFLAH 的驱动配置,S3K324 的芯片集成了5块flash,4块1MB 的PFLASH 和 一块128KB 的Data Flash memory,对应如下:

image.png

对于DFLASH 的大小当安装了HSE的FW对应的大小也会减少有一部分会分配给HSE来使用,以下是3X2对应安装了HSE固件时对应的用户程序可使用的大小只有88KB

image.png

从RTD 的DFLASH 的 sector 的定义可知128KB的DFLASH 被划分为16个sector,每个sector 大小为8KB.

image.png

S32K3 系列芯片的PFLASH 和 DFLASH 的驱动接口使用同一套接口,我们在之前的PFLASH 的驱动测试程序基础上只是修改地址信息和sector ID来验证DFLASH 擦除写入试验。

/*================================================================================================== 
*                                       LOCAL MACROS 
==================================================================================================*/  
#define FLS_MASTER_ID                0U  
#define FLS_BUF_SIZE                 128U  
#define FLS_SECTOR_ADDR              0x10000000U  
#define FLS_SECTOR_TEST              C40_CODE_ARRAY_0_BLOCK_1_S000  
  
void flash_erase_test(void)  
{  
    C40_Ip_StatusType t_ReturnValue = C40_IP_STATUS_ERROR;  
  
    t_ReturnValue = C40_Ip_ClearLock(FLS_SECTOR_TEST, FLS_MASTER_ID);  
    if(C40_IP_STATUS_SUCCESS != t_ReturnValue)  
    {  
        /* erase failed */  
        PRINTF("Flash clear lock failed %x \r\n", t_ReturnValue);  
    }  
    else  
    {  
        PRINTF("Flash clear lock success \r\n");  
    }  
  
    /* erase 0x50_0000  */  
    t_ReturnValue = C40_Ip_MainInterfaceSectorErase(FLS_SECTOR_TEST, FLS_MASTER_ID);  
    if(C40_IP_STATUS_SUCCESS != t_ReturnValue)  
    {  
        /* erase failed */  
        PRINTF("Flash erase failed %x \r\n", t_ReturnValue);  
    }  
    else  
    {  
        PRINTF("Flash erase success \r\n");  
    }  
  
    t_ReturnValue = WaitForFlag(FLASH_MCR_ERS_MASK);  
    if(C40_IP_STATUS_SUCCESS != t_ReturnValue)  
    {  
        /* erase failed */  
        PRINTF("Flash waite erase failed %x \r\n", t_ReturnValue);  
    }  
    else  
    {  
        PRINTF("Flash wait erase success \r\n");  
    }  
}

   DFLASH 的擦除运行后 10000000 已经按照预期的擦除成功。

image.png

DFLASH 的写入也同样按照预期的写入。

image.png

           


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]