扒一扒单片机与存储器的那些事

2025-04-10

单片机与存储器的关系像什么?单片机里的存储都是一样的吗?为什么有的单片机既有EEPROM又有Flash?

本期贸泽科普实验室,就来扒一扒单片机与存储器的那些事——

01单片机与存储器的关系像什么?

请你用比喻来形容下存储与单片机的关系,你会用什么呢?

我觉得他们很像大脑与大脑的记忆系统,大脑(单片机)掌控着身体(嵌入式系统)的各项活动和决策,记忆系统存储那些与生俱来的本能反应和经过长期学习固化下来的知识(ROM),也短暂存储当前正在思考和处理的信息(RAM),比如刚刚看到的一个电话号码,一旦注意力转移(断电),这个短期记忆就会遗忘(数据清除)。所以,如果存储不工作了,无论性能多高的器件,都得“凉凉”。

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第1张

02单片机里的存储都是一样的吗?

以超低功耗32位MCU STM32L151R6-A为例,下图是其电路框图,标红的部分就是在MCU内部集成的存储器。

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第2张

在单片机中,为什么会有这么多种类的存储呢?捋一遍STM32L151R6-A单片机的工作过程就立刻清晰明了了。

1)在单片机上电复位之后,首先需要执行的是引导代码,就如电脑的系统一样,引导程序的目的是初始化系统硬件,如时钟、外设等,并将应用程序从其他存储器,如Flash,加载到SRAM中,然后跳转到应用程序的入口地址开始执行。此外,引导程序还可以提供一些基本的调试和下载功能,方便开发者对MCU进行程序烧录和调试。Boot ROM是单片机正常工作使用的第一个存储器。

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第3张

当然,并不是所有MCU都有Boot ROM,像一些简单、低端的单片机本身是不需要复杂的引导过程的,还有一些自定义设计的特殊单片机,可以通过外部电路或者其他的特殊机制来实现程序的启动和加载。

2)单片机启动之后,需要去完成某个具体的应用功能,比如智能家居应用,单片机要控制灯光,实现这个功能的应用代码在PC编写完成之后,会被烧录到单片机里的存储器中,这个存储器就是Flash。除了所有的应用程序之外,Flash存储一些需要长期保存的数据,如系统配置参数、校准数据等,这些数据在设备运行过程中可能会被读取或修改,但在断电后依然能够保留。

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第4张

3)单片机系统在运行时,可能会产生大量的数据,这些数据需要频繁的修改,但又不能丢失,比如温湿度的调节,需要实时根据情况更新数据,但数据保存后,在下次启动时,不能丢失,这些数据就会被存储在另外一种ROM,EEPROM里。

4)前面提到的控制灯光功能,假设需要根据光的强度进行控制,就要使用光传感器,单片机要对传感器测得的光线数据进行处理、运算,会产生临时数据、中间结果,这些会被暂时存放在SRAM中,而且程序通常从Flash加载到SRAM执行。

5)任何电子系统都有可能出现异常情况,比如电源故障。在故障修复之后,如何能够保证系统恢复到正常状态?这就需要Backup Data存储器中存储的关键备份数据,比如运行状态信息、配置信息等。

从单片机系统的运行过程来看,这些存储器扮演着重要的角色,虽然种类多,但缺一不可。

03既有EEPROM又有Flash的单片机

这要从早期ROM说起,初始的ROM数据写入方式是在ROM的制造工序中,芯片厂商用特殊的方法烧录进去的,一次性写入内容后,用户只能验证写入的资料是否正确,不能再作任何修改。这,工程师怎么能忍,于是就有了可编程只读存储器(PROM),PROM允许在制造后由工程师使用编程器写入数据,但只能写入一次,之后就不能再更改了,额,只能写一次?这不相当于人生下来,只能吃一顿饭一样?还得改。

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第5张

为了解决不能重复写入的问题,EPROM出现了,EPROM芯片可重复擦除和写入,它有一个很明显的特征,就是它正面的陶瓷封装上,开有一个玻璃窗口,透过这个窗口,可以看到其内部的集成电路,当紫外线透过这个窗口照射内部芯片时,就可以擦除其内的数据。由于使用紫外线擦除过程需要特殊的设备和操作,很繁琐,还有可能因为擦除窗口遮光失效,导致数据被误擦除。

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第6张

是不是可用其他方式擦除呢?没错,用电信号也可以的,这就是电可擦除可编程只读存储器(EEPROM)。EEPROM的电可擦除,无疑是前进了一大步。在数据读取/写入操作上,EEPROM允许以字节为单位进行操作。不论是编程,还是擦除的过程,EEPROM非常灵活和方便。

虽然EEPROM的性能已经非常不错了,既可以电擦除,又能按字节读写,但是,随着程序逐渐复杂,EEPROM的读写速度和容量就有点捉襟见肘,如果还是只能按照字节操作,就太慢太慢了,改几行代码,还得等半天,所以,在EEPROM的基础上,又发展出了Flash存储器,有更高的存储密度、更低的成本和更快的擦写速度。

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第7张

要回答为什么有的单片机既有EEPROM又有Flash这个问题,还得看EEPROM和Flash的本质区别,这里我们整理了EEPROM和Flash在数据读取/写入操作方式、使用次数以及容量大小这些数据:

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第8张

从擦除和写入次数上看,EEPROM次数较高,以常用的AT24C02为例,它的擦除和写入次数高达100万,数据保存年限为100年。Flash的次数相对较少,以华邦的W25Q系列的SPI Flash为例,它的擦除和写入次数可小至10万,数据保存年限为在20年以上。

从读写方式上来看,EEPROM允许以字节为单位进行擦除和写入操作,而Flash则是以块或扇区为单位进行擦除和写入操作。

从存储容量上来看,EEPROM的容量都比较小,一般在几K字节到几百K字节,而Flash的容量是非常大的,小到几M,大到几T。

EEPROM和Flash这些各自的特点,让EEPROM在单字节数据的读写环境更有优势,而Flash适合存储程序代码和大量不频繁更新的数据。

举两个单片机应用的例子,第一个,比如要保存一个温度值,范围在0-100摄氏度,只占用1个字节,每1分钟需要把更新的温度值写入单片机的存储器。

如果使用EEPROM,只需要操作存储器中一个字节的空间,如果是Flash,就需要去操作一个块或者一个扇区,比如一个扇区有512字节,操作一个字节的数据,整个扇区都需要重新擦写,这么高频次的擦写,Flash的这个扇区很快就会被干废了,Flash废了,单片机也就废了。所以,这种场景使用EEPROM更适合。

第二个是在OTA升级系统固件时,为了防止系统升级失败造成系统变砖,就要在系统升级前备份系统固件,一般OTA升级的周期都是以月或者年为单位的,数据量大且集中,这个时候就需要使用Flash,它的读写速度快且容量大,如果使用EEPROM,读写速度慢而且有可能容量不够。

扒一扒单片机与存储器的那些事 (https://ic.work/) 技术资料 第9张

从这两个例子,可以看出,Flash和EEPROM在功能上实现互补,他们的存在可以让系统更好的工作。

如果你认真仔细地读到了这里,相信文章开头提到的3个问题,你都已经了解清楚了,那就说明我们本期的贸泽科普实验室没白做!

文章推荐

相关推荐