概述
E2PROM 是一个非易失性存储器,它主要是用于存放相关的小量数据,例如,存放设置数据。
用户可以直接通过地址和数据寄存器来访问 E PROM,因此,CPU 不可以从 E2PROM 存储器中执行代码
特性
4KB E2PROM
在 AHB 总线上通过地址和数据寄存器进行访问
少于 3ms 的擦除/编程时间;
寿命大于 100k 个擦除/编程周期
操作
寄存器描述
E2PROM 命令寄存器(EECMD - 0x0020 0080)
E2PROM 命令寄存器用于选择和启动读、写或擦除/编程操作。读和擦除/编程操作在
E2PROM 器件上启动,是写此寄存器而发生的操作(写操作的启动则是对写数据寄存器执行写
操作而发生的操作)
E2PROM 地址寄存器(EEADDR - 0x0020 0084)
E2PROM 地址寄存器用于编程读、写或擦除/编程操作的地址。地址域的宽度由配置参数所选定的 E2PROM 器件个数决定
E2PROM 写数据寄存器(EEWDATA - 0x0020 0088)
E2PROM 写数据寄存器用于把数据写入页寄存器(写操作),该寄存器位描述见表 5.4 所列。
写这个寄存器将会启动写操作。地址是向后递增的,因此连续写此寄存器将会写入一串数
据。地址将会根据写操作的数据大小而自动递增。
如果上一个操作(同一个器件上的读、写或擦除/编程操作)仍处于挂起状态时把数据写入
这个寄存器,那么用户可以令就绪信号无效而暂停 AHB 总线上的写命令,直至上一个操作完
成。为了避免暂停系统总线,可使用中断状态寄存器来轮询挂起操作的状态。
E2PROM 读数据寄存器(EERDATA - 0x0020 008C)
E2PROM 读数据寄存器用于读取存储器中的数据
读取此寄存器将会启动下一个读取操作。地址将会向后递增。连接读取此寄存器将会读出
一串数据。地址将会根据读操作的数据大小而自动递增。
如果读操作仍处于挂起状态时从这个寄存器读出数据,那么用户可以令就绪信号无效而暂
停 AHB 总线上的读命令,直至挂起操作完成。为了避免暂停系统总线,可使用中断状态寄存
器来轮询挂起操作的状态
E2PROM 等待状态寄存器(EEWSTATE - 0x0020 0090)
E2PROM 时钟分频器寄存器(EECLKDIV - 0x0020 0094)
E2PROM 器件要求使用 375KHz 时钟。此时钟由系统总线时钟分频而得到。时钟分频器寄存器包含分频因子
如果分频因子为 0,则时钟将会空闲,从而可节省功率
regVal = ( SystemCoreClock / 375000 ) - 1;
LPC_EEPROM->CLKDIV = regVal;
E2PROM 掉电寄存器(EEPWRDWN - 0x0020 0098)
E2PROM 器件操作
访问存储器有三种操作方式:读、写和擦除/编程操作
64 字节页寄存器的大小与 E 2 PROM 存储器的大小相同。4KB 的 E 2 PROM 包含有 64 页
E2PROM 器件不能直接编程
往其写入数据和实际擦除/编程存储器是二个独立的步骤
{第一个操作(在此文档中将会被称为“写”)实际上并不会更新存储器,
只会更新被称为“页寄存器”的临时数据寄存器。用户要先写页寄存器(写入页寄存器的最小
字节数为 1 个字节,最大字节数为 8 个字节),然后才可以执行第二个操作(在此文档中将会被
称为“擦除/编程”)来实际更新非易失性存储器。注意,写入页寄存器的数据不是“高速缓存
的”,在其被实际编写到非易失性存储器之前,用户不能将其读出。}
E2PROM 控制器支持 8 位、16 位或 32 位元素的写操作。由于 E2PROM 器件不支持 32 位操作,所以控制器会把操作分成二个 16 位操作
软件必须要确保遵从了下列的规则
不允对于 64 字节页寄存器的其中一个位置进行覆写操作(擦除/编程操作之前对其执
行二次写操作),否则它将会令之前被写入的数据丢失(这是由 E 2 PROM 模块的属性
所决定的结果,请参考“E 2 PROM 规范”)
使用默认地址向后递增功能时,页寄存器的高边界不能跨越的
在读取刚被写入的数据之前,需要把页寄存器的内容编写到非易失性存储器中
对非对齐的地址执行写操作将会导致对写数据寄存器的写传输响应一个错误信号(例
如,对不是 0x4 倍数的地址执行 32 位写操作)。此操作不会被执行。
当执行完页寄存器的写操作时,必须要把数据编写到非易失性存储器中,如图 5.3 所示。这是一个独立的步骤,只写页寄存器将不会写E 2 PROM 存储器。把页寄存器中的数据编写到存储
器要占用较长的时间,因此,相应的中断可以被使能或中断状态位可以被查询,从而避免出现系统总线暂停。