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

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

在这里插入图片描述

在这里插入图片描述
编程闪存程序存储器或数据闪存存储器的最小命令序列如下:
在这里插入图片描述

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

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TC397是一款基于ARM Cortex-M3内核的微控制器,它内置了一些存储器,包括Program Flash (PFlash)和Data Flash (DFlash)。这些存储器可用于存储程序代码和数据。 PFlash和DFlash的操作方式类似,但有一些区别。下面是它们的简要介绍: 1. PFlash PFlash是用来存储程序代码的,它的容量通常比DFlash要大。在TC397中,PFlash的容量为512KB,它被划分为若干个扇区,每个扇区的大小为4KB。 PFlash的操作可以分为以下几个步骤: (1)解锁PFlash。执行PFlash操作前,需要先解锁PFlash。 (2)擦除扇区。如果需要修改某个扇区的内容,需要先将该扇区擦除。 (3)编程。将需要写入的数据编程到PFlash中。 (4)上锁。执行PFlash操作后,需要将PFlash上锁,以保护PFlash的内容不被修改。 2. DFlash DFlash是用来存储数据的,它的容量通常比PFlash要小。在TC397中,DFlash的容量为16KB,它被划分为若干个页,每个页的大小为256B。 DFlash的操作可以分为以下几个步骤: (1)解锁DFlash。执行DFlash操作前,需要先解锁DFlash。 (2)擦除页。如果需要修改某个页的内容,需要先将该页擦除。 (3)编程。将需要写入的数据编程到DFlash中。 (4)上锁。执行DFlash操作后,需要将DFlash上锁,以保护DFlash的内容不被修改。 以上是PFlash和DFlash的简要介绍和操作步骤,具体的操作方法需要参考TC397的数据手册。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值