1. NOR Flash基础与选型
大家好,我是你们的嵌入式存储讲师。今天咱们聊聊NOR Flash的基础知识。说实话,这玩意儿看着简单,但坑不少。我最早接触NOR Flash是在做一款工业控制板时,选型没注意,结果批量生产后问题不断。嗯,从那以后,我对基础选型就格外上心了。
1.1 存储单元结构:浮栅晶体管
NOR Flash的核心,说白了就是浮栅晶体管。你想想看,普通的MOS管只有一层栅极,而NOR Flash的晶体管有两层:控制栅和浮栅。浮栅被二氧化硅绝缘层包裹着,像个孤岛。
为什么能存数据?因为浮栅可以捕获电子。有电子代表“0”,没电子代表“1”。这就是最基础的存储原理。
关键点:浮栅中的电子不会因为断电而消失。这就是非易失性的根本原因。我见过不少新手以为Flash掉电会丢数据,其实完全不会。
写入数据时,需要在控制栅加高电压(约10-12V),通过热电子注入方式让电子穿过绝缘层进入浮栅。擦除时则相反,在衬底加高电压,把电子拉出来。这个过程叫Fowler-Nordheim隧穿。
个人经验:我在调试一款车规级NOR Flash时发现,擦除操作对电压稳定性要求极高。电压波动超过5%,擦除就可能失败。所以电源设计一定要留足余量。
1.2 NOR Flash vs NAND Flash
很多人问我:NOR和NAND到底怎么选?我一般会反问:你的应用场景是什么?
咱们直接看对比表:
| 特性 | NOR Flash | NAND Flash |
|---|---|---|
| 读取速度 | 快(支持随机读取,类似RAM) | 慢(需要先读入页缓存) |
| 写入速度 | 慢(按字节/字写入) | 快(按页写入,批量操作) |
| 擦除速度 | 慢(按扇区擦除,约0.1-1秒) | 快(按块擦除,约1-10毫秒) |
| 密度 | 低(通常1Gb以下) | 高(可达1Tb以上) |
| 可靠性 | 高(10万-100万次擦写) | 中等(1万-10万次擦写) |
| 接口 | SRAM-like接口,简单 | 复杂,需要FTL层 |
| 典型应用 | 代码存储、启动引导 | 大容量数据存储 |
看到没?NOR Flash最大的优势是随机读取快,而且支持XIP(片上执行)。这意味着CPU可以直接从NOR Flash里取指令执行,不需要先把代码拷贝到RAM里。我做过一个项目,用NOR Flash做Bootloader,上电后200毫秒就完成了系统启动,NAND根本做不到。
避坑指南:我曾经在一个项目里用NAND Flash存启动代码,结果发现启动时间长达3秒,而且坏块管理搞得头大。后来换成NOR Flash,问题全解决了。所以,存代码用NOR,存数据用NAND,这个原则基本没错。
1.3 关键电气参数
选型时,这几个参数你必须盯死:
读取时间
NOR Flash的读取时间通常在50-120ns之间。我习惯用70ns以下的型号,这样CPU不用插入等待周期。你想想看,如果CPU主频200MHz,一个时钟周期才5ns,等一个读取就要等十几个周期,性能损失太大了。
写入时间
按字节写入一般需要5-10μs。注意,这是单字节的时间。如果你要写大量数据,建议用页写入模式,一次写256字节,时间能缩短到1ms以内。
擦除时间
扇区擦除(4KB-64KB)通常需要0.1-1秒。整片擦除可能长达10秒。我在做OTA升级时,就因为这个参数吃过亏——擦除时间太长,导致升级过程中看门狗超时复位了。
我的做法:擦除前先关掉看门狗,或者把擦除操作拆分成多个小扇区,每擦完一个就喂一次狗。这样既安全又可靠。
功耗
读取时电流约5-15mA,写入时约20-40mA,擦除时最高,可达50-100mA。做低功耗设计时,要特别注意擦除操作的功耗峰值。我有个手持设备项目,就是因为没注意这个,电池续航直接砍半。
耐久性
NOR Flash的擦写次数一般在10万次以上,高端型号可达100万次。但要注意,这是指在25°C环境下的数据。温度每升高10°C,耐久性可能下降一半。做工业级产品,我建议按标称值的1/5来设计寿命。
1.4 主流厂商选型指南
目前主流厂商就几家,我按个人经验排个序:
- Winbond(华邦):性价比之王。W25Q系列我用得最多,尤其是W25Q64(8MB)和W25Q128(16MB)。读写速度快,文档也写得好。
- Macronix(旺宏):可靠性高。MX25系列在工业领域口碑很好。我有个客户做电力设备,指定要用Macronix的片子。
- Micron(美光):高端选择。MT25系列性能强悍,但价格也贵。适合对性能要求极高的场景。
- ISSI:老牌厂商。IS25系列稳定性不错,但型号更新慢。
- GigaDevice(兆易创新):国产替代首选。GD25系列性价比突出,而且供货稳定。最近几年我很多项目都转用GD了。
选型建议:我个人习惯先看容量需求,再看接口(SPI还是Parallel),最后看温度范围。工业级一定要选-40°C到85°C的型号。别为了省几毛钱选商业级,到时候现场出问题,返修成本够你买几百片工业级了。
最后,给大家画个知识结构图,把今天的内容串起来:
好了,这一章的内容就这些。记住,选型不是看参数表那么简单,一定要结合你的实际应用场景。下一章咱们会深入NOR Flash的接口协议,到时候见。