历史上的今天
返回首页

历史上的今天

今天是:2024年11月01日(星期五)

正在发生

2021年11月01日 | ATmega128 EEPROM数据存储器

2021-11-01 来源:eefocus

EEPROM 数据存储器

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

具体的SPI 和JTAG 下载EEPROM 数据请分别参见P 267“ 存储器编程” 。



EEPROM 读/ 写访问

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

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

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

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



EEPROM 地址寄存器-EEARH 和EEARL

ATmega128 EEPROM 地址寄存器

• Bits 15..12 – Res: 保留
保留位,读操作返回值为零。在写数据时要写入0 以保证与未来产品的兼容。
• Bits 11..0 – EEAR11..0: EEPROM 地址
EEARH 和EEARL 指定了4K 字节的EEPROM 空间。EEPROM 的地址是线性的,从0 到4096。EEAR 的初始值没有定义。在访问EEPROM 之前必须为其赋予正确的数据。



EEPROM 数据寄存器- EEDR

ATmega128 EEPROM 数据寄存器

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



EEPROM 控制寄存器- EECR

ATmega128 EEPROM 控制寄存器

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

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

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

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

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

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

标定振荡器用于EEPROM 访问定时。Table 2 为CPU 访问EEPROM 的典型时间。ATmega128 EEPROM 编程时间
Note: 1. 使用的是1 MHz 的时钟。与熔丝位CKSEL 的设置无关。

下面的代码分别用汇编和C 函数说明如何实现EEPROM 的写操作。在此假设中断不会在 执行这些函数的过程当中发生。例子同时还假设软件没有引导程序。若引导程序存在,则 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 电平无法满足要求,则可以使用外部复位电路。若写操作过程当中发生了复位,写操作将终止。


推荐阅读

史海拾趣

ADMOS公司的发展小趣事

面对不断变化的市场需求和技术趋势,ADMOS公司始终保持着对创新的热情和追求。公司投入大量资源用于研发新的技术和产品,不断推出具有创新性和竞争力的产品。这些创新成果不仅提升了ADMOS在市场上的竞争力,也为公司的未来发展指明了方向。

Dawning Precision Co Ltd公司的发展小趣事

为了进一步提升产品的品质和可靠性,Dawning加强了品质管理体系的建设。公司引进了先进的生产设备和检测仪器,制定了严格的品质检测流程。同时,Dawning还定期对员工进行品质管理培训,提高员工的品质意识和操作技能。这些措施的实施,使得Dawning的产品在品质上得到了极大的提升,赢得了客户的信赖和好评。

强盛电子(AEC)公司的发展小趣事

面对国内市场的饱和,AEC决定实施国际化战略,拓展海外市场。公司首先在欧洲设立了研发中心,随后在北美和亚洲等地建立了销售网络和生产基地。通过不断优化产品结构和提升服务质量,AEC逐渐在国际市场上树立起了良好的品牌形象,成为一家具有全球影响力的电子企业。

GE Solid State公司的发展小趣事
在摄影过程中,摄影师可以使用可听的曝光表电路来辅助判断曝光量,特别是在光线条件复杂或无法直接观察取景器时。
DMEL Inc公司的发展小趣事

在市场竞争日益激烈的情况下,DMEL Inc意识到品牌建设的重要性。公司开始注重品牌形象的塑造和推广,通过广告宣传、公益活动等方式,提升品牌的知名度和美誉度。同时,DMEL Inc还加强了与消费者的沟通和互动,了解消费者的需求和反馈,不断改进产品和服务。这些努力使得DMEL Inc在消费者心中树立了良好的品牌形象。

Abbotec Incorporated公司的发展小趣事

在追求经济效益的同时,Abbotec也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,Abbotec还积极参与社会公益活动,为社会的发展做出贡献。

这五个故事都是基于电子行业发展的常见模式而虚构的,旨在展示一个电子企业可能经历的发展过程。请注意,这些故事并非针对任何真实存在的企业,也不涉及任何具体的褒贬评价。

问答坊 | AI 解惑

sopc软件编程

一个基于sopc的实例,希望对大家有帮助…

查看全部问答>

高分求助!MotoQ9h 刷机问题!

需求:MotoQ9h手机刷Windows Mobile 6.5 操作系统(.nb0文件),通过USB把手机模拟成网卡,获得独立IP,然后通过与PC机桥接成功后,利用platform 刷机 问题: PC机是Windows XP SP3在微软的fareast域内,但同时也加入到了Test OU network PC机 ...…

查看全部问答>

请教

请教调试这个程序的时候 每次到延时子程序Delay的for(k=0;k…

查看全部问答>

WinCE下如何开发HP打印机的驱动程序

HP打印机并没有提供WinCE下的驱动程序 如何自己开发呢? 有什么开发包可以用吗? 新手,刚刚接触嵌入式不久…

查看全部问答>

初学者理解中断控制串口通讯及例程

相信这方面的理解困惑初学者很久了吧,给点意见!还是想高清中断控制串口通讯。。。接收中断控制串口通讯比如在串口调试软件上面发送一数据,stm32接受后产生中断,进而给该软件回复显示刚所接收到的数据!!这个过程是接收中断控制串口通讯对吧。 ...…

查看全部问答>

实验4.1:usb_dev_serial程序示例?

一.实验目的 学习使用串口和USB 相互通信的方法 二.实验设备 计算机(window xp 系统) LM3S9B96 实验评估板 USB A 型公口转 Mini B 型5Pin 数据线2 条(即电脑连接MP3 等设备的数据线) 5VDC 电源 三.实验原理 本例程中评估板实际是充 ...…

查看全部问答>

关于Arduino 蓝牙串口

各位大侠 有谁用过Arduino 蓝牙串口? 本人想用 STM32F4 接蓝牙串口CP2012来传送数据。 原本已经可以用USART进行传送, 请问串口程序是否需要更改? [ 本帖最后由 lis 于 2013-2-22 02:54 编辑 ]…

查看全部问答>

LCD AND TOUCH BOOSTERPACK进展(近照)

谢谢坛友们的支持,大家都很关心LCD AND TOUCH BOOSTERPACK的进度。 今天是周末,赶紧拍了照片传上来,这是我焊接出来的第一个BOOSTERPACK的照片,就是在下面这个帖子中的那个: LCD AND TOUCH BOOSTERPACK成功点亮(更新)https://bbs.eeworld.c ...…

查看全部问答>

三星四核Cortex A9 Exynos 4412公开资料下载(无需签署NDA)

三星四核Cortex A9 Exynos 4412公开资料下载(无需签署NDA),这是公开部分,不是完整版,下载之前请慎重,三星网站应该可以下到这个。 [ 本帖最后由 gooogleman 于 2013-10-26 23:35 编辑 ]…

查看全部问答>