ATmega8 EEPROM数据存储器

发布者:advancement3最新更新时间:2021-10-26 来源: eefocus关键字:ATmega8  EEPROM  数据存储器 手机看文章 扫描二维码
随时随地手机看文章
EEPROM 数据存储器

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

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



EEPROM 读/ 写访问

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

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

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

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



EEPROM 地址寄存器- EEARH和EEARL

ATmega8 EEPROM 地址寄存器

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



EEPROM 数据寄存器- EEDR

ATmega8 EEPROM 数据寄存器

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



EEPROM 控制寄存器- EECR

ATmega8 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) 可省略。请参见P 196“ 支持引导装入程序 -在写的同时可以读(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 1 为CPU访问EEPROM的典型时间。ATmega8 EEPROM 编程时间

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

汇编代码例程EEPROM_write:; 等待上一次写操作结束sbic EECR,EEWErjmp EEPROM_write; 设置地址寄存器 (r18:r17)out EEARH, r18out EEARL, r17; 将数据写入数据寄存器(r16)out EEDR,r16; 置位EEMWEsbi EECR,EEMWE; 置位EEWE 以启动写操作sbi EECR,EEWEretC 代码例程void EEPROM_write(unsigned int uiAddress, unsigned char ucData){/* 等待上一次写操作结束 */while(EECR & (1<下面的例子说明如何用汇编和C 函数来读取EEPROM,在此假设中断不会在执行这些函数的过程当中发生。

汇编代码例程EEPROM_read:; 等待上一次写操作结束sbic EECR,EEWErjmp EEPROM_read; 设置地址寄存器 (r18:r17)out EEARH, r18out EEARL, r17; 设置EERE 以启动读操作sbi EECR,EERE; 自数据寄存器读取数据in r16,EEDRretC 代码例程unsigned char EEPROM_read(unsigned int uiAddress){/* 等待上一次写操作结束 */while(EECR & (1<


在掉电休眠模式下的EEPROM写操作

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



防止EEPROM 数据丢失

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

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

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


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

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

推荐阅读最新更新时间:2024-11-08 18:04

msp430 EEPROM调试记录
总结一下出现的问题 1、使用1Mhz频率,并通过修改分频系数将主机频率降至100Khz左右,项目需要,将频率改成16Mhz,发现数据写入不成功,分频系数没有错误,判断应该是没有那么大的分频可以分(这个还未确定),通过选择ACLK,并在基础时钟上设置分频,分到最低2Mhz,再在usci_i2c中设置分频系数,就可以了 2、读写数据不一致 万思不得其解,写入一段数据,发现有些地址写进去,竟然只有几个字节有效,其他数据读出来均为0xff,也就是写未成功。这个是因为我的EEPROM如果使用页写入的话,是支持64字节的写入,这样,假如写入地址为0x30,后续只能写入16个字节,如果同时写入超过16个字节,数据只有部分写入。
[单片机]
汽车电子市场兴起,EEPROM有望再次走红
说到存储器,很多人会想到DRAM、NAND或NORFlash,但实际上还有一种经典的EEPROM存储器。EEPROM是一种掉电后数据不丢失的存储芯片,由于耐擦写次数高,功耗低,主要用于存储小规模、经常需要修改的数据,例如,在液晶面板内存储参数和配置文件,在蓝牙模块内存储控制参数等,广泛应用在消费电子、计算机及周边、工业控制、白色家电、通信等传统领域。 随着智能手机与汽车电子市场的兴起,EEPROM再一次寻得用武之地,凭借高可靠性、百万次擦写、低成本等优势,EEPROM迅速占据手机摄像头市场,并向汽车电子的广阔应用领域进军。 汽车电子大升级引爆需求 汽车行业正发生着颠覆性
[嵌入式]
汽车电子市场兴起,<font color='red'>EEPROM</font>有望再次走红
Microchip最新的单线串行EEPROM支持远端识别
Microchip Technology Inc.(美国微芯科技公司)日前宣布推出具有2.7V至4.5V工作电压范围的单线双引脚电可擦除可编程只读存储器(EEPROM)芯片。AT21CS11非常适合用于识别和认证管壳或者电缆等电子元件空间受限的远端装置。 每片AT21CS11包含一个预编程的唯一序列号和五个EEPROM存储区。任意或者全部存储区都可以由终端设备制造商永久锁定,以便跟踪产品和识别附件,以协助进行防伪。EEPROM对于那些需要对产品进行质保或者防止假冒产品的客户来说是理想的选择,支持通过授权的替代品保证其系统持续运行。 AT21CS11是Microchip的第二代单线EEPROM芯片。新器件的工作电压扩展到了
[半导体设计/制造]
Microchip最新的单线串行<font color='red'>EEPROM</font>支持远端识别
AVR的EEPROM实验
系统功能 对AVR内部的EEPROM写入数据,再读出EEPROM的数据,用LED进行指示,观察读出的数据与写入的数据是否一致。 硬件设计 AVR主控电路原理图 LED控制电路原理图 软件设计 //目标系统:基于AVR单片机 //应用软件: ICC AVR /*01010101010101010101010101010101010101010101010101010101010101010101 ---------------------------------------------------------------------- 实验内容: 写入一些测试数据进EEPROM,再读出,
[单片机]
AVR的<font color='red'>EEPROM</font>实验
STM32F10x_模拟I2C读写EEPROM
Ⅰ、写在前面 说到IIC,大家都应该不会陌生,我们初学单片机的时候或多或少都知道或了解过,甚至使用I2C控制过器件。但是,有多少人真正去深入理解,或者深入研究过I2C通信协议呢? 1、我们有必要学习I2C通信吗? I2C作为常见串行通信的其中一种,在嵌入式领域中占有很重要的地位。原因在于我们嵌入式开发的产品中有很多设备都是使用I2C进行通信的。我们开始学习单片机开发的时候最先接触的应该是使用I2C操作EEPROM(如AT24C08)通信,这也是典型的I2C通信例子。其实还有很多常见的I2C通信设备,如温度芯片、触摸芯片、时钟芯片等,当你工作今后或多或少都会遇到I2C通信的设备。所以,如果你有时间的话,请花一定时间去研究学习一下
[单片机]
STM32F10x_模拟I2C读写<font color='red'>EEPROM</font>
STM32学习笔记-Flash作为存储器储存数据
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据。 自己收集了一些资料,现将这些资料总结了一下,不想看的可以直接调到后面看怎么操作就可以了。 FLASH分类 根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程序,我们写的程序一般存储在这里。 信息块又分成两部分:系统存储器、选项字节。 系统存储器存储用于存放在系统存储器自举模式下的启动程序(BootLoader),当使用ISP方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入Boot
[单片机]
STM32入门学习笔记之EEPROM存储实验3
16.3.5 自身地址寄存器1:I2Cx_OAR1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ADDMODE - ADD ADD ADD0 Bit 15:寻址模式(从模式) 0:7位从地址(不响应10位地址) 1:10位从地址(不响应7位地址) Bit 9~Bit 8:接口地址 7位地址模式时不用关心 10位地址模式时为地址的9~8位 Bit 7Bit 1:接口地址,地址的71位 Bit 0:接口地址 7位地址模式时不用关心 10位地址模式时为地址第0位 16.3.6 自身地址寄存器2:I2Cx_OAR2 15 14 13 12 11 10
[单片机]
华虹NEC在0.18微米EEPROM平台上推出超低功耗IP
纯晶圆代工厂上海华虹NEC电子有限公司(以下简称“华虹NEC”)日前宣布,公司的0.18微米嵌入式EEPROM(电可擦除只读存储器)工艺平台上推出超低功耗EEPROM IP。 针对RFID、电子护照以及各种非接触式智能卡的需求,华虹NEC在0.18微米嵌入式EEPROM工艺平台上进一步推出超低功耗IP。该IP具有单元面积小,功耗低,速度快,可靠性强的优点,能满足产品在信息安全、低功耗、高速运作的要求。
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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