ZHCADD5A November 2023 – April 2024 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
许多应用都需要在非易失性存储器中存储少量系统相关数据(校准值、器件配置),这样即使在系统下电上电后,也可以使用或修改并重复使用这些数据。电可擦除可编程只读存储器 (EEPROM) 主要用于此目的。EEPROM 能多次反复擦除和写入存储器的各个字节,即使在系统断电后,编程位置也能长时间保存数据。本应用报告和相关代码有助于将片上闪存存储器的一个或多个扇区定义为仿真 EEPROM,并由应用程序用于透明地写入、读取和修改数据。
本应用报告中讨论的工程配套资料和源代码可以在 C2000Ware v5.02.00.00(或更高版本)中找到,路径如下:C2000Ware_5_02_00_00/driverlib/f28p65x/examples/c28x/flash/,C2000Ware_5_02_00_00/driverlib/f28003x/examples/flash/
Other TMs
第 3 代 C2000 MCU 具有以多个扇区形式排列的不同闪存存储器配置。遗憾的是,片上闪存存储器所使用的技术不允许在芯片上添加传统的 EEPROM。因此,一些设计人员使用外部 EEPROM 器件来提供此类非易失性存储。好消息是闪存存储器是一种特定类型的 EEPROM,所有第 3 代 C2000 MCU 都具有闪存存储器的在线编程功能。本应用报告将采用此功能,通过在闪存存储器内仿真 EEPROM 功能,将片上闪存的扇区用作 EEPROM。请注意,至少一个完整的闪存扇区会作为仿真型 EEPROM;因此,该扇区不可用于存储应用程序代码。
EEPROM 具有各种不同的容量,并通过串行接口(有时为并行接口)与主机微控制器连接。由于引脚/布线数量超少,串行内部集成电路 (I2C) 和串行外设接口 (SPI) 颇受欢迎。EEPROM 可以进行电编程和擦除,并且大多数串行 EEPROM 支持逐字节编程或擦除操作。
EEPROM 与闪存操作的主要区别就在于擦除操作。EEPROM 不需要扇区擦除操作。用户可以擦除需要指定时间的特定字节。然而,闪存中擦除操作的最小单位是一个扇区。
闪存擦除/写入周期是通过对各个存储单元施加时控电压来执行的。在擦除情况下,每个存储单元(位)读取逻辑 1。因此,被擦除时,C2000 实时控制器的每个闪存位置读取 0xFFFF。通过编程,存储单元可以更改为逻辑 0。任何字都可以被覆盖,将一个位从逻辑 1 更改为 0(假设相应的 ECC 尚未编程);但无法执行相反的操作。第 3 代 C2000 MCU 器件的片上闪存需要使用 TI 提供的特定算法(闪存 API)来执行擦除和写入操作。
本文档中所述的实现支持单存储单元和乒乓 EEPROM 仿真。单存储单元和乒乓实现均支持两种模式:页编程模式和 64 位编程模式。首先介绍乒乓仿真,然后介绍单存储单元仿真。
该实现支持多个用户可配置的 EEPROM 变量。节 5.1详细介绍了这些变量。
在该实现中,仿真 EEPROM 至少包含一个闪存扇区。由于闪存的块擦除要求,必须为 EEPROM 仿真保留一个完整的闪存扇区。根据 C2000 器件型号,闪存扇区的大小会有所不同。闪存扇区的区域被分为许多较小的部分,称为页面。例如,一个 2K x 16 的闪存扇区可以分成 32 个页面,每个页面大小为 64 x 16。
要保存的数据会首先写入 RAM 中的缓冲区。然后,借助第 3 代 C2000 MCU 的电路内编程功能,数据会被写入选择用于 EEPROM 仿真的扇区的第一个页面。下次将数据写入闪存时,数据将被写入下一个页面。该过程会一直持续,直到所选扇区的最后一个页面被写入数据为止。到达最后一个页面后,有两种方法可以继续。如果使用单存储单元 EEPROM 仿真,请参阅单存储单元仿真行为以了解如何处理。如果使用乒乓 EEPROM 仿真,请参阅乒乓方法以了解如何处理。
除上述描述的页面编程概念之外,还支持 64 位编程。在此模式下,扇区不会被分成 EEPROM 组和页面。节 5.2.10和节 5.2.11将进一步讨论 64 位编程。
如果使用单存储单元 EEPROM 仿真,图 3-1 展示了实现的行为。
如果 EEPROM 单元已满并且还有更多数据要写入,则擦除 EEPROM 单元并将新数据编程到闪存中。可以根据需要重复该过程。