历史上的今天
返回首页

历史上的今天

今天是:2025年07月01日(星期二)

正在发生

2020年07月01日 | ATtiny2313 EEPROM数据存储器

2020-07-01 来源:eefocus

ATtiny2313包含128字节的EEPROM数据存储器。它是作为一个独立的数据 可以按字节读写。EEPROM的寿命至少为 100,000 次擦除周期。EEPROM 的访问由地 址寄存器、数据寄存器和控制寄存器决定。详见 EEPROM的串行数据下载。

EEPROM 读/ 写访问

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

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

为了防止无意识的 EEPROM 写操作,需要执行一个特定的写时序。详见关于 EEPROM
控制寄存器的说明。

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

EEPROM 地址寄存器-EEAR

ATtiny2313 EEAR 地址寄存器

· Bits 7– Res: 保留
保留位,读操作返回值为零。

· Bits 6..0 – EEAR6..0: EEPROM 地址
EEPROM地址寄存器EEARL指定了128字节的EEPROM EEPROM地址是线性的, 从 0 到 127。EEAR 的初始值没有定义。在访问 EEPROM 之前必须为其赋予正确的数据。

EEPROM 数据寄存器 - EEDR

ATtiny2313 EEDR 数据存储器

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

EEPROM 控制寄存器- EECR

ATtiny2313 EECR 控制存储器

· Bits 7..6 – Res: 保留
保留位,读操作返回值为零。

· Bit 5,4 – EEPM1与 EEPM0: EEPROM编程模式位
设置编程模式位定义当对EEPE写入时触发哪种编程方式。可能在一个时钟周期中数据编 程 (擦除旧值写入新值) 或将擦除与写操作分为两步。不同模式的编程时间见 Table 1。当 EEPE 置位,对 EEPMn 的写操作将忽略。复位时,除非 EEPROM 处于编程状态,否则 EEPMn 位将复位为 0b00。

ATtiny2313 EEPROM 模式位


· Bit 3 – EERIE: EEPROM 准备好中断使能
若 SREG 的 I 为 "1",则置位 EERIE 将使能 EEPROM 准备好中断。清零 EERIE 则禁止 此中断。当 EEWE清零时 EEPROM 准备好中断即可发生。

· Bit 2 – EEMPE: EEPROM 主机编程使能
EEMPE 位决定 EEPE 写入 "1” 是否有效。当 EEMPE为 "1" 时,在四个时钟周期内设置 EEPE 将会在 EEPROM 指定的位置编程;若 EEMPE为 "0“,设置 EEPE 无效。当 EEMPE 由软件写入 "1”,则在四个时钟周期后由硬件清零。 

· Bit 1 – EEPE: EEPROM 编程使能
EEPE 为 EEPROM 的编程使能信号。当 EEPE 为 "1",通过 EEPMn 位的设置,将会对 EEPROM编程。在EEPE写入逻辑"1"前,EEMPE位必须写入"1",否则不会出现EEPROM 写操作。当写访问时间结束,EEPE 位由硬件清零。当 EEPE 置位, CPU 在执行指令前 终止两个时钟周期。

· Bit 0 – EERE: EEPROM读使能
EERE为EEPROM读操作的使能信号。当EEPROM地址设置好之后,需置位EERE以便将 数据读入 EEARL。EEPROM 数据的读取只需要一条指令,且无需等待。读取 EEPROM 后 CPU 要停止 4 个时钟周期才可以执行下一条指令。用户在读取 EEPROM 时应该检测 EEPE。如果一个写操作正在进行,就无法读取 EEPROM,也无法改变寄存器 EEAR。

基本字节编程

使用基本字节编程是最简单的模式。当对 EEPROM 写入一个字节,用户必须将地址写入 EEARL寄存器,将数据写入EEDR寄存器。若EEPMn位为零,对 EEPE的写操作 (在对 EEMPE写完后的四个时钟周期内)将触发擦除/写入操作。擦除与写入操作在一个时钟周 期内完成,整个编程时间见 Table 1。 EEPE 位会保持置位,直到擦除与写入操作完成。 而当芯片处于编程状态时,不会进行其他 EEPROM操作。

分离字节编程

可以将擦除与写入操作分为两个周期。若系统需要对一些有限的时间缩短访问时间 ( 尤其 若电源电压下降 ) 该方式有效。使用该方式时,必须在写入操作前先进行擦除操作。但由 于擦除与写入操作是分离的,有可能当系统允许进行时间临界操作时 ( 尤其在掉电后 ) 进行擦除操作。

擦除

擦除一个字节,地址必须写入EEARL。若EEPMn为0b01,对EEPE写入 (在对EEMPE 写完后的四个时钟周期内 ) 将只触发擦除操作 ( 编程时间见 Table 1)。EEPE 位会保持到 擦除操作完成。而当芯片处于编程状态时,不会进行其他 EEPROM操作。

写入

写入时,用户必须将地址写入EEAR,将数据写入EEDR。若 EEPMn为0b10,对EEPE 写入 (在对EEMPE写完后的四个时钟周期内)将只触发写入操作(编程时间见Table 1)。 EEPE 位会保持到擦除操作完成。若在写入前数据没有擦除,则认为写入数据丢失。当ATtiny2313处于编程状态时,不会进行其他 EEPROM操作。
EEPROM访问使用标定振荡器定时。振荡器频率见P25“振荡器标定寄存器 – OSCCAL”。

下面ATtiny2313的代码分别用汇编和 C 函数说明如何实现 EEPROM 的擦除、写入或基本写入。在此假设中断不会在执行这些函数的过程当中发生。

汇编代码例程
EEPROM_write:
; 等待上一次写操作结束
sbic EECR,EEPE
rjmp EEPROM_write
; 设置编程模式
ldi r16, (0 << EEPM1)|(0 << EEPM0)
out EECR, r16 
; 设置地址寄存器 r17
out EEARL, r17
; 将数据写入数据寄存器 (r16)
out EEDR,r16
; 置位 EEMWE
sbi EECR,EEMWE
; 置位 EEWE以启动写操作
sbi EECR,EEWE
ret

C 代码例程
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{
/* 等待上一次写操作结束 */
while(EECR & (1 << EEPE ))
;
/* 设置编程模式 */
EECR = (0 << EEPM1 )|(0 >> EEPM0 )
/* 设置地址与数据寄存器 */
EEARL = ucAddress;
EEDR = ucData;
/* 置位 EEMWE */
EECR |= ( 1 << EEMWE );
/* 置位 EEWE以启动写操作 */
EECR |= ( 1 << EEWE );
}

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

EEPROM_read:
; 等待上一次写操作结束
sbic EECR,EEPE
rjmp EEPROM_read
; 设置地址寄存器 r17
out EEARL, r17
; 设置 EERE以启动读操作
sbi EECR,EERE
; 自数据寄存器读取数据
in r16,EEDR
ret

C 代码例程
unsigned char EEPROM_read(unsigned char ucAddress)
{
/* 等待上一次写操作结束 */
while(EECR & (1<< EEPE))
;
/* 设置地址寄存器 */
EEARL = ucAddress;
/* 设置 EERE以启动读操作 */
EECR |= (1<< EERE);
/* 自数据寄存器返回数据 */
return EEDR;


防止EEPROM数据丢失

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

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

EEPROM 数据损坏的问题可以通过以下方法解决: 

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


推荐阅读

史海拾趣

DSMI Electronics SA公司的发展小趣事

DSMI Electronics SA公司非常重视企业文化的建设和团队建设。公司倡导开放、协作、创新、务实的企业文化,鼓励员工积极参与技术创新和市场竞争。同时,DSMI还注重人才培养和引进,通过内部培训、外部招聘等方式,不断提升员工的素质和能力。这些努力为公司的持续发展提供了有力的人才保障。

Hifn Inc公司的发展小趣事

DSMI Electronics SA公司非常重视企业文化的建设和团队建设。公司倡导开放、协作、创新、务实的企业文化,鼓励员工积极参与技术创新和市场竞争。同时,DSMI还注重人才培养和引进,通过内部培训、外部招聘等方式,不断提升员工的素质和能力。这些努力为公司的持续发展提供了有力的人才保障。

GarrettCom公司的发展小趣事

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

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

Electronic Transistors Corp公司的发展小趣事

在电子行业的早期,ETC公司以其独特的技术创新能力在晶体管市场上崭露头角。公司创始人带领研发团队,通过不断的实验和改进,成功研发出一种新型的MOSFET晶体管,具有更高的性能和更低的功耗。这一创新成果迅速在市场上引起轰动,ETC公司的知名度也随之提升。随着产品销量的不断增长,ETC逐渐在电子行业中确立了其领导地位。

超霸(GP)公司的发展小趣事

绿索超容深知品质是企业生存的根本。因此,公司从原材料采购到生产制造,再到成品检验,都实施了严格的质量控制措施。此外,公司还通过了ISO9001体系认证,进一步提升了其产品质量管理水平。这些努力不仅保证了绿索超容产品的优良品质,也为其赢得了客户的信任和好评。

申风(everanalog)公司的发展小趣事

随着技术实力的不断提升和产品线的日益丰富,申风(everanalog)公司开始积极拓展市场。公司凭借优质的产品和服务,逐渐在国内市场上树立了良好的品牌形象。同时,公司也积极开展国际合作,与国际知名企业建立了战略合作关系,共同推动集成电路产业的发展。这些合作不仅为公司带来了更多的商业机会,也提升了公司在国际市场上的竞争力。

问答坊 | AI 解惑

在WINCE下图片被撕裂的问题?请高手看一下代码。

我在WINCE下用DDRAW做UI,发现图片有时被撕裂了。现在我想用三缓冲的方法去做,希望能解决这个问题。可是我怎么做好像都不成功。下面是代码。还请高手看一下。 LPDIRECTDRAW4               g_ ...…

查看全部问答>

求助:大家好,我是个新新手,想请教SIM300C无线数传的问题。

大家好! 我刚刚接触SIM300C,单片机通过串口连接SIM300C,要实现数据传输应该怎样设置SIM300C?哪位专家能否给我一个设置流程,万分感谢!…

查看全部问答>

作嵌入式驱动程序,现在想转硬件设计,不知道好不好转啊

一直在作音视频驱动,总是在和硬件打交道。感觉还是硬件那边稳定,不用再学好多乱七八糟得编程语言。 python,jsp,vbscript,C#,。。。 硬件那边只要把电路搞得很通就行了。爽啊。…

查看全部问答>

图象传感器的应用

1、CMOS图象传感器是否直接可以用AVR单片机来进行采集像素数据 2、目前的摄像头,大多用DSP和FPGA做的,能否用低端的8BIT的潜入式单片机来做,如果有请专家们提供设计参考,感激不尽 3、怎样调节采集像素的速率,目前我们所用的MCU速度较慢,是否 ...…

查看全部问答>

LDO没有输出电容

New LDO Offers High Speed Performance without Output Capacitor The new XC6503 series from Torex, integrates internal phase compensation circuitry, removing the need for expensive output capacitors and dramatically ...…

查看全部问答>

好消息,TI M3的9D96终于正式推出了

昨天才出的,英文网站已经更新,中文网站还要等几天http://focus.ti.com/docs/toolsw/folders/print/dk-lm3s9d96.html?HQS=mcu_firestorm_110724&DCMP=mytinwsltr_07_25_2011&sp_rid_pod3=LTc5NzAyMjkzOAS2&sp_mid_pod3=495039…

查看全部问答>

msp430f5438测频率成功,能测60K一下频率,误差50HZ以内!

#include #include \"LCD_12864.h\" #include \"CLOCK.h\" unsigned int end,start; unsigned char overflow; unsigned long fre; int main( void ) {   // Stop watchdog timer to prevent time out reset   WDTCTL ...…

查看全部问答>

Altium 10作出来的lm3s下载器,漂亮!

atlium 作出来的lm3s下载器,漂亮!   不多说,上传图片!   [ 本帖最后由 paulhyde 于 2012-5-17 10:20 编辑 ]…

查看全部问答>

请教下关于ti官方代理商那里购买芯片要注意什么?

从公司原来的深圳提供芯片那里询了下价,比ti官方价格*汇率要高不少啊。。不知道官方代理会怎么样。。 从ti官网看的k片参考价格。正式去代理商那里下单 k片购买有问题吗?会要加钱吗?没货怎么办? 请教下关于ti官方代理商那里购买芯片要注意什么 ...…

查看全部问答>