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

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

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

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 已经按照预期的擦除成功。

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

我要赚赏金
