1. XMC1000使用Flash模拟EEPROM
实现原理:
一般用两个一样的sector可以实现模拟EEPROM。1 sector = 1 bank。每个bank的第一页来表示这个bank的状态,例如是否有效,是否有数据/已擦除,是否是数据copy,是否格式化过。每个数据块都是按照数据块来存放,如下图所示,这个数据块的大小可以在DAVE APP的GUI中来配置。
2. XMC4000使用Flash模拟EEPROM
实现原理:
XMC4000的模拟EEPROM算法和XMC1000的模拟EEPROM算法有所不同,XMC4000的最小擦除单位是一个sector,最小写入单位是1页(256字节),使用PS4的4个16KB的logical sector进行模拟EEPROM,为了使用这4个sector擦写均衡,数据在这4个sector中轮换放置。
为了提高Flash利用率,XMC4000的模拟EEPROM只能使用一个块,这个块的大小可以在DAVE APP的GUI中配置。举个例子,如果现在定义了一个1000字节大小的EEPROM,那么需要用到4页(4*256 = 1024 > 1000)。对于1000字节大小的EEPROM,每次写EEPROM,都是依次写4页,数据区域的Write Count代表当前数据的更改次数,数字越大说明数据越新。
PS4这个物理sector擦写次数可达1000次,考虑模拟一块2040字节的EEPROM(2048-8),数据是轮流放置的,因此EEPROM数据的修改次数可达320000次。
3. 相关例程
6_3_XMC1000_EEPROM_APP.zip 是 Flash 模拟 EEPROM 的例程,实现的功能是:
- 在 1 个数据块中存放了芯片上电次数和系统时间
- 每次上电都会把上电次数存到 EEPROM 中,上电次数由 P0.0 所接 LED 表示
- 系统时间每一秒都会当前时间存放到 EEPROM 里面,系统时间由 P0.6 所接的 LED 表示
6_6_XMC4000_EEPROM.zip 为 Flash 模拟 EEPROM 例程,在 EEPROM 初始化后,第一次会写入一些初始数据,接着 EEPROM 中某个字节代表上电次数,每次上电增加上电一次次数,上电次数由 P5.8 连接着 LED 表示。可以在 GUI 中修改 EEPROM 的大小。
|