跳转到主要内容

为什么单片机中既有Flash又有EEPROM?

cathy /

单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。

插播一段:ROM最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了PROM,可以自己写入一次,要是写错了,只能换一片。随着不断改进,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再下一次,这么折腾一天也改不了几次。历史的车轮不断前进,伟大的EEPROM出现了,拯救了一大批程序员,终于可以随意的修改ROM中的内容了。

EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。但是今天已经存在多种EEPROM的变种,变成了一类存储器的统称。

<strong>狭义的EEPROM:</strong>

Arduino 101/Genuino 101 EEPROM的使用

editor /

<br>EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器-——一种断电后数据不丢失的存储设备。常被用作记录设备工作数据、保存配置参数。简而言之就是你想断电后Arduino还要记住一些数据,那就可以使用EEPROM。</br>

101的EEPROM库和其他Arduino的不同。从源码可知,Arduino 101/Genuino 101(此后称为101),并没有EEPROM存储单元,其提供的EEPROM库,实际上是在操纵其上的Flash空间。CurieEEPROM 从intel Curie的Flash中划分出了 2Kbyte 的空间,模拟成EEPROM空间。

要使用该库,需要调用的头文件 CurieEEPROM.h。在其示例程序中,展示了6个相关例程:

-----------------------------------------
eeprom_clear 清空EEPROM中所有数据

eeprom_crc 使用EEPROM进行CRC校验

eeprom_get 从EEPROM读出特定类型的数据

EEPROM