1. 存储器基础回顾:RAM、ROM、Flash、EEPROM的区别与选型
做单片机开发这么多年,我见过太多因为存储器选型不当导致的“灵异故障”。说白了,存储器就是单片机的“记忆体”——程序放哪、数据存哪、掉电后还能不能留住,全看它。这一章咱们先把四种主流存储器的底细摸清楚。
1.1 存储器的基本分类
从使用场景分,存储器就两大阵营:易失性和非易失性。掉电丢数据的叫易失性,掉电还能记住的叫非易失性。你想想看,程序代码肯定要非易失的,不然每次上电都成“失忆症”了。
核心判断标准:
- 掉电后数据是否保留 → 决定用 RAM 还是 ROM/Flash/EEPROM
- 写入次数要求 → 决定用 Flash 还是 EEPROM
- 写入速度要求 → 决定用 SRAM 还是 DRAM
1.2 RAM:运行时的工作台
RAM(Random Access Memory)是单片机运行时临时放变量、堆栈的地方。速度快,但掉电就丢。我习惯把 RAM 比作工程师的工作台——东西摆上面用着顺手,但下班断电全清空。
RAM 又分两种:
| 类型 | 速度 | 容量 | 功耗 | 典型应用 |
|---|---|---|---|---|
| SRAM | 极快(ns级) | 小(KB~MB) | 较高 | CPU缓存、小容量MCU |
| DRAM | 较快(几十ns) | 大(MB~GB) | 需刷新 | 大容量嵌入式系统 |
我在项目中遇到过用 SRAM 做数据采集缓冲区的案例。当时选了片 256KB 的 SRAM,读写时序没调好,数据老丢。后来发现是片选信号建立时间不够——嗯,这种坑踩过一次就记住了。
选型小技巧: 单片机内部 RAM 不够用时,外扩 SRAM 比 DRAM 好使。DRAM 需要刷新控制器,对实时性要求高的场合容易出问题。
1.3 ROM:只读的“硬编码”
ROM(Read-Only Memory)是最早的非易失存储器。出厂时写死,用户改不了。现在单片机里基本见不到纯 ROM 了,但概念得懂——它是 Flash 和 EEPROM 的老祖宗。
ROM 的变种有 PROM(可编程一次)、EPROM(紫外线擦除)、OTPROM(一次性可编程)。OTP 在低成本消费电子里偶尔还能见到,比如遥控器芯片。
注意: OTP 芯片一旦写错,直接报废。我有个同事曾经把 OTP 的校验位算反了,5000 片全废——从那以后他写 OTP 程序都要仿真三遍。
1.4 Flash:现代单片机的“程序仓库”
Flash 是目前单片机的主流非易失存储器。NOR Flash 和 NAND Flash 是两大分支。单片机里几乎全是 NOR Flash——它支持随机读取,可以直接执行代码(XIP,eXecute In Place)。
Flash 的特点:
- 块擦除:不能按字节擦,必须按扇区(通常 4KB 或 64KB)整块擦
- 擦写寿命:一般 1万~10万次
- 写入速度:比 EEPROM 快,但比 RAM 慢得多
我个人习惯把 Flash 当“硬盘”用——存程序、存固件、存配置参数。但要注意,频繁改写的参数别放 Flash 里,寿命扛不住。
避坑指南: 我曾经在一个数据采集项目里把日志直接写 Flash,每天写几千次。三个月后 Flash 坏了,整机返厂。后来改成先写 RAM 再批量刷 Flash,问题解决。
1.5 EEPROM:按字节改写的“便签本”
EEPROM(Electrically Erasable Programmable Read-Only Memory)可以按字节擦写,寿命比 Flash 长(通常 10万~100万次)。适合存那些需要频繁修改的小量数据——比如设备校准参数、用户设置、运行次数。
EEPROM 的缺点:容量小(一般几 KB 到几十 KB)、写入慢(ms 级)。
| 特性 | Flash | EEPROM |
|---|---|---|
| 擦写单位 | 扇区(4KB~64KB) | 字节 |
| 擦写寿命 | 1万~10万次 | 10万~100万次 |
| 写入速度 | 快(μs级) | 慢(ms级) |
| 典型容量 | MB~GB | KB~几十KB |
| 典型用途 | 程序代码、固件 | 配置参数、校准值 |
选型建议: 需要频繁改少量数据 → EEPROM;需要存大量程序 → Flash。别用 Flash 模拟 EEPROM,除非你做好了磨损均衡和坏块管理。
1.6 四种存储器的关系与选型逻辑
下面这张图把四种存储器的关系理清楚了。我每次做方案选型都会在脑子里过一遍这个逻辑。
1.7 实际选型中的几个坑
讲完理论,说点实战经验。选型时这几个问题我几乎每次都会被问到:
- Flash 和 EEPROM 能互相替代吗? 不能。Flash 擦写单位大,频繁改数据会快速磨损。EEPROM 容量小,存不了程序。
- 为什么有些单片机内部既有 Flash 又有 EEPROM? 分工不同。Flash 跑程序,EEPROM 存配置。有些芯片用 Flash 模拟 EEPROM,但需要软件做磨损均衡。
- SRAM 和 DRAM 怎么选? 小容量(<1MB)选 SRAM,简单可靠。大容量选 DRAM,但得配刷新控制器。
重要提醒: 选型时一定要看数据手册的“擦写寿命”和“数据保持时间”两个参数。我曾经选了一款标称 10 万次擦写的 Flash,结果在高温环境下 3 万次就挂了——环境温度会加速老化,这个很多人忽略。
1.8 本章小结
四种存储器各司其职:RAM 管运行、Flash 管程序、EEPROM 管参数、ROM 已成历史。选型时抓住三个核心:掉电保持、擦写粒度、寿命次数。搞清楚了这些,后面排查存储器故障时才能快速定位问题。
嗯,这一章就到这里。记住:存储器选型错了,后面调试再牛也救不回来。