3、外部存储设备选型:SPI Flash、SD 卡、NAND Flash 对比
做 LVGL 图片加载,第一步不是写代码,而是选存储。我见过不少项目,代码写完了才发现存储带宽不够,或者容量差一点,最后只能推倒重来。今天咱们就把三种主流方案掰开揉碎,看看它们各自适合什么场景。
3.1 三种存储的核心差异
先看一张总览表,后面再逐个细聊。
| 参数 | SPI Flash | SD 卡 | NAND Flash |
|---|---|---|---|
| 接口类型 | SPI(4线/6线) | SDIO / SPI | 并行 / ONFI / Toggle |
| 典型容量 | 1MB ~ 256MB | 1GB ~ 512GB | 128MB ~ 8TB |
| 读取速度 | 10~80 MB/s | 10~100 MB/s | 50~400 MB/s |
| 写入速度 | 1~10 MB/s | 5~40 MB/s | 10~200 MB/s |
| 坏块管理 | 无(出厂全好) | 内置控制器 | 需软件处理 |
| 文件系统 | LittleFS / SPIFFS | FAT32 / exFAT | UBIFS / YAFFS |
| 引脚数量 | 6~8 个 | 6~9 个 | 20~48 个 |
| 典型成本(每MB) | 较高 | 极低 | 最低 |
核心结论:SPI Flash 适合小容量、高可靠性场景;SD 卡适合大容量、快速开发;NAND Flash 适合大容量、高性能但需要更多软件投入。
3.2 SPI Flash:小而美的选择
SPI Flash 是我个人用得最多的方案。为什么?因为它简单、稳定、引脚少。一个 6 引脚的芯片就能搞定 16MB 存储,对于 LVGL 的图片资源来说,16MB 已经能存不少东西了。
优点:
- 硬件设计简单,4 条数据线就能跑
- 没有坏块问题,出厂就是全好的
- 读取速度快,QSPI 模式能到 80MB/s
- 功耗低,适合电池设备
缺点:
- 容量天花板低,256MB 基本到头了
- 写入速度慢,擦除一个扇区要几十毫秒
- 单位成本高,大容量场景不划算
我的经验:如果图片总量在 32MB 以内,优先选 SPI Flash。我曾经在一个智能家居面板上用了 W25Q64(8MB),存了 30 张 240×240 的 16 位色图片,绰绰有余。而且 SPI Flash 的驱动代码网上到处都是,移植起来特别快。
3.3 SD 卡:大容量首选
SD 卡的优势很明显——容量大、便宜、即插即用。你想想看,一张 32GB 的 TF 卡才十几块钱,能存多少张图片?
优点:
- 容量巨大,GB 级别起步
- 内置控制器,坏块管理、磨损均衡都帮你做了
- 文件系统成熟,FAT32 在 PC 上直接读写
- 热插拔,方便调试和更新资源
缺点:
- SDIO 接口占用引脚多,至少 6 个
- SPI 模式速度慢,只有 10~20MB/s
- 功耗高,不适合电池供电
- 可靠性不如 Flash,接触不良会掉卡
避坑指南:我曾经在一个户外设备上用了 SD 卡,结果客户反馈说图片偶尔加载不出来。查了半天,发现是 SD 卡座在振动环境下接触不良。后来换成 SPI Flash + 少量缓存,问题就解决了。所以,如果设备有振动或高温环境,慎用 SD 卡。
3.4 NAND Flash:高性能但高门槛
NAND Flash 是嵌入式存储的「重武器」。它速度快、容量大、成本低,但代价是软件复杂度高。
优点:
- 读取速度极快,并行接口能到 400MB/s
- 容量大,TB 级别不是问题
- 单位成本最低,适合海量存储
缺点:
- 有坏块,出厂就有,使用中还会产生
- 需要 ECC 纠错和坏块管理
- 文件系统复杂,UBIFS 或 YAFFS 学习成本高
- 引脚多,PCB 布局麻烦
什么时候用 NAND?如果你的图片库超过 256MB,或者需要同时存储视频、日志等大文件,NAND 是唯一选择。但要做好心理准备,软件工作量至少是 SPI Flash 的 3 倍。
3.5 选型决策流程
说了这么多,到底怎么选?我画了一张决策图,你可以照着走一遍。
3.6 实际项目中的选择建议
根据我这些年做过的项目,给你几个具体建议:
- 智能家居面板、小屏设备:图片总量 8~32MB,用 SPI Flash 就够了。W25Q64 或 W25Q128 是经典选择。
- 车载仪表、工控 HMI:图片总量 64~256MB,需要高可靠性。建议用 SPI Flash 或 SLC NAND,不要用 SD 卡。
- 消费电子、开发板:图片总量 1GB 以上,需要频繁更新资源。SD 卡最方便,PC 上拷进去就能用。
- 视频播放、多图库应用:图片总量 1GB 以上,且需要高速加载。上 NAND Flash + UBIFS,性能拉满。
我的习惯:做原型阶段先用 SD 卡,因为调试方便。等产品定型了,再根据实际容量和成本换成 SPI Flash 或 NAND。这样前期开发快,后期量产成本可控。
3.7 本章小结
三种存储方案各有千秋,没有绝对的好坏。选型的关键是搞清楚你的图片总量、引脚预算、性能要求和可靠性需求。嗯,这里要注意一点:别只看容量,还要看读取速度和软件复杂度。有时候省了硬件成本,却多花了三个月开发时间,得不偿失。