PIC18F1330芯片数据EEPROM 存储器介绍:
数据EEPROM 在整个VDD 范围内正常运行时是可读写的。 该数据存储器并不直接映射到寄存器文件空间。 而是通过特殊功能寄存器(SFR)来间接寻址。有四个SFR 用于读写程序和数据EEPROM 存储器。这些寄存器是:
EECON1
EECON2
EEDATA
EEADR
EEPROM 数据存储器允许按字节读写。在对数据存储器模块操作时, EEDATA 内存放8 位读写数据,而EEADR 寄存器存放要访问的EEPROM 地址。这些器件具有128 字节的数据EEPROM,地址范围从00h 到FFh。
EEPROM 数据存储器耐擦写能力很强。字节的写操作将自动擦除相应单元并写入新值(即先擦后写)。 写入时间由片上定时器控制,它会随着电压、温度以及芯片的不同而变化。
1、EEADR 寄存器
EEPROM 地址寄存器可寻址256 字节的数据EEPROM。
2、EECON1 和EECON2 寄存器
EECON1 是存储器访问控制寄存器。
EECON2 不是物理寄存器。读取EECON2将得到全0。
EECON2 寄存器仅用于存储器的写和擦除过程。
控制位EEPGD 决定访问的是程序存储器还是数据EEPROM 存储器。 清零时,访问数据EEPROM 存储器;置1 时,则访问程序存储器。控制位CFGS决定访问的是配置寄存器还是程序存储器/ 数据EEPROM 存储器。 置1 时,后续操作会访问配置寄存器。 而当CFGS 清零时,则由EEPGD 位选择闪存程序存储器或数据EEPROM 存储器。
擦除和写入操作由WREN位使能和禁止。 该位置1 时,允许擦除和写入操作; 清零时,禁止擦除和写入操作。只要WREN 位清零,WR 位就无法置1。 这种机制有助于防止由于错误(意外)执行代码而误写存储器。除了开始擦除或写入操作外,固件必须始终保持WREN位清零。 一旦固件已经将WR 位置1,WREN 位就可以被清零。 将WREN 位清零不会影响进行中的操作。
当写操作由于复位中断时,WRERR 位会置1。 在这种情况下,用户可以检查WRERR 位,并重写相应的单元。由于复位已使数据寄存器和地址寄存器(EEDATA和EEADR)清零,因此必须对它们进行重载。控制位RD 和WR 分别启动读和擦/ 写操作。 这些位由固件置1,并在操作完成时由硬件清零。当访问程序存储器(EEPGD = 1)时,RD 位无法置1。程序存储器是通过表读指令读取的。
3、读数据EEPROM 存储器
要读取数据存储器单元,用户必须将地址写入EEADR寄存器,清零EEPGD 控制位(EECON1<7>)然后将控制位RD (EECON1<0>)置1。由于该数据在下一个指令周期才可用;因此,EEDATA 寄存器可由下一条指令读取。EEDATA 将保持这个值直到另一次读操作开始,或直到它被用户写入(在写操作过程中)。
4、写数据EEPROM 存储器
要写EEPROM 数据单元,必须首先将地址写入EEADR寄存器并将数据写入EEDATA 寄存器。必须遵循例7-2中的执行序列才能开始写周期。
如果未完全按照以上序列(将55h 写入EECON2,将0AAh 写入EECON2,然后将WR位置1)逐字节写入,写操作将不会开始。在执行该代码段时,强烈建议禁止中断。
此外,EECON1 中的WREN 位也必须被置1 以使能写操作。这种机制可防止由于意外执行代码(即程序跑飞)造成对数据EEPROM 的误写入。除了在更新EEPROM 时,否则WREN 位应该一直保持清零状态。WREN 位不能由硬件清零。
写序列开始以后,就不能修改EECON1、EEADR 和EDATA 了。除非WREN 位置1,否则将不允许WR 位置1。WREN位必须在前面的指令中置1,WR和WREN位不能由同一指令置1。
写周期完成后, WR 位将由硬件清零,同时EEPROM中断标志位(EEIF)被置1。用户可以允许该中断或对WR 位进行查询。EEIF 必须由软件清零。