- S32K3 FEE 概述
Data Flash 模拟 EEPROM,使用 MACL 层的 FEE 和 FLS 模块实现功能。如图 1.1 展示
了 S32K3xx 系列的内部 flash 资源。S32K344 有 128K 的 Dflash。如图 1.2 所示,对 flash 扇
区的描述说明




Flash 驱动的基本参数配置。如所示。在启动时将驱动加载代码到 RAM 中,在驱动完
成工作时,会从 RAM 中卸载。在使能清除缓存后,Access Code 函数的缓存数据,会加载
到实际的 RAM 当中,配置如图 3.4 所示。
启用缓存 API 接口特性,来同步内存,确保在擦除、读、写操作前使缓存失效,在对闪
存操作后,缓存和修改后的闪存保持同步。如图 3.5 所示

配置闪存模拟 EEPROM 模块参数,在对逻辑扇区引用时,需要注意,如果 FEE 使用的
FLS 驱动程序启用了 FLS_Cancel API,则 FLS 页写异步模式不能用于闪存扇区。需要禁用
Fls_Cancel API 或使用同步写。
如果在 FEE 使用的 FLS 驱动程序中启用了 Fls_Cancel API,则 Fls Max Write Normal
Mode /Fls Max Write 快速模式参数值不能小于 FEE 块/群集头的大小或 FEE 虚拟页面的大
小,以较大者为准。Indx 的值为 0 到 65534。配置参数如图 3.8 所示。

- 例程解读
在模拟 EEPROM 时,需要 FLS 和 FEE 两个模块,共同实现功能,如程序清单 4.1 所
示。 在往 block 写入数据,数据的 block size 字节数,会自动写入。在读取数据时,用户可
以设置读取数据偏移值,读取所需数据位的值。
/* Write your code here /
MemIf_StatusType status = MEMIF_IDLE;
/ Initialize Fls driver /
Fls_Init(NULL_PTR);
/ Initialize Fee driver */
Fee_Init(NULL_PTR);
/Perform init Fee driver/
do
{
Fls_MainFunction();
Fee_MainFunction();
status = Fee_GetStatus();
} while (status != MEMIF_IDLE);
/Write data to block 0/
Fee_Write(FeeConf_FeeBlockConfiguration_FeeBlockConfiguration_0, DataBlock0);
/Perform write data to Block 0/
do
{
Fls_MainFunction();
Fee_MainFunction();
status = Fee_GetStatus();
} while (status != MEMIF_IDLE);
/Read data block 0, from offset 2 and length is 2/
Fee_Read(FeeConf_FeeBlockConfiguration_FeeBlockConfiguration_0, 2, DataReceive, 2);
/Perform read data form Block 0/
do
{
Fls_MainFunction();
Fee_MainFunction();
status = Fee_GetStatus();
} while (status != MEMIF_IDLE);

- 参考资料
[1] S32K3xx Reference Manual
[2] S32K344_S32K324_S32K314_IOMUX.xlsx
[3] S32K3xx_interrupt_map.xlsx
[4] S32K3xx_memory_map.xlsx