打印
[AURIX™]

TC397 Flash

[复制链接]
766|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
例程
在此示例中,闪存程序存储器 (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
可以执行擦除操作的最小单位是逻辑扇区。





编程闪存程序存储器或数据闪存存储器的最小命令序列如下:



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一致。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_42580645/article/details/125356483

使用特权

评论回复
沙发
l63t89| | 2024-12-2 16:28 | 只看该作者
PFLASH 和 DFLASH 被用作程序存储和数据存储,其中 DFLASH 特别适用于 EEPROM 仿真,并具有数据保护机制。

使用特权

评论回复
板凳
tpgf| | 2024-12-3 11:23 | 只看该作者
TC397 Flash编程是一个复杂但有序的过程,涉及到硬件连接、软件配置、Flash编程等多个步骤

使用特权

评论回复
地板
观海| | 2024-12-5 16:12 | 只看该作者
要执行擦除操作,必须通过清除EndInit保护位在PFLASH上启用写操作,通过函数IfxScuWdt_clearSafetyEndinitInline()完成

使用特权

评论回复
5
guanjiaer| | 2024-12-5 18:38 | 只看该作者
可以通过IfxFlash_eraseMultipleSectors()函数执行一个或多个连续逻辑扇区的擦除命令序列

使用特权

评论回复
6
heimaojingzhang| | 2024-12-5 20:27 | 只看该作者
函数指针enterPageMode()从PSPR调用的函数IfxFlash_enterPageMode()用于进入页面模式

使用特权

评论回复
7
keaibukelian| | 2024-12-5 22:11 | 只看该作者
函数waitUnbusy()用于暂停,直到PFLASH准备好,然后,必须在页面中写入的数据被加载,重复调用函数IfxFlash_loadPage2X32(),从PSPR使用函数指针load2X32bits()执行

使用特权

评论回复
8
paotangsan| | 2024-12-6 09:11 | 只看该作者
PF0…PF5的地址映射为A000 0000H - A0FF FFFFH,每个Program Flash bank被划分为大小为1024 KB的物理扇区,每个物理扇区被划分为64个大小为16 KB的逻辑扇区

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

4129

帖子

3

粉丝