S32K--模拟EEPROM学习笔记

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

ProcessorExpert配置

默认配置如下:

PFlash: 代码存储区

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

FlexRam:模拟EEE的起始地址。

初始化代码:

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(分区代码,芯片型号不一样,分区代码不一样)

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值