1. 嵌入式存储选型:从“够用”到“好用”的思维转变
做嵌入式开发这些年,我经手过的项目少说也有几十个,从简单的温湿度传感器到复杂的工业网关,几乎每个项目都绕不开一个核心问题:存储芯片到底该选哪个? 早期我也犯过不少错,要么为了省几块钱选了便宜的,结果量产时掉数据掉得怀疑人生;要么盲目追求高性能,成本上去了,功能却没用到一半,被老板一顿数落。
所以今天,我想和你抛开那些枯燥的数据手册,聊聊在真实项目中,面对 SPI NAND、SD NAND 和 eMMC 这三种主流方案时,我们到底该怎么选。这不仅仅是看容量和速度那么简单,它关系到你产品的稳定性、成本、开发周期,甚至是你未来半夜会不会被产线电话吵醒。我见过太多工程师只盯着“最大读写速度”这个参数,却忽略了接口复杂度、坏块管理、掉电保护这些在实际运行中能要你命的关键点。
简单来说,你可以把这三者想象成三种不同的交通工具:SPI NAND 像共享单车,便宜、灵活,随取随用,但载重和速度有限,适合短途通勤;SD NAND 像家用轿车,价格适中,性能均衡,自带“安全气囊”(ECC纠错)和“ABS防抱死”(坏块管理),能满足家庭日常和轻度商务出行;而 eMMC 则像高铁,集成度高、速度快、运力大,但你需要专门的“车站”(控制器)和“轨道”(高速总线)来对接,初期投入大,适合大规模、高频次的运输需求。
接下来的内容,我会结合我在工业控制、消费电子这些领域的踩坑经验,带你深入这三种技术的内部,看看它们在不同场景下的真实表现。我们会从最基础的接口和硬件设计聊起,一直深入到文件系统适配和长期维护的坑,目标只有一个:帮你下次做选型时,心里更有底,手更稳。
2. 技术解剖:三种存储的“五脏六腑”
要做出明智的选择,光看广告可不行,得拆开看“内脏”。我们得搞清楚它们各自是怎么工作的,优势和软肋分别在哪里。
2.1 SPI NAND:极简主义的利与弊
SPI NAND 可以看作是传统并行 NAND Flash 的一个“瘦身版”。它把复杂的并行数据线和控制线,精简到了区区几根 SPI(串行外设接口)线上,通常是 CLK、CS、MOSI、MISO 这四根。这个设计带来的好处立竿见影:
- 硬件设计极其简单:PCB 布局布线压力骤降,特别适合那些板子空间寸土寸金的产品,比如超小型的物联网传感器模组、可穿戴设备。你不需要为密密麻麻的地址/数据线头疼。
- 主控芯片要求低:几乎任何一款带 SPI 接口的 MCU(从几毛钱的 8 位机到主流的 ARM Cortex-M 系列)都能直接驱动它,无需额外的专用 NAND 控制器,大大降低了系统门槛和整体成本。
- 封装小巧:普遍采用 WSON8、USON8 这类超薄封装,厚度可以做到 1mm 以下,对厚度敏感的应用非常友好。
但是,“简单”的另一面往往是“把难题留给了开发者”。SPI NAND 把 NAND Flash 所有令人头疼的特性,几乎原封不动地暴露给了软件:
- 需要软件实现全功能管理:这包括坏块管理(BBM)、纠错码(ECC)、磨损均衡(Wear Leveling) 和垃圾回收(GC)。如果你直接往芯片里写数据,很快就会发现有些块坏了,数据读不出来;频繁擦写同一个区域,那个区域会率先“寿终正寝”;删除文件后空间不会自动释放……这些都需要你在文件系统层甚至驱动层自己实现。我早期用某款 SPI NAND 时,就因为没做完善的坏块管理,导致设备运行几个月后,固件升级频繁失败,排查到头秃。
- 性能瓶颈明显:SPI 接口的时钟频率有限(通常工作在 50MHz ~ 104MHz),即使采用 Dual/Quad SPI 模式提升吞吐量,其实际顺序读写速度也很难突破 40MB/s。对于需要频繁保存日志、缓存大量传感器数据的应用,这个速度可能会成为系统流畅度的瓶颈。
- 掉电风险高:这是 NAND 架构的先天问题:写入数据前必须先擦除整个块(Block)。如果在擦除或写入过程中突然断电,极易导致该块数据损坏甚至整个块失效。SPI NAND 自身没有硬件保护机制,全靠软件和电路设计(如加大电容维持短暂供电)来规避,可靠性设计挑战大。
一句话总结 SPI NAND:它给了你最大的硬件设计自由和最低的入门成本,但同时也把最复杂的存储管理包袱甩给了你。 它适合那些对成本极度敏感、存储操作不频繁(比如只是存储配置参数、偶尔记录事件)、且团队有足够精力打磨底层存储驱动和文件系统的项目。
2.2 SD NAND:披着SD卡外衣的“硬核战士”
SD NAND 这个名字可能会让人误解,它可不是一张小小的 TF 卡。你可以把它理解为一颗集成了 SD 控制器和 NAND 颗粒的、采用 LGA 封装、直接贴片焊接在 PCB 上的芯片。它巧妙地借用了成熟的 SD 卡协议和物理形态(引脚定义),但内核是针对嵌入式焊接式存储优化过的。
它的核心优势在于 “开箱即用”的完整管理能力:<


2636

被折叠的 条评论
为什么被折叠?



