这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K146】S32K146片内EEPROM编程

共5条 1/1 1 跳转至

【S32K146】S32K146片内EEPROM编程

高工
2025-06-21 14:18:58     打赏

【简介】                        

S32K146 的Flash Memory Module (FTFC) 包含P-flash/FlexNVM/FlexRAM 三种类型,我们在此贴(【S32K146】S32K146片内flash编程)介绍了P-flash 的编程操作。在此基础上继续使用片内的EEPROM,使用片内的EEPROM 会使用到FlexNVM/FlexRAM。

以下是S32K1XX系列芯片内部memory 类型及大小,其中包含了P-flash/FlexNVM/FlexRAM 的大小的说明

image.png

S32K1xx EEPROM 启用后在芯片复位时将FlexNVM 的数据加载到FlexRAM 中。读取:直接从 FlexRAM 中读取记录,不涉及任何的 FlexNVM读操作。写入:直接将数据写入 FlexRAM 的记录中,记录的数据自动同步到 FlexNVM中。要使用 EEPROM 功能,必须对 FlexNVM 的内存进行分区。分区过程告诉状态机将使用多少 EEPROM 内存以及将使用多少 FlexNVM 来备份 EEPROM E-FlashFlexNVM 有一个特殊的分区命令,用于配置 EEPROM。分区命令用于对 EEPROM 的两个参数即 E-Flash 的大小和 EEPROM 的大小进行编程。这两个参数被编程到 FlexNVM 的特殊位置。由于这是一个非易失性存储位置,因此在设备的整个生命周期中只需要进行一次分区。在启动分区命令之前, FlexNVM D-Flash IFR(Nonvolatile information register)必须处于擦除状态。

以下是S32K146 的 FlexNVM 的分区命令来划定EEPROM 和 D-Flash 的配置大小

image.png

以下是S32K146 的 FlexNVM 的分区命令FCCOB 对应的配置命令说明如下:

image.png

对应的FCCOBX配置说明如下:

image.png

image.png

FCCOB 的set FLexRAM 命令可以配置FLexRAM  作为EEPROM使用,对应说明如下:

image.png

image.png

image.png

image.png

在原有的flash 初始化的基础上添加FlexNVM的分区配置并使能FlexRAM 作为EEPROM功能使用。

image.png

上述代码运行后按照预期对flexnvm 进行了分区配置

image.png


我们编写如下的测试代码对EEPROM进行写入

unsigned int  eeprom(char argc,char *argv[])
{
    status_t ret;
    if(argc != 2)
        return 1;

    if(strcmp("write",argv[1]) == 0)
    {
        ret = FLASH_DRV_EEEWrite(&Pss_InitConfig_Lfs, Pss_InitConfig_Lfs.EERAMBase, 16, "0123356789abcdef");
        if(ret != STATUS_SUCCESS)
        {
            LOG_E("eeprom write failed %x.",ret);
        }
        else
        {
            LOG_I("eeprom write OK.");
        }
    }
    return 0;
}

image.png

写入后 读取FlexRAM的base 地址的数据,结果如下已经按照预期的写入。

image.png

断电重启后再次dump flexram(0x14000000)的数据,掉电后依然可以读取。

image.png






专家
2025-06-21 17:39:08     打赏
2楼

感谢分享


专家
2025-06-21 18:05:21     打赏
3楼

感谢分享


专家
2025-06-21 18:06:29     打赏
4楼

感谢分享


专家
2025-06-22 08:39:31     打赏
5楼

谢谢分享


共5条 1/1 1 跳转至

回复

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