TC397 Flash

例程

在此示例中,闪存程序存储器 (PFLASH) 的 64 字节被写入并在之后进行验证。 此外,64 字节的数据闪存 (DFLASH) 被写入和验证。
在任何写操作之前,闪存被擦除。 如果对应flash操作成功后,每个测试的 LED 都会亮起。
数据存储器单元 (DMU) 控制在程序和数据闪存存储器(PFLASH 和 DFLASH)上执行的命令序列,与闪存标准接口 (FSI) 和程序闪存接口 (PFI) 连接。

FSI 对所有闪存执行擦除、编程和验证操作。
AURIX™ TC39x 器件具有:

  • 6 Program Flash Banks (PFx)
  • 2 Data Flash Banks (DFx)

AURIX™ TC39x 具有五个大小为 3 MB 的 Program Flash bank (PF0…PF4) 和一个大小为 1 MB 的 Program Flash bank (PF5)。 每个 Program Flash bank 被划分为大小为 1024 KB 的物理扇区,每个物理扇区被划分为 64 个大小为 16 KB 的逻辑扇区.

AURIX™ TC39x 具有两个数据闪存组,DFLASH0 和 DFLASH1。 两者都包括通常用于 EEPROM 仿真的多个 EEPROM 扇区。 只有 DFLASH0 包含用于数据保护的用户配置块 (UCB) 和用户无法直接访问的配置扇区 (CFS)。

DFLASH EEPROM 可以配置为单端模式(默认)或补码检测。 根据所选模式,每个扇区的大小分别设置为 4 KB 和 2 KB。

可以在闪存中编程的最小数据量是 page

  • Program Flash pages are made of 32 Bytes
  • Data Flash pages are made of 8 Bytes

可以执行擦除操作的最小单位是逻辑扇区。

TC397 Flash_第1张图片

TC397 Flash_第2张图片
编程闪存程序存储器或数据闪存存储器的最小命令序列如下:
TC397 Flash_第3张图片

Flashing the Program Flash memory

要执行 PFLASH 编程,建议从与要编程的 PFLASH 不同的存储器位置运行代码。因此,在开始闪存操作之前,通过函数 copyFunctionsToPSPR() 将擦除和编程例程复制到 CPU0 的 Program Scratch-Pad SRAM (PSPR) 中。 这使用标准 c 库 string.h 中的 memcpy() 函数并将函数指针分配给新的内存位置。然后,实际的闪存编程操作从擦除所涉及的逻辑扇区开始。

Erase of Logical Sectors

要执行擦除操作,必须通过清除 EndInit 保护位在 PFLASH 上启用写操作,通过函数 IfxScuWdt_clearSafetyEndinitInline() 完成。然后,可以通过 IfxFlash_eraseMultipleSectors() 函数执行一个或多个连续逻辑扇区的擦除命令序列,该函数由函数指针 eraseSectors() 从 PSPR 执行。
最后,必须通过函数 IfxScuWdt_setSafetyEndinitInline() 再次设置 EndInit 保护位。
函数指针 waitUnbusy() 调用的函数 IfxFlash_waitUnbusy() 停止,直到扇区被擦除并且 PFLASH 再次准备好。

Write operations

擦除所需的逻辑扇区后,就可以开始写操作了。
函数指针 enterPageMode() 从 PSPR 调用的函数 IfxFlash_enterPageMode() 用于进入页面模式。 函数 waitUnbusy() 用于暂停,直到 PFLASH 准备好,然后,必须在页面中写入的数据被加载,重复调用函数 IfxFlash_loadPage2X32(),从 PSPR 使用函数指针 load2X32bits() 执行。

然后通过调用函数指针 writePage() 来写入加载的页面,该指针从 PSPR 执行 IfxFlash_writePage() 函数(在写入操作之前和之后,EndInit 保护位被清除和分别设置)。
最后调用waitUnbusy(),等待页面写入完成,PFLASH再次准备就绪,然后可以重复写入过程,直到所有需要的数据都成功写入PFLASH。

所有用于执行闪存操作命令序列的函数都可以在 iLLD 头文件 IfxFlash.h 中找到,而函数指针在 Flash_Programming.c 文件中声明和分配。

Flashing the Data Flash memory

除了地址不一样,其他跟PFLASH一致。

你可能感兴趣的:(单片机,c语言,嵌入式硬件)