单片机的EEPROM功能
单片机内的Flash与EEPROM作用及区别(精)
单片机内的 Flash 与 EEPROM 作用及区别
单片机运行时的数据都存在于 RAM (随机存储器中, 在掉电后 RAM 中的数据是无
法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用 EEPROM 或FLASHROM 等
存储器来实现。在传统的单片机系统中, 一般是在片外扩展存储器, 单片机与存储器之间通
过 IIC 或 SPI 等接口来进行数据通信。这样不光会增加开发成本,同时在程序开发上也要花
更多的心思。在 STC 单片机中内置了 EEPROM (其实是采用 IAP 技术读写内部 FLASH 来
实现 EEPROM ,这样就节省了片外资源,使用起来也更加方便。下面就详细介绍 STC 单
片机内置 EEPROM 及其使用方法。
flash 是用来放程序的,可以称之为程序存储器,可以擦出写入但是基本都是整个扇区进行的 .
一般来说单片机里的 flash 都用于存放运行代码,在运行过程中不能改; EEPROM 是用来保存用户数据,运行过程中可以改变,比如一个时钟的闹铃时
间初始化设定为 12:00,后来在运行中改为 6:00,这是保存在 EEPROM 里, 不怕掉电,就算重新上电也不需要重新调整到 6:00
下面是网上详细的说法,感觉不错:
FLASH 和 EEPROM 的最大区别是 FLASH 按扇区操作, EEPROM 则按字节操作, 二者寻址方法不同,存储单元的结构也不同, FLASH 的电路结构较简单,同样容量占芯片面积较小,成本自然比 EEPROM 低,因而适合用作程序存储器, EEPROM 则更多的用作非易失的数据存储器。当然用 FLASH 做数据存储器也行, 但操作比EEPROM 麻烦的多,所以更“人性化”的 MCU 设计会集成 FLASH 和 EEPROM 两种非易失性存储器,而廉价型设计往往只有 FLASH ,早期可电擦写型 MCU 则都是EEPRM 结构,现在已基本上停产了。
stc单片机内部eeprom的应用(转)
STC单片机内部EEPROM的应用(转)
STC单片机内部EEPROM的应用(转)
2008-05-18 02:47:27| 分类:AVR与C51单片机技| 标签:|字号大中小订阅STC单片机内部EEPROM的应用
单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM或FLASHROM 等存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC或SPI等接口来进行数据通信。这样不光会增加开发成本,同时在程序开发上也要花更多的心思。在STC单片机中内置了EEPROM(其实是采用IAP技术读写内部FLASH来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC单片机内置EEPROM及其使用方法。
STC各型号单片机内置的EEPROM的容量各有不同,见下表:
单片机芯片型号
起始地址
内置EEPROM容量(每扇区512字节) STC89C51RC,STC89LE51RC
0x2000
共八个扇区
STC89C52RC,STC89LE52RC
0x2000
共八个扇区 STC89C54RD+,STC89LE54RD+
0x8000
共五十八个扇区 STC89C55RD+,STC89LE55RD+
0x8000
单片机断电短暂记忆功能
单片机断电短暂记忆功能
在一些应用场景下,单片机需要断电后能够保留一些重要的信息,例如电子秤需要保存当前称量的数值,温湿度传感器需要保存当前的环境信息等。如果没有断电短暂记忆功能,每次断电后都需要重新初始化这些信息,这不仅浪费时间和资源,还可能导致数据丢失。
一种常用的实现方法是使用EEPROM(电可擦可编程只读存储器)来存储断电前的数据。EEPROM是一种非易失性存储器,它可以在断电时保存数据,并且在电源重新上电后还能恢复这些数据。EEPROM主要通过电场效应将数据存储在晶体管的栅极上,因此它不需要外部电源来保持数据的存储状态。在单片机上,可以使用I2C或SPI接口与EEPROM通信,读写数据。
另一种常见的方法是使用闪存来实现断电短暂记忆功能。闪存是一种非易失性存储器,通常用于存储程序代码和配置信息。与EEPROM相比,闪存具有更高的存储密度和更快的读写速度,但相应的价格也更高。在单片机上,可以通过SPI接口与闪存通信,将断电前的数据保存在闪存中,并在上电后恢复这些数据。
除了EEPROM和闪存外,还可以使用SD卡等外部存储器来实现断电短暂记忆功能。SD卡是一种常见的存储介质,具有较大的存储容量和较快的读写速度。在单片机上,可以通过SPI接口与SD卡通信,将断电前的数据保存在SD卡中,并在上电后从SD卡中读取这些数据。
无论是使用EEPROM、闪存还是SD卡,都需要在软件层面做一些工作来实现断电短暂记忆功能。首先,需要定义一个数据结构,用于保存断电前的数据。然后,需要在断电前将这些数据存储到外部存储器中,可以使
单片机内的Flash与EEPROM作用及区别
单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RA M 中的数据是无
法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPR OM
或F LASHR OM 等
存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通
过IIC或SPI等接口来进行数据通信。这样不光会增加开发成本,同时在程序开发上也要花
更多的心思。在ST C 单片机中内置了E EPROM(其实是采用IAP技术读写内部FLAS H 来
实现EEPR OM),这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC单
片机内置EEP ROM 及其使用方法。
f lash是用来放程序的,可以称之为程序存储器,可以擦出写入但是基本都是整个扇区进行的.
一般来说单片机里的f lash都用于存放运行代码,在运行过程中不能改;
EEPR OM是用来保存用户数据,运行过程中可以改变,比如一个时钟的闹铃时间初始化设定为12:00,后来在运行中改为6:00,这是保存在EE PROM里,不怕掉电,就算重新上电也不需要重新调整到6:00
下面是网上详细的说法,感觉不错:
F LASH和EEPR OM的最大区别是FL ASH按扇区操作,E EPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLA SH的电路结构较简单,同样容量占芯片面积较小,成本自然比EE PROM低,因而适合用作程序存储器,
基于EEPROM的单片机数据存储系统
基于EEPROM的单片机数据存储系统
第一章:介绍
1.1 研究背景
在现代电子设备中,数据存储是一个非常重要的功能。无论是个人电脑、手机还是其他智能设备,都需要在断电后能保持数据的完整性。传统的存储器如RAM 无法在断电后保持数据,因此需要一种能够实现非易失性存储的解决方案。
1.2 研究目的
本文旨在研究基于EEPROM的单片机数据存储系统,并探讨其在电子设备中的应用。通过对EEPROM的特性和使用方法的研究,设计出一种高效可靠的数据存储系统,满足现代电子设备对数据存储的需求。
1.3 研究内容
本文将分析EEPROM的工作原理和特点,介绍其在单片机系统中的应用。然后,将设计和实现一种基于EEPROM的数据存储系统,并对其性能进行测试和评估。最后,将讨论该系统在不同电子设备中的应用前景。
第二章:EEPROM的工作原理和特点
2.1 EEPROM的定义
EEPROM是一种电可擦可编程只读存储器,能够在断电后保持数据。与传统的RAM相比,EEPROM具有非易失性的特点,因此被广泛应用于数据存储系统中。
2.2 EEPROM的工作原理
EEPROM中的数据存储在电荷量上,通过在电场中施加高压或低压来改变电荷量。写入数据时,需要将数据字节按特定的顺序写入EEPROM的指定地址。擦除数据时,需要将整个EEPROM芯片中的数据擦除。
2.3 EEPROM的特点
EEPROM具有很多优点,如非易失性、可靠性高、存储密度大等。此外,EEPROM 的读写速度较慢,且有限的擦写次数限制,因此需要合理的设计和管理。
第三章:基于EEPROM的单片机数据存储系统设计
eeprom读写程序详解
eeprom读写程序详解
EEPROM(Electrically Erasable Programmable Read-Only Memory) 是一种可编程只读存储器,可以在电信号的作用下进行擦写和改写。它通常用于存储单片机或其他嵌入式系统中的数据、设置参数、配置文件等。
对于 EEPROM 的读写程序,需要考虑以下几个方面:
1. 读操作:
读操作通常包括以下步骤:
- 等待上次读操作完成。
- 获取要读取的数据的单元地址。
- 将 EEPGD 位和 CFGS 位清零。
- 启动读操作控制位 RD。
- 等待本次读操作完成。
- 将该单元地址中对应的数据返回。
在读取 EEPROM 数据时,为了避免芯片在一瞬间无法获取到数据,需要给芯片一定的时间来稳定获取数据。因此,在读取操作中需要加入等待步骤。
2. 写操作:
写操作通常包括以下步骤:
- 等待上次写操作完成。
- 获取要写的数据的单元地址。
- 将要写的数据写入 EEPROM 的单元中。
- 将 EEPGD 位和 CFGS 位清零。
- 启动写操作控制位 WP。
- 等待写操作完成。
在写操作中,为了确保数据的可靠性,需要将要写的数据写入EEPROM 的单元中,并等待写操作完成。同时,在写操作过程中,需要注意避免对无关的单元进行写操作,以免损坏 EEPROM 芯片。
3. 中断处理:
在 EEPROM 的读写操作中,通常需要加入中断处理机制,以便在读写过程中及时响应和处理异常情况。例如,在读取 EEPROM 数据时,如果 EEPROM 芯片出现故障,可能会导致读取失败。为了避免这种情况,可以在读取操作中加入中断处理机制,在读取失败时及时报警或采取相应的应对措施。
单片机断电短暂记忆功能
单片机断电短暂记忆功能
单片机断电短暂记忆功能是一种能够在断电后保持其内部状态、数据和程序的功能。单片机是一种集成电路芯片,具有微处理器、存储器、输入输出接口等功能,广泛应用于各种电子设备中。在某些应用场景中,由于电源不稳定或需要在断电后恢复上一次的工作状态,就需要使用单片机断电短暂记忆功能。
在进行单片机断电短暂记忆功能设计之前,首先需要理解单片机内部的存储器结构。单片机内部通常包含多个不同类型的存储器,包括闪存、SRAM(静态随机存储器)以及EEPROM(电可擦可编程只读存储器)。其中,闪存用于存储程序代码,SRAM用于存储临时数据,而EEPROM用于存储非易失性的数据。
在设计单片机断电短暂记忆功能时,首先需要确定需要保存哪些数据和状态。通常情况下,需要保存的数据包括寄存器的状态、计数器的值以及一些关键的变量。为了保证这些数据在断电后不丢失,可以使用EEPROM来进行存储。
接下来,需要设计一种机制来触发数据的保存和恢复。常见的触发机制通常有两种方式:定时触发和外部触发。定时触发是通过定时器来定时保存数据,而外部触发是通过外部电路与单片机进行交互来触发保存和恢复操作。根据实际需求,可以选择合适的触发方式来实现断电短暂记忆功能。
在实际设计中,需要编写相应的程序代码来实现数据的保存和恢复。保存数据时,需要将需要保存的数据写入EEPROM中,并进行适当的标记以便恢复时能够正
确读取。恢复数据时,需要读取EEPROM中保存的数据,并将其恢复到对应的寄存器、计数器以及变量中。
除了数据的保存和恢复,还需要考虑单片机在断电后重新上电的初始化过程。在重新上电后,需要进行一系列的初始化操作,包括IO口初始化、时钟初始化以及其他外设的初始化,以确保系统能够正常运行。
STC单片机内部EEPROM的应用
TX-1C开发板学习单片机内部EEPROM的应用
STC89C51、52内部都自带有2K字节的EEPROM,54、55和58都自带有16K字节的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100,000 次以上,先来介绍下ISP与IAP 的区别和特点。
知识点:ISP与IAP介绍
ISP:In System Programable 是指在系统编程,通俗的讲,就是片子已经焊板子上,不用取下,就可以简单而方便地对其进行编程。比如我们通过电脑给STC单片机下载程序,或给AT89S51单片机下载程序,这就是利用了ISP技术。
IAP:In Application Programable 是指在应用编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到存储区。大家要注意千万不要尝试去擦除这段ISP引导程序,否则恐怕以后再也下载不了程序了。
STC单片机内部有几个专门的特殊功能寄存器负责管理ISP/IAP功能的,见表1。
表1 ISP/IAP相关寄存器列表
ISP/IAP从Flash读出的数据放在此处,向Flash写入的数据也需放在此处。
STC单片机EEPROM读写程序
STC单片机EEPROM读写程序在单片机中,EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,可以用于存储数据,即使在断电情况下,数据也会被保留。因此,掌握STC单片机的EEPROM读写程序对于开发嵌入式系统非常重要。
一、EEPROM简介
EEPROM是一种可重复擦写的存储器,可用于存储小量数据。与Flash存储器相比,EEPROM具有更快的写入和擦除速度。在STC单片机中,EEPROM的存储容量通常较小,一般在几个字节到几千字节之间。
二、EEPROM读操作
在STC单片机中,进行EEPROM读操作需要按照以下步骤进行:
1. 初始化I2C总线:STC单片机使用I2C总线进行EEPROM读写操作,因此需要先初始化I2C总线。通过设置相关寄存器,设置I2C 总线的速度和地址。
2. 发送设备地址:确定要读取的EEPROM设备的地址,并发送到I2C总线。
3. 发送寄存器地址:确定要读取的EEPROM寄存器地址,并将其发送到I2C总线。
4. 发送读命令:向EEPROM发送读命令,以启动读操作。
5. 读取数据:从EEPROM中读取数据,并保存到变量中。
6. 结束读操作:完成读操作后,关闭I2C总线。
三、EEPROM写操作
类似于读操作,进行EEPROM写操作也需要按照一定的步骤进行:
1. 初始化I2C总线:同样地,首先需要初始化I2C总线。
2. 发送设备地址:确定要写入的EEPROM设备的地址,并发送到
I2C总线。
关于STC单片机EEPROM的应用总结
关于STC单片机EEPROM的应用总结
关于STC单片机EEPROM的应用总结
当在程序运行的过程中你希望修改某个变量并且此变量
的值在掉电以后不丢失,那么你就可以采用将变量数据
写入EEPROM的方式来实现。
什么是EEPROM,即Electrically Erasable ProgrammableRead_Only Memory首先它是一种存储器,并且可以通过高电压来进行反复擦写的存储器。具有掉
电数据不丢失的特点。比如常用的24C系列,93C系列的器件。一般这种器件采用I2C的方式与单片机进行通讯,对于这种通讯方式及器件的应用另作总结。这里主要总
结一下,STC12C5204AD芯片内部包含的EEPROM的应用方法。
STC12C5201AD系列单片机内部集成了EEPROM是与程序空间分开的,利用ISP/IAP技术可将内部data flash当EEPROM,擦写10万次以上。
EEPROM可分为若干个扇区,每个扇区包含512字节。
使用时建议同一次修改的数据放在同一个扇区,不是同
一次修改的数据放在不同的扇区,不一定要用满。数据
存储器的擦除操作是按扇区进行的。
在程序中可对EEPROM进行字节读写/字节编程/扇区擦除操作。在工作电压Vcc偏低时,建议不要进行
EEPROM/IAP操作。以免发生数据错误。
应用的步骤
1、声明与EEPROM相关的寄存器
2、编写EEPROM初始化函数
3、编写字节擦除函数
4、编写字节编程函数
5、编写字节读取函数
6、在需要读取EEPROM字节内容时直接调用字节读取函
7、在需要进行写EEPROM字节时,先调用字节擦除函数,将字节内容擦除成FFH后,在调用字节编程函数,将数
STC单片机内部EEPROM的应用
STC单片机内部EEPROM的应用 在STC 单片机中内置了EEPROM(其实是采用IAP 技术读写内部FLASH 来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC 单片机内置EEPROM 及其使用方法。(内部EEPROM 可以擦写100000 次以上)上面提到了IAP,它的意思是“在应用编程”,即在程序运行时程序存储器可由程序自身进行擦写。正是是因为有了IAP,从而可以使单片机可以将数据写入到程序存储器中,使得数据如同烧入的程序一样,掉电不丢失。当然写入数据的区域与程序存储区要分开来,以使程序不会遭到破坏。要使用IAP 功能,与以下几个特殊功能寄存器相关:ISP_DATA: ISP/IAP 操作时的数据寄存器,ISP/IAP 从Flash 读出的数据放在此处,向Flash 写的数据也需放在此处ISP_ADDRH:ISP/IAP 操作时的地址寄存器高八位。ISP_ADDRL:ISP/IAP 操作时的地址寄存器低八位。ISP_CMD: ISP/IAP 操作时的命令模式寄存器,须命令触发寄存器触发方可生效。ISP_TRIG:ISP/IAP 操作时的命令触发寄存器。当ISPEN(ISP_CONTR.7)=1 时,对ISP_TRIG 先写入0x46,再写入0xb9,ISP/IAP命令才会生效。单片机芯片型号起始地址内置EEPROM 容量(每扇区512 字节)STC89C51RC,STC89LE51RC 0x2000 共八个扇区STC89C52RC,STC89LE52RC 0x2000 共八个扇区STC89C54RD+,STC89LE54RD+ 0x8000 共五十八个扇区STC89C55RD+,STC89LE55RD+ 0x8000 共五十八个扇区STC89C58RD+,STC89LE58RD+ 0x8000 共五十八个扇区寄存器标识 地址 名称 初始值ISP_DATA 0xE2 ISP/IAP闪存数据寄存器 11111111ISP_ADDRH 0xE3 ISP/IAP 闪存地址高位 00000000ISP_ADDRL 0xE4 ISP/IAP 闪存地址低位 00000000ISP_CMD 0xE5 ISP/IAP闪存命令寄存器 MS2MS1 MS0 xxxxx000ISP_TRIG 0xE6 ISP/IAP 闪存命令触发 xxxxxxxxISP_CONTR 0xE7 ISP/IAP 控制寄存器ISPEN SWBS SWRST WT2 WT1 WT0 0 0 0命令/操作模式选择(B7 B6 B5 B4 B3 B2 B1 B0 )保留命令选择- - - - - 0 0 0 待机模式,无ISP/IAP 操作- - - - - 0 0 1 对用户的应用程序Flash 区及数据Flash 区字节读- - - - - 0 1 0 对用户的应用程序Flash 区及数据Flash 区字节编程- - - - - 0 1 1 对用户的应用程序Flash 区及数据Flash 区扇区擦除ISP_CONTR:ISP/IAP 控制寄存器。ISPEN:ISP/IAP 功能允许位。0:禁止ISP/IAP 编程改变Flash,1:允许编程改变FlashSWBS:软件选择从用户主程序区启动(0),还是从ISP 程序区启动
STC单片机内部EEPROM的应用
/* 字节写 */ void byte_write(unsigned int byte_addr, unsigned char original_data) { IS P_ADDRH=(unsigned char)(byte_addr>>8)? /* 取地址 */ IS P_ADDRL=(unsigned char)(byte_addr & 0x00ff)? IS P_CMD&=0xf8?/* 清低 3 位*/ IS P_CMD|=PrgCommand?/* 写命令 2*/ IS P_DATA=original_data?/* 写入数据准备*/ IS Pgoon()?/* 触发执行*/ IS P_IAP_disable()?/* 关闭 IAP 功能*/ } /* 字节写并校验 */ unsigned char byte_write_verify(unsigned int byte_addr, unsigned char original_data) { IS P_ADDRH=(unsigned char)(byte_addr>>8)? /* 取地址 */ IS P_ADDRL=(unsigned char)(byte_addr&0xff)? IS P_CMD&=0xf8?/* 清低 3 位*/ IS P_CMD|=PrgCommand?/* 写命令 2*/ IS P_DATA=original_data? IS Pgoon()?/* 触发执行*/ /* 开始读,没有在此重复给地址,地址不会被自动改变 */ IS P_DATA=0x00?/* 清数据传递寄存器*/ IS P_CMD&=0xf8?/* 清低 3 位*/ IS P_CMD|=RdCommand?/* 读命令 1*/ IS P_TRIG=0x46?/* 触发 ISP_IAP 命令字节 1 */ IS P_TRIG=0xb9?/* 触发 IS P_IAP 命令字节 2 */ _nop_()?/* 延时*/ IS P_IAP_disable()?/* 关闭 IAP 功能*/ if(ISP_DATA==original_data)/* 读写数据校验*/ return Ok?/* 返回校验结果 */ else return Error? } /* 数组写入 */
单片机EEPROM存储技术研究与应用分析
单片机EEPROM存储技术研究与应用分析
单片机(微控制器)是一种集成了中央处理器、存储器与外围设备接口的集成电
路芯片,常用于各种电子设备控制系统中。EEPROM(Electrically Erasable Programmable Read-Only Memory)存储技术是一种可擦写的非易失性存储器技术,在单片机中广泛应用于存储重要的数据和程序。
本文将对单片机EEPROM存储技术进行研究与应用分析,探讨其原理、特点、应用场景以及未来的发展趋势。
一、EEPROM存储技术原理
EEPROM存储技术是一种非易失性存储器技术,其存储单元可以通过电编程
和电擦除来改变其状态。与传统的ROM存储器不同,EEPROM存储器可以随时擦除和编程,使其适用于存储需要频繁更新或修改的数据和程序。
EEPROM存储单元由一对浮动门和控制电路组成。当进行编程操作时,控制
电路通过给浮动门施加高电压,从而使电荷注入存储单元。而在擦除操作中,通过施加高电压,擦除浮动门上的电荷。这种电编程和擦除的行为使得EEPROM存储
器具有了可随时修改的特性。
二、EEPROM存储技术特点
1. 非易失性存储:EEPROM存储器在断电或掉电情况下仍然能够保持数据和
程序,不需要外部电源供电维持存储信息,确保了数据的长期保存。
2. 随机读写访问:与传统的EPROM存储器相比,EEPROM存储器可以进行随机读写访问,而不需要整体擦除。
3. 多次擦写操作:EEPROM存储器可以进行多次擦写操作,可达到10万次以上,具有较高的可靠性和耐久性。
4. 体积小巧:EEPROOM存储器芯片体积小巧,适合于嵌入式系统和各种小型电子设备中的应用。
单片机内的Flash与EEPROM作用及区别
单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC 或SPI 等接口来进行数据通信。这样不光会增加开发成本,同时在程序开发上也要花更多的心思。在STC 单片机中内置了EEPROM(其实是采用IAP 技术读写内部FLASH 来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC 单片机内置EEPROM 及其使用方法。flash是用来放程序的,可以称之为程序存储器,可以擦出写入但是基本都是整个扇区进行的.一般来说 单片机里的flash都用于存放运行代码,在运行过程中不能改;EEPROM是用来保存用户数据,运行过程中可以改变,比如一个时钟的闹铃时间初始化设定为12:00,后来在运行中改为6:00,这是保存在EEPROM里,不怕掉电,就算重新上电也不需要重新调整到6:00下面是网上详细的说法,感觉不错:FLASH 和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有 FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。在芯片的内电路中,FLASH和EEPROM不仅电路不同,地址空间也不同,操作方法和指令自然也不同,不论冯诺伊曼结构还是哈佛结构都是这样。技术上,程序存储器和非易失数据存储器都可以只用FALSH结构或EEPROM结构,甚至可以用“变通”的技术手段在程序存储区模拟“数据存储区”,但就算如此,概念上二者依然不同,这是基本常识问题。EEPROM:电可擦除可编程只读存储器,Flash的操作特性完全符合EEPROM的定义,属EEPROM无疑,首款Flash推出时其数据手册上也清楚的标明是EEPROM,现在的多数Flash手册上也是这么标明的,二者的关系是“白马”和“马”。至于为什么业界要区分二者,主要的原因是 Flash EEPROM的操作方法和传统EEPROM截然不同,次要的原因是为了语言的简练,非正式文件和口语中Flash EEPROM就简称为Flash,这里要强调的是白马的“白”属性而非其“马”属性以区别Flash和传统EEPROM。Flash的特点是结构简单,同样工艺和同样晶元面积下可以得到更高容量且大数据量
eeprom什么意思
eeprom什么意思
EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种可擦写的可编程只读存储器。它在计算机科学和
电子工程中具有重要的应用,特别是在嵌入式系统和存储设备中。
在本文中,我们将探讨EEPROM的意义、原理、特点和应用。
一、EEPROM的意义
EEPROM是一种存储数据的硬件设备,它的存在使得计算机和其他电子设备能够存储数据并在断电后保持数据的完整性。与普通的只
读存储器(ROM)相比,EEPROM允许用户对其内部数据进行擦
除和编程操作。这使得EEPROM具备了动态可编程和可擦除的功能,能够实现数据的可持久化存储和更新。
二、EEPROM的工作原理
EEPROM由一系列浮栅晶体管组成,这些晶体管可以存储和读取二进制数据。当需要写入数据时,所需的电压被应用于晶体管的引脚,从而将数据编程到相应的存储位。当需要读取数据时,电压会被应
用于另一组引脚,从而读取相应的存储位的值。与传统的ROM相比,EEPROM在写入数据时需要更多的时间和电压,但也具备了更强的可编程性。
三、EEPROM的特点
1. 数据可擦除和编程:EEPROM允许用户对其中存储的数据进行擦除和编程操作,从而实现数据的更新和删除。这使得EEPROM非常适用于存储需要经常更新的数据,如配置文件和固件升级等。
2. 非易失性存储:与随机访问存储器(RAM)不同,EEPROM在
断电后仍然能够保持存储的数据。这意味着即使设备断电,用户的
数据也能够得到保留,不会丢失。
51单片机STC单片机IAP(EEPROM)的使用
#include<stc12c5410ad.h>//到宏晶网站下载头文件或自己在现有的头文件上加上相应的寄存器定义即可。
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
/****************uart init***********/
void UART_inti(void)
{
AUXR=0x40;//定时器1速度是普通8051的12倍,不分频
TMOD=0x20;//定时器1工作在方式2,用来产生波特率
SCON=0x50;//串口工作在方式1,允许接收
TL1=0xF7;//波特率为38400;FB为115200
TH1=0xF7;
PCON=0x00;//SMOD=0
TR1=1; //产生波特率
}
void ISP_write(uint ISP_addr,uchar ISP_data)//stc12c5404启始地址2800h ;IAP_CMD 1读,2写,3擦除
{
ISP_DATA=ISP_data; //送数据
ISP_ADDRL=ISP_addr%256;
ISP_ADDRH=ISP_addr/256;//送高低地址
ISP_CONTR=0x83;//IAP ENABLE ,SET CPU WAIT TIME ISP_CMD=2;//写字节模式
ISP_TRIG=0x46;
ISP_TRIG=0xB9;//触发启动ISP
_nop_();//等待写入
ISP_CONTR=0x00;//禁止ISP/IAp操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return IapReadByte(Addr);
}
/**-*-*-*-*-*-*-*-*-*--*-*-*-*-*- STC_EEPROM 工作层 -*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-**/
/*---------------------------1.Erase one sector area 2.Input: addr (ISP/IAP/EEPROM address) 3.Output:
#define STC_IAP_SecAddr 0x0000
//Sector Start address
/**-*-*-*-*-*-*-*-*-*-*-*-*-*-* STC_EEPROMБайду номын сангаас向上应用层 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**/
void STC_Write_EEPROM(u16 Addr, u8 Value); u8 STC_Read_EEPROM(u16 Addr);
//Open IAP function, and set wait time //Set ISP/IAP/EEPROM ERASE command
//Set ISP/IAP/EEPROM address low //Set ISP/IAP/EEPROM address high //Send trigger command1 (0x5a) //Send trigger command2 (0xa5) //MCU will hold here until ISP/IAP/EEPROM
* 名称:STC 单片机的 EEPROM 的操作
*
* 说明:1.只存 50 个字节数据(可自行修改).
*
2.存储地址从 0 开始.
*
3.低压不要操作.
*
4.上电约 200ms 之后可操作.
*/
#include "STC_EEPROM.h"
/**-*-*-*-*-*-*-*-*-*-*-*-*-*-* STC_EEPROM 向上应用层 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**/ /**
*
2.存储地址从 0 开始.
*
3.低压不要操作.
*
4.上电约 200ms 之后可操作.
*/
#ifndef __STC_EEPROM_H #define __STC_EEPROM_H
#include "STC12.h"
/**-*-*-*-*-*-*-*-*-*-*-*-*-*-* STC_EEPROM 操作定义 - *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**/
//Write ISP/IAP/EEPROM data
IAP_TRIG = 0x5A;
//Send trigger command1 (0x5a)
IAP_TRIG = 0xA5;
//Send trigger command2 (0xa5)
NOP( );
//MCU will hold here until ISP/IAP/EEPROM
IapEraseSector(STC_IAP_SecAddr);
temp_data[Addr] = Value; for(i=0; i<50; i++)
IapProgramByte(STC_IAP_SecAddr+i, temp_data[i]);
}
/** * 从 EEPROM 中读一个字节 */
#define #define #define #define #define
STC_CMD_IDLE
0
STC_CMD_READ
1
STC_CMD_PROGRAM 2
STC_CMD_ERASE
3
STC_ENABLE_IAP 0x83
//Stand-By //Byte-Read
//Byte-Program //Sector-Erase //SYSCLK<=12MHz
* 向 EEPROM 中写一个字节 */ void STC_Write_EEPROM(u16 Addr, u8 Value) {
u8 i; u8 temp_data[50];
for(i=0; i<50; i++) temp_data[i] = IapReadByte(STC_IAP_SecAddr+i);
/* operation complete */ IapIdle( );
}
/*---------------------------1.Read one byte from ISP/IAP/EEPROM area 2.Input: addr (ISP/IAP/EEPROM address) 3.Output:Flash data
-----------------------------*/ void IapEraseSector(u16 Sec_Addr) {
IAP_CONTR = STC_ENABLE_IAP; IAP_MOD = STC_CMD_ERASE; IAP_ADDRL = Sec_Addr; IAP_ADDRH = Sec_Addr >> 8; IAP_TRIG = 0x5A; IAP_TRIG = 0xA5; NOP( );
/**-*-*-*-*-*-*-*-*-*--*-*-*-*-*- STC_EEPROM 工作层 -*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-**/
void IapEraseSector(u16 Sec_Addr); void IapProgramByte(u16 Addr, u8 Value); u8 IapReadByte(u16 Addr);
/*----------------------------
1.Disable ISP/IAP/EEPROM function
2.Make MCU in a safe state
----------------------------*/
void IapIdle(void)
{
IAP_CONTR = 0;
//Set ISP/IAP/EEPROM PROGRAM
command
IAP_ADDRL = Addr;
//Set ISP/IAP/EEPROM address low
IAP_ADDRH = Addr >> 8;
//Set ISP/IAP/EEPROM address high
IAP_DATA = Value;
//Clear IAP address to prevent misuse
}
第二个文件:“STC_EEPROM.H”
源码如下(自己建立’.H’文件 并拷贝到里面):
/**
* 作者:一片云
* 日期:2013.11.23
* 名称:STC 单片机的 EEPROM 的操作
*
* 说明:1.只存 50 个字节数据(可自行修改).
//Open IAP function, and set wait time //Set ISP/IAP/EEPROM READ
//Set ISP/IAP/EEPROM address low //Set ISP/IAP/EEPROM address high //Send trigger command1 (0x5a) //Send trigger command2 (0xa5) //MCU will hold here until ISP/IAP/EEPROM
-----------------------------*/ void IapProgramByte(u16 Addr, u8 Value) {
IAP_CONTR = STC_ENABLE_IAP;
//Open IAP function, and set wait time
IAP_MOD = STC_CMD_PROGRAM;
名称:STC12 单片机的 EEPROM 功能 作者:一片云 QQ: 2279536733
上传日期:2014 年 1 月 9 号
说明:共有两个文件,自己到时候整理下。
第一个文件:“STC_EEPROM.C”
源码如下(自己建立’.c’文件 并拷贝到里面):
/**
* 作者:一片云
* 日期:2013.11.23
----------------------------*/ u8 IapReadByte(u16 Addr) {
u8 Value;
IAP_CONTR = STC_ENABLE_IAP; IAP_MOD = STC_CMD_READ; command IAP_ADDRL = Addr; IAP_ADDRH = Addr >> 8; IAP_TRIG = 0x5A; IAP_TRIG = 0xA5; NOP( );
/* operation complete */ IapIdle();
}
/*---------------------------1.Program one byte to ISP/IAP/EEPROM area 2.Input: addr (ISP/IAP/EEPROM address) 3.dat (ISP/IAP/EEPROM data) 4.Output:
/**-*-*-*-*-*-*-*-*-*--*-*-*-*- * STC_EEPROM 工作子层 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**/ void IapIdle(void);
#endif
/* operation complete */ Value = IAP_DATA; IapIdle();
//Read ISP/IAP/EEPROM data //Close ISP/IAP/EEPROM function
return Value; }
//Return Flash data
/**-*-*-*-*-*-*-*-*-*--*-*-*-*- * STC_EEPROM 工作子层 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**/
//Close IAP function
IAP_MOD = 0;
//Clear command to standby
IAP_TRIG = 0;
//Clear trigger register
IAP_ADDRH = 0x80;
//Data ptr point to non-EEPROM area
IAP_ADDRL = 0;