ATmega64 EEPROM数据存储器

发布者:悠闲自在最新更新时间:2021-11-12 来源: eefocus关键字:ATmega64  EEPROM  数据存储器 手机看文章 扫描二维码
随时随地手机看文章
EEPROM 数据存储器

ATmega64 包含2K 字节的 EEPROM 数据存储器。它是作为一个独立的数据空间而存在 的,可以按字节读写。EEPROM 的寿命至少为100,000 次擦除周期。EEPROM 的访问 由地址寄存器数据寄存器和控制寄存器决定。

P281“ 存储器编程” 包含使用SPI、JTAG 或并行编程模式对EEPROM 编程。



EEPROM 读/ 写访问

EEPROM 的访问寄存器位于I/O 空间。

EEPROM 的写访问时间由 Table 2 给出。自定时功能可以让用户软件监测何时可以开始 写下一字节。用户操作EEPROM 需要注意如下问题:在电源滤波时间常数比较大的电路 中,上电/ 下电时VCC 上升/ 下降速度会比较慢。此时CPU 可能工作于低于晶振所要求 的电源电压。请参见 P23 “ 防止EEPROM 数据丢失” 以避免出现EEPROM 数据丢失的 问题。

为了防止无意识的EEPROM 写操作,需要执行一个特定的写时序。具体参看EEPROM 控制寄存器的内容。

执行EEPROM 读操作时, CPU 会停止工作4 个周期,然后再执行后续指令;执行 EEPROM 写操作时, CPU 会停止工作2 个周期,然后再执行后续指令。



EEPROM 地址寄存器-EEARH 和EEARL

ATmega64 EEPROM 地址寄存器

• Bits 15..11 – Res: 保留
保留位,读操作返回值为零。
• Bits 10..0 – EEAR10..0: EEPROM 地址
EEPROM地址寄存器– EEARH和EEARL指定了2K 字节的EEPROM空间。EEPROM地址是线性的,从0 到2,048。EEAR 的初始值没有定义。在访问EEPROM 之前必须为其赋予正确的数据。



EEPROM 数据寄存器- EEDR

ATmega64 EEPROM 数据寄存器

• Bits 7..0 – EEDR7.0: EEPROM 数据
对于EEPROM 写操作, EEDR 是需要写到EEAR 单元的数据;对于读操作, EEDR 是从地址EEAR 读取的数据。



EEPROM 控制寄存器- EECR

ATmega64 EEPROM 控制寄存器

• Bits 7..4 – Res: 保留
保留位,读操作返回值为零。
• Bit 3 – EERIE: EEPROM 准备好中断使能
若SREG 的I 为"1",则置位EERIE 将使能EEPROM 准备好中断。清零EERIE 则禁止此中断。当EEWE 清零时EEPROM 准备好中断即可发生。
• Bit 2 – EEMWE: EEPROM 主机写使能
EEMWE决定了EEWE置位是否可以启动EEPROM写操作。当EEMWE为"1"时,在4个时钟周期内置位EEWE 将把数据写入EEPROM 的指定地址;若EEMWE 为"0“,则操作EEWE 不起作用。EEMWE 置位后4 个周期,硬件对其清零。见EEPROM 写过程中对EEWE 位的描述。
• Bit 1 – EEWE: EEPROM 写使能
EEWE 为EEPROM 写操作的使能信号。当EEPROM 数据和地址设置好之后,需置位EEWE以便将数据写入EEPROM。此时EEMWE必须置位,否则EEPROM写操作将不会发生。写时序如下( 第3 步和第4 步的次序并不重要):
1. 等待EEWE 位变为零
2. 等待SPMCSR 中的SPMEN 位变为零
3. 将新的EEPROM 地址写入EEAR( 可选)
4. 将新的EEPROM 数据写入EEDR( 可选)
5. 对EECR 寄存器的EEMWE 写"1",同时清零EEWE
6. 在置位EEMWE 的4 个周期内,置位EEWE

在CPU 写Flash 存储器的时候不能对EEPROM 进行编程。在启动EEPROM 写操作之 前软件必须检查 Flash 写操作是否已经完成。步骤(2) 仅在软件包含引导程序并允许CPU 对Flash 进行编程时才有用。如果CPU 永远都不会写Flash,步骤(2) 可省略。请参见 P268“支持引导装入程序 – 在写的同时可以读(RWW, Read-While-Write)的自我编程能力 ” 。

注意:如果在步骤5 和6 之间发生了中断,写操作将失败。因为此时EEPROM 写使能操 作将超时。如果一个操作EEPROM的中断打断了另一个EEPROM操作,EEAR 或EEDR 寄存器可能被修改,引起EEPROM 操作失败。建议此时关闭全局中断标志I。

经过写访问时间之后,EEWE 硬件清零。用户可以凭借这一位判断写时序是否已经完成。 EEWE 置位后, CPU 要停止两个时钟周期才会运行下一条指令。

• Bit 0 – EERE: EEPROM 读使能
EERE为EEPROM读操作的使能信号。当EEPROM地址设置好之后,需置位EERE以便将数据读入EEAR。EEPROM 数据的读取只需要一条指令,且无需等待。读取EEPROM后CPU 要停止4 个时钟周期才可以执行下一条指令。

用户在读取EEPROM 时应该检测EEWE。如果一个写操作正在进行,就无法读取 EEPROM,也无法改变寄存器EEAR。

经过校准的片内振荡器用于EEPROM定时。 Table 2为CPU访问EEPROM的典型时间。ATmega64 EEPROM 编程时间
Note: 1. 使用时钟频率为1 MHz,不倚赖CKSEL 熔丝位的设置。

下面的代码分别用汇编和C 函数说明如何实现EEPROM 的写操作。在此假设中断不会在 执行这些函数的过程当中发生。同时还假设软件没有Boot Loader。若Boot Loader 存在, 则EEPROM 写函数还需要等待正在运行的SPM 命令的结束。

汇编代码例程

EEPROM_write:

; 等待上一次写操作结束

sbic EECR,EEWE

rjmp EEPROM_write

; 设置地址寄存器 (r18:r17)

out EEARH, r18

out EEARL, r17

; 将数据写入数据寄存器(r16)

out EEDR,r16

; 置位EEMWE

sbi EECR,EEMWE

; 置位EEWE 以启动写操作

sbi EECR,EEWE

ret

C 代码例程

void EEPROM_write(unsigned int uiAddress, unsigned char ucData)

{

/* 等待上一次写操作结束 */

while(EECR & (1<;

/* 设置地址和数据寄存器*/

EEAR = uiAddress;

EEDR = ucData;

/* 置位EEMWE */

EECR |= (1</* 置位EEWE 以启动写操作*/

EECR |= (1<}

下面的例子说明如何用汇编和C 函数来读取EEPROM,在此假设中断不会在执行这些函 数的过程当中发生。


汇编代码例程

EEPROM_read:

; 等待上一次写操作结束

sbic EECR,EEWE

rjmp EEPROM_read

; 设置地址寄存器 (r18:r17)

out EEARH, r18

out EEARL, r17

; 设置EERE 以启动读操作

sbi EECR,EERE

; 自数据寄存器读取数据

in r16,EEDR

ret

C 代码例程

unsigned char EEPROM_read(unsigned int uiAddress)

{

/* 等待上一次写操作结束 */

while(EECR & (1<;

/* 设置地址寄存器*/

EEAR = uiAddress;

/* 设置EERE 以启动读操作*/

EECR |= (1</* 自数据寄存器返回数据 */

return EEDR;

}




掉电休眠模式下EEPROM 的写 入

若程序执行掉电指令时EEPROM 的写操作正在进行, EEPROM 的写操作将继续,并在 指定的写访问时间之前完成。但写操作结束后,振荡器还将继续运行,芯片并非处于完全 的掉电模式。因此在执行掉电指令之前应结束EEPROM 的写操作。



防止EEPROM 数据丢失

若电源电压过低,CPU 和EEPROM 有可能工作不正常,造成EEPROM 数据的毁坏( 丢 失)。这种情况在使用独立的EEPROM 器件时也会遇到。因而需要使用相同的保护方案。

由于电压过低造成EEPROM 数据损坏有两种可能:一是电压低于EEPROM 写操作所需 要的最低电压;二是CPU 本身已经无法正常工作。

EEPROM 数据损坏的问题可以通过以下方法解决: 
当电压过低时保持AVR RESET信号为低。这可以通过使能芯片的掉电检测电路BOD 来实现。如果BOD 电平无法满足要求则可以使用外部复位电路。若写操作过程当中 发生了复位,只要电压足够高,写操作仍将正常结束。


关键字:ATmega64  EEPROM  数据存储器 引用地址:ATmega64 EEPROM数据存储器

上一篇:ATmega64 I/O存储器
下一篇:ATmega64 SRAM数据存储器

推荐阅读最新更新时间:2024-11-09 20:57

STM32:I2C接口读写EEPROM(AT24C02)试验例程
硬件平台:stm32f10xZET6 开发环境:keil MDK uVisionv4.10 开发语言:C、ST_lib_3.5固件库 EEPROM:电可擦可编程只读存储器。 【stm32f10xZET6开发板的I2C外设物理层特点】 (1)两条串行总线:一条双向数据线(SDA),一条时钟线(SCL); (2)从设备地址唯一; (3)支持总线仲裁; (4)三种速率传输模式: 标准模式100kbit/s 快速模式400kbit/s 高速模式3.4Mbit/s (目前大多I2C设备尚不支持高速模式) (5)片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整; (6)连接到相同总线的IC数量受到总线的最大电容400p
[单片机]
STM8L 读写EEPROM(24LC64)
使用24LC64(24XX64)是低功耗应用的EEPROM,存储容量 8K byte(64K bit),IIC 最大时钟频率400 KHz(24FC64达到1MHz),低功耗CMOS技术:工作电流 1 mA(典型)、 待机电流 1 μ A(典型),32字节的页写缓冲器,超过100万擦/写周期,数据保存 200年。 24C02只有8字节的页写缓冲器,操作的地址只有8位,而24LC64操作的地址包含高8位和低8位。两者的数据手册去区别如下: 1、AT24C02页写时序: 2、24LC64页写时序: STM8L的程序设计如下: (1)数据的页写操作: (2)数据的连续读取:
[单片机]
STM8L 读写<font color='red'>EEPROM</font>(24LC64)
文件系统在EEPROM中的应用
引言 在嵌入式系统中,EEPROM凭借使用简单、性能可靠、价格低廉的特点而广泛应用于小量而又重要的数据存储领域。目前,嵌入式产品层出不穷,应用繁多,相应的EEPROM随之出现。其中,两线EEPROM因其引脚少、封装小得到广泛应用。本文主要针对两线EEPROM AT24C512来创建文件系统,当然也适用于其他同类产品。 1 AT24C512简介 AT24C512是 Atmel公司生产的串行电可擦的可编程存储器。它采用8引脚封装,具有可掉电记忆、结构紧凑、64 KB存储容量等特点,可以在2线总线上并接多片芯片,适用于具有较大容量重要数据存储要求的嵌入式系统。 1.1 封装及引脚介绍 图1 AT24C512引脚图 AT
[单片机]
文件系统在<font color='red'>EEPROM</font>中的应用
单片机存储器总结以及内存数据存储
存储器分类如下: 单片机变量存储如下:
[单片机]
ATmega64 指令执行时序
这一节介绍指令执行过程中的访问时序。AVR CPU 由系统时钟clkCPU 驱动。此时钟直接 来自选定的时钟源。芯片内部不对此时钟进行分频。 Figure 6 说明了由Harvard 结构决定的并行取指和指令执行,以及可以进行快速访问的寄 存器文件的概念。这是一个基本的流水线概念,性能高达1 MIPS/MHz,具有优良的性价 比、功能/ 时钟比、功能/ 功耗比。 Figure 7 演示的是寄存器文件内部访问时序。在一个时钟周期里,ALU 可以同时对两个寄 存器操作数进行操作,同时将结果保存到目的寄存器中去。
[单片机]
<font color='red'>ATmega64</font> 指令执行时序
介绍真正的Grade 0汽车EEPROM
在汽车行业,安全是最重要的,安全标准日趋严格。像曾经是额外的选择,或限于高端汽车市场的电子稳定控制系统和胎压监测系统等特性,已成为强制性的。 汽车集成电路(IC)提高可靠性和耐用性的要求。汽车空间是IC最苛刻的环境之一。有噪声,处于宽温度范围。即使在诸如温度差异不太大的转向等应用中,原始设备制造商(OEM)也在寻求具有AEC资质器件的可靠性和耐用性。 对于非易失性存储媒介如EEPROM,期望是双重的–它们将在苛刻的条件下正常工作,在系统关闭时它们将保留它们的数据。其他IC只在使用时处于压力中。当涉及到数据的保留,EEPROM总是处于使用中。 多年来,对EEPROM的标准的汽车评级是AECQ-100 Grade 1,温度
[汽车电子]
介绍真正的Grade 0汽车<font color='red'>EEPROM</font>
u-boot-2009.08在mini2440上的移植 增加I2C EEPROM功能
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,参考文章: 10.1,实现u-boot的I2C EEPROM功能 mini2440开发板上的AT24C08A芯片提供了8kbyte的非易失的EEPROM存储空间,而且是通过I2C协议进行读写的,U-boot提供了对I2C和EEPROM的操作支持。 打开/include
[单片机]
单片机的“灵魂”—数据存储器的使用
我们可以说程序存储器的里面存放的是单片机的灵魂,它就是工作程序。小的可能只有1KB(最多只能装1024条8位数据,因为实际指令还有许多2字节、3字节指令,所以它还装不下1024条指令)大的也有128KB的。这些8位数据要么在工厂里做摸子光刻进去,要么一次性的烧写进去,要么 用编程器这个特殊工具把调试成功的机器码装载进去,或者像AVR单片机那样自己花几块钱做一条下载线,把电脑里这些东西灌进去(或许是AVR最吸引人之处),它一旦进驻电脑的程序存储器中,除了借助上述装置便不能自由改写,在单片机运行时,只是从其中读出指令或固定的数据,所以给程序存储器一个 只读存储器 的别名,简写为ROM,包括用编程器写紫外线擦除内容的EPROM.用电擦除
[电源管理]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved