您好,
,我是恩智浦生态系统的新成员,急需帮助。
我正在使用 S32K118 并一直在尝试使用 D-Flash 作为非易失性存储器,但无论我尝试哪种方式我似乎都无法让它起作用...
起初,我尝试对 FlexNVM 进行分区以模拟 EEEPROM,但总是出现 ACCERR。我试图在数据表中详细说明其中的所有原因,但我唯一能想到的是,该函数是写入 P-Flash 的,但必须在 RAM 中("
程序分区命令不能从闪存中用上市,因为在 “程序分区” 命令执行期间无法访问
闪存资源。")。我也无法将函数写入 RAM,因为我遇到了一些链接器问题......
既然不行,我就尝试手动写入 D-FLASH,但却出现了 MGSTAT 错误,这意味着它尚未被清除。当我试图清除它时,却出现了 HardFault...AI 认为这可能是没有再次从 RAM 运行功能的问题,但我无法像之前提到的那样让它工作......
,我会在下面添加我的文件,非常感谢任何帮助。
首先需要执行程序分区操作,根据 AN11983 第 2.2.2 节的要求配置 FlexRAM/FlexNVM。
S32DS SDK 中有一个示例代码(flash_partitioning_s32k144)。在对示例代码进行编程之前,它必须是空白的新设备或已执行大规模擦除操作。没有默认值,只需执行一次。
您也可以使用我以前做过的示例代码。它按照示例代码的意图将 FlexRAM 配置为 RAM,但它也将 FlexNVM 安装为 D-Flash:
FlexNVM 的 EEPROM 部分将通过 FlexRAM 内存地址空间访问。
FlexNVM 的数据闪存部分将以普通方式访问,即直接读取闪存地址和擦除/编程闪存地址。
如何为闪存编程的简单示例,请参见此处:
https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K144-Flash-RW-simple/ta-p/1110000