S32K--模拟EEPROM学习笔记

    使用NXP S32K148EVB的官方开发板,UART1引脚RX-PTC6 TX-PTC7。

ProcessorExpert配置

默认配置如下:

S32K--模拟EEPROM学习笔记_第1张图片

PFlash: 代码存储区

DFlash:在此区域分配EEE的备份区域

FlexRam:模拟EEE的起始地址。

S32K--模拟EEPROM学习笔记_第2张图片

初始化代码:

ret = FLASH_DRV_Init(&Flash1_InitConfig0, &flashSSDConfig);
DEV_ASSERT(STATUS_SUCCESS == ret);
if(flashSSDConfig.EEESize == 0) //若未分配EEE,则执行分配指令
	{
		/* Configure FlexRAM as EEPROM and FlexNVM as EEPROM backup region,
		 * DEFlashPartition will be failed if the IFR region isn't blank.
		 * Refer to the device document for valid EEPROM Data Size Code
		 * and FlexNVM Partition Code. For example on S32K148:
		 * - EEEDataSizeCode = 0x02u: EEPROM size = 4 Kbytes
		 * - DEPartitionCode = 0x04u: EEPROM backup size = 64 Kbytes */
        /*分区配置时备份区size = EEESize*16 分区代码参考芯片的DataSheet*/
		ret = FLASH_DRV_DEFlashPartition(&flashSSDConfig, 0x02u, 0x04u, 0x0u, false, true);

		DEV_ASSERT(STATUS_SUCCESS == ret);

		FLASH_DRV_Init(&Flash1_InitConfig0, &flashSSDConfig); //重新分配后一定要记得重新初始化

		/* Make FlexRAM available for EEPROM */
		ret = FLASH_DRV_SetFlexRamFunction(&flashSSDConfig, EEE_ENABLE, 0x00u, &gs_EEPROMStatus);
		DEV_ASSERT(STATUS_SUCCESS == ret);
	}

 

写入函数:

将数组sourceBuffer中的前4字节写入EEE基地址。

address = flashSSDConfig.EERAMBase;
size = sizeof(uint32_t);
ret = FLASH_DRV_EEEWrite(&flashSSDConfig, address, size, sourceBuffer);
DEV_ASSERT(STATUS_SUCCESS == ret);

读函数(自己随便写的):

status_t FLASH_DRV_enEEEu8Read(
                            uint32_t dest,
                            uint32_t size,
                            uint8_t * pData)
{
	status_t ret = STATUS_SUCCESS;    /* Return code variable */

	if ((FTFx_FCNFG & FTFx_FCNFG_EEERDY_MASK) == FTFx_FCNFG_EEERDY_MASK)
	    {
	        while ((size > 0U) && (ret == STATUS_SUCCESS))
	        {


	        	*pData = *((uint8_t *)dest++);

	            size--;
	            pData++;

	        }
	    }
	    else
	    {
	        ret = STATUS_UNSUPPORTED;
	    }

	    return ret;
}

需要特别注意:

解决烧录代码后保留EEE分区记录的问题。操作如下:

打开Debug Configurations->Advanced Options,设置擦除保护的区域(可同时保护三块区域),启用分区0204(分区代码,芯片型号不一样,分区代码不一样)

S32K--模拟EEPROM学习笔记_第3张图片S32K--模拟EEPROM学习笔记_第4张图片

你可能感兴趣的:(S32K--模拟EEPROM学习笔记)