历史上的今天
返回首页

历史上的今天

今天是:2024年11月12日(星期二)

正在发生

2021年11月12日 | ATmega64 EEPROM数据存储器

2021-11-12 来源:eefocus

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 电平无法满足要求则可以使用外部复位电路。若写操作过程当中 发生了复位,只要电压足够高,写操作仍将正常结束。


推荐阅读

史海拾趣

Dynawave Incorporated公司的发展小趣事

Dynawave Incorporated的创始人李明,是一位在电子行业有着丰富经验的工程师。他深知随着科技的发展,无线通信技术将成为未来发展的重要方向。因此,李明带领一支技术团队,夜以继日地研发新型无线通信技术。经过数月的努力,他们成功开发出了一种具有高效能、低能耗特点的无线传输技术,这一技术为Dynawave在行业中赢得了初步声誉。

GarrettCom公司的发展小趣事

并购:2011年,全球领先的信号传输解决方案提供商Belden成功收购了GarrettCom。这一并购标志着GarrettCom正式成为Belden大家庭的一员,也为其带来了更广阔的发展空间和资源支持。

融合:加入Belden后,GarrettCom继续发挥其在工业通信领域的专长,并与Belden的其他业务线形成协同效应。双方共同为客户提供更全面的信号传输和通信解决方案,进一步提升了市场竞争力。

Hexawave公司的发展小趣事

并购:2011年,全球领先的信号传输解决方案提供商Belden成功收购了GarrettCom。这一并购标志着GarrettCom正式成为Belden大家庭的一员,也为其带来了更广阔的发展空间和资源支持。

融合:加入Belden后,GarrettCom继续发挥其在工业通信领域的专长,并与Belden的其他业务线形成协同效应。双方共同为客户提供更全面的信号传输和通信解决方案,进一步提升了市场竞争力。

Henkel公司的发展小趣事

转折:2006年,GarrettCom迎来了一个重要的转折点——收购变电站网络产品领导者DYMEC公司。这一收购不仅增强了GarrettCom在变电站自动化领域的实力,还为其带来了更多的技术资源和市场份额。

影响:通过整合DYMEC的技术和产品,GarrettCom进一步巩固了其在变电站网络通信技术方面的领先地位。公司的产品和解决方案被广泛应用于全球各地的变电站项目中,为电力系统的稳定运行提供了坚实的通信保障。

General Instrument公司的发展小趣事
合理规划用电设备,避免负载突变或不平衡导致的电压波动。
DL Instruments LLC公司的发展小趣事

随着产品的不断推出和市场的逐步认可,DL Instruments开始积极拓展其市场份额。公司不仅在美国本土市场取得了良好的业绩,还逐渐将产品推向国际市场。通过多年的努力,DL Instruments在电子行业中建立了良好的品牌形象,成为精密仪器制造领域的佼佼者。

问答坊 | AI 解惑

lcd12864的GCC、ICC源代码

今天终于可以上网了(无线的)发帖庆祝一下 上星期用了半天的时间重新编写了以前的LCD12864液晶屏的驱动程序 又把PCF8563移植成功 用MEGA16驱动 做了一个简单的时钟 在ICC 环境下 以下是源代码 又把LCD12864移植到 GCC 成功了 下面 ...…

查看全部问答>

Fsk/OOK RF芯片:IA无线产品介绍

IAI 产品(芯片) 1. IA 4220 / 4221 / 4222 无线发射芯片 TSOP16 2. IA 4320/ 4322 无线接收芯片 TSOP16 3. IA 4420 / 4421 无线收发芯片 TSOP16 外围器件很少,只要两三颗小电容和一个10M Cystal, 对其精度无特殊要求,总成本低 (具备自动频 ...…

查看全部问答>

dsp的精品课件!

pdf版本的,主要以2407的板子为主,考虑到28X的都可以兼容,一个系列的,可以兼容! https://bbs.eeworld.com.cn/thread-77140-1-2.html 更多的好东西都在这个里面藏着呢! O(∩_∩)O哈哈哈~…

查看全部问答>

请各位帮忙一下我这个原理图,谢谢

老师要我们用单片机制作一个电子时钟,主要器件有AT89C51 、AT24C02、DS1B20、LCD1602、蜂鸣器、三极管等等 主要实现的功能有|: 1、时间设定(LCD1602实现时、分、秒,24小时显示),按照时间更新 2、可用3-4个按键调节时、分、秒 3、能多段闹 ...…

查看全部问答>

51汇编伪指令一共有多少?

哪位大侠能提供下其全集? 我在ASM-51宏汇编使用手册中看到下面的东东,它们是伪指令还是ASM-51宏汇编所特有的某种东东?为什么我没见到有人用过(比如可以代替“EQU”的“=”不是很方便么,怎么大家都用EQU呢)?   运  算& ...…

查看全部问答>

电子表定时

上传附件为用iccavr写的m16+1302+1602(四线)的电子表工程.已通过测试.现在想插入一个定时功能,如:到2008年3月8日12时14分10秒时从PA2口输出高电平.延时10秒后转低电平.请帮改改,改的地方请用红色标注一下,谢谢.…

查看全部问答>

工程师——中国最可悲的职业(转载)

工程师=扫地的×2。这个等号划起来比较沉重。常来逛网的兄弟姐妹多半是比老夫小的年轻人,按说老夫不该写这篇文章,老夫也本不想写这篇文章来扫兴,但老夫最终还是写了这篇文章,为什么?郁闷呐,不吐不快呀,前车之鉴呀。 文章这东西是表达思想的 ...…

查看全部问答>

usb转串口

usb转串口多少钱啊一个啊  usb转串口是否支持伟福仿真器  伟福仿真器是用串口的…

查看全部问答>

SMT中的焊膏印刷实用技术

  一、焊膏的成份和特性  焊膏主要有金属粉末、助焊剂、溶剂和胶凝剂或悬浮剂等均匀混合组成。根据用途的不同,金属粉末通常由锡、铅、铟、银、金等两种或两种以上金属组成的混合物,金属粉末的细度通常在25~75微米之间。金属粉末是焊膏中的主 ...…

查看全部问答>

pic32的价格也不错

32位mcu,除了cortex m3,pic32的价格也不错啊.PIC32MX320F032H 官方千片价格23元主频 40MHz性能 1.56 DMIPS/MHz32k flash8k ram16*10bit adc5个16位,1个32位定时器5捕获,5 pwm2 -UART2  ...…

查看全部问答>