news 2026/8/30 12:01:08

QspiNAND选型指南:可穿戴设备存储从NOR到NAND的进阶之路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QspiNAND选型指南:可穿戴设备存储从NOR到NAND的进阶之路

做穿戴设备的朋友应该都有这种感觉:选一颗存储芯片,比选主控还纠结。内部Flash只有那么几MB,固件一膨胀、日志一累积、OTA包一下来,马上见底。翻来覆去就是NOR、SD卡、eMMC三选一,各有各的憋屈。看到Winbond(华邦)放出1Gb QspiNAND的消息,我第一反应是:这个容量和接口的组合,正好卡在可穿戴和低功耗IoT设备最缺的那一档。这颗料到底解决了什么问题,和老的NOR Flash方案差在哪,量产时有哪些坑要提前填,我用一篇完整的选型笔记讲清楚。

1. 可穿戴与低功耗IoT的存储困局:一颗料卡住整个产品

1.1 小设备为什么比手机更难选存储

手机选存储很简单:上UFS、上eMMC,容量越大越好在,主控和PCB都扛得住。但可穿戴设备完全不是这个逻辑。手环、智能手表、血氧仪、温湿度传感器、资产追踪标签,这些产品的PCB可能只有指甲盖大小,电池容量几百毫安时,主控往往是Cortex-M系列或者低端SoC,根本没有SD/MMC控制器,也不方便外挂eMMC。

更麻烦的是,小设备的固件和资源需求却在肉眼可见地膨胀。一个带图形界面的彩屏手环,字库、图标资源、蓝牙协议栈、传感器算法库,随随便便就吃掉几MB;如果再叠加一个轻量级AI模型做心率或睡眠分析,那几十MB也不够塞。早期那种"内部Flash 512KB就够用"的时代已经过去了。

这时候就出现了一个尴尬的断层:小容量NOR便宜,但超过16MB、32MB之后价格直线上升;大容量eMMC性能和容量都够,但接口重、初始化慢、对低端主控不友好;SD卡体积大、连接器不可靠、供电要求高,放在穿戴设备里就是找罪受。这个断层,正好是SPI接口的NAND Flash可以填补的位置。

1.2 从"能跑就行"到"能OTA升级"的需求演进

前几年大家做IoT设备,存储方案很简单:程序放内部Flash,数据能不存就不存,实在要存就外挂一颗几Mbit的EEPROM。但现在用户对设备的要求变了,存储需求也跟着涨:

  • 离线数据采集:环境监测设备每隔几秒就要存一条带时间戳的记录,一天能产生几十到几百KB数据,跨越多天就需要MB级空间。
  • 固件OTA升级:哪怕固件只有2MB,升级时为了稳妥,往往需要下载完整镜像到独立分区,预留空间就要翻倍。
  • 日志与故障诊断:设备出问题后,厂商希望拿到运行日志,这需要循环覆盖的日志分区。
  • 资源热更新:彩屏设备的主题、字体、语音包,经常需要从云端下发替换,不能每次都用整包固件带着走。

这些需求叠加在一起,内部Flash根本扛不住。另一个关键是OTA策略:现在主流做法是A/B分区或者下载区+解压区。无论哪种,设备端都需要一块比固件本体大得多的存储空间。我见过不少项目因为存储容量不够,OTA只能设计成"先擦后写",一旦升级中途掉电或网络异常,设备直接变砖。这是典型的省小钱花大钱。

1.3 现有方案的尴尬:不是不能用,是别扭

先说NOR Flash。Winbond的W25Q系列在行业里用得非常广,8MB、16MB、32MB的SPI NOR在MCU项目里几乎是标配。NOR的优势是支持XIP(片上执行)、随机读取快、可靠性高,坏块管理都省了。但到64MB以上,NOR的价格就很不好看,而且大容量NOR的写入速度并不快,反复擦写寿命也有限。对"要大容量存数据"的需求,NOR属于能用但性价比差。

再说eMMC。它自带FTL(闪存转换层),有坏块管理、磨损均衡,容量从4GB起步,对应用层非常友好。但低功耗可穿戴设备的主控大概率没有eMMC控制器,要用SDIO/MMC接口就得额外加芯片或选更贵的主控,功耗和体积也不划算。eMMC的启动流程对MCU项目来说也太重。

SD卡就更不用说了,连接器+电平转换+供电管理,折腾半天还不如直接在PCB上焊一颗Flash省心。

所以市场其实一直缺一类产品:容量在64MB到256MB之间、接口轻量、功耗低、价格适中,开发难度又不会像裸调NAND那么高。Winbond的1Gb QspiNAND,瞄的正是这个档位。

2. QspiNAND到底是什么:接口、颗粒结构和我为什么先看它

2.1 名字拆解:QSPI是接口,NAND是本质

先把这个名字拆开看。NAND是闪存颗粒的存储结构,特点是按页写入、按块擦除、存在坏块、需要ECC(纠错编码);QSPI是Quad SPI的缩写,也就是四线串行接口。合起来就是用四线SPI接口访问的NAND Flash,注意,它还是Flash,不是带控制器的存储卡。

很多人一看到NAND就发怵,觉得要处理坏块、要算ECC、要搞磨损均衡,太复杂。但QspiNAND这类产品的思路是:把一部分管理功能尽量在颗粒内部做掉,或者用更成熟的软件方案兜底,把接口复杂度控制在MCU能接受的范围。这和直接贴一片BGA封装的大容量NAND完全不是一个量级的工作量。

Winbond做QSPI接口存储是有积累的,W25Q系列的NOR铺货量非常大,生态很成熟。现在推出QspiNAND,可以复用很多QSPI控制器的已有资源,主控侧的命令格式和传输时序跟NOR有不少相似的地方,这对嵌入式工程师来说学习成本会低很多。

2.2 内部结构:从Die到Page/Block,把1Gb拆开看

NAND的基本组织结构是:一片Die,Die里分多个Plane,Plane里分多个Block,Block里分多个Page。Page是读写的最小单位,Block是擦除的最小单位。以常见的SPI NAND为例,Page大小一般是2KB或4KB,Block通常包含64到128个Page。

用1Gb来算一笔账:1Gb等于128MB,按4KB Page计算,总共有32768个Page;如果按每个Block 128个Page算,就有256个Block。按2KB Page、64Page/Block算,就是65536个Page、1024个Block。这个数量级是什么意思?意味着单个Block坏了,对整个容量影响非常小,坏块替换策略不需要太复杂。

但要注意,NAND的Page不是随机访问的,只能按顺序写入。比如一个4KB Page已经写了部分数据,想再往同一个Page剩余位置塞数据,多数颗粒不支持,必须先擦除整个Block再重写。这在文件系统或FTL设计上是个关键约束。很多从NOR转过来的人在这里栽过跟头:以为像操作EEPROM一样,读改写同一个地址就行,结果读出来全是FF,写也写不进去。

2.3 为什么不用NOR硬扛:容量和写入速度的物理差距

NOR和NAND的差异不是简单的"容量不同",而是底层存储单元的电气特性不同。NOR单元的读取速度快、支持随机访问,但写入和擦除慢;NAND单元的写入密度高、擦写快,但读取速度相对NOR要慢一些,而且不支持XIP。

在可穿戴设备里,代码执行通常放在内部Flash或外挂NOR里,因为MCU可以XIP直接从NOR取指,省掉"先拷贝到RAM再执行"这一步。但资源文件、日志、OTA包这类数据不需要XIP,它们更适合放到NAND里,NAND的顺序读写吞吐能力反而比NOR强,大块数据搬运效率更高。

所以一个很常见的合理架构是:小容量NOR放Bootloader和关键代码,QspiNAND放文件系统、日志、OTA镜像、资源包。NOR管代码执行,NAND管数据存储,各干各的活。不要指望用一颗QspiNAND替代NOR,也不要指望NOR去承担大容量数据存储,物理特性决定了这种分工。

3. 1Gb容量能装什么:从固件、日志到OTA镜像的容量账

3.1 先把128MB拆开看

1Gb听着不大,但在可穿戴和IoT设备里已经不算小了。128MB做分区规划,可以覆盖很多典型场景。我按一个带彩屏、有蓝牙、支持OTA的手环产品做示意:

分区用途容量说明
Bootloader0.5MB启动入口,尽量不更新
固件A(当前运行)8MB包含RTOS、GUI、协议栈、算法
固件B(OTA备份)8MBA/B升级用的双备份
资源区32MB字库、图标、主题、语音
日志区16MB循环覆盖的系统日志
用户数据区32MB运动记录、健康数据、配置
OTA下载缓冲16MB临时放下载的升级包
文件系统元数据+坏块替换区12.5MB预留损耗和FTL开销
总占用125MB接近128MB

这只是个示例布局,实际产品未必需要A/B分区,但可以看到,128MB做资源热更新、日志回传和OTA冗余是足够从容的。如果只想要一块"能塞固件+日志"的存储,那64MB甚至32MB也够用,但1Gb给我们留了余量。

3.2 OTA升级容量怎么算

OTA是最容易忽略容量的场景,我来详细算一笔账。假设当前固件镜像为10MB,云端下发的是压缩包,假设压缩后8MB。

如果做A/B分区,需要两个固件分区各10MB,加上下载缓冲8MB,至少要28MB。如果只做单分区,最简单的做法是:先把压缩包下载到下载区,校验成功后擦除固件区,再把压缩包解压写入固件区。那也需要下载区8MB+固件区10MB,但中间擦除和写入过程中设备不能断电,否则现场变砖。

更稳妥的单分区做法是:下载区8MB,再加一个解压暂存区10MB,解压并校验完整后再一次性写入固件区。这样中间任何一步失败,固件区还是旧的,可以回滚。这个方案需要28MB。和A/B方案所需的28MB其实很接近,只是少一份运行固件的空间占用。

128MB的QspiNAND做上面的OTA方案完全没压力。如果固件膨胀到20MB甚至30MB,128MB依然够用。这也是我推荐把1Gb作为甜点容量的原因:它既能覆盖今天的固件规模,也留了未来两三个大版本的空间。

3.3 日志和采集数据怎么攒

对物联网数据采集场景来说,存储容量直接决定了"采集频率-回传周期"这条曲线。拿一个环境监测设备举例:传感器每10秒存一条32字节的记录,一天产生约276KB。如果回传周期是一周,一周就是1.93MB;如果回传周期是一个月,约8.3MB。

如果设备本地缓冲是64MB,可以存约7个月的周报数据,或者2个月的日报数据,这个量级对很多LoRa、NB-IoT设备来说非常舒服,因为可以降低回传频率、省电、省流量。如果设备本地缓冲只有4MB,那就得频繁回传,还要在弱网情况下反复重传,功耗和流量成本反而更高。

但要注意:NAND适合顺序写入,日志系统最好设计成"追加写模式",不要频繁随机改写小区域,否则磨损均衡做不好,某些Block会提前报废。

4. 功耗、抗掉电和寿命:这颗料真正要过的三道坎

4.1 低功耗场景下的电流怎么看

QspiNAND的静态电流一般能做到很低,但真正的功耗大头在读和写时。以主流SPI NAND颗粒为参考,读操作电流可能在几十毫安级别,写/擦除电流可能到几十甚至上百毫安。这个数字看起来吓人,但实际运行中是脉冲式的,持续时间短,平均功耗完全可以控制。

在低功耗系统里,关键是"平时让它睡眠,用时快速唤醒"。选择QspiNAND时要关注几个参数:待机电流、深度掉电电流、从掉电模式唤醒的时间。如果主控经常进入sleep,Flash也应该进入standby或deep power-down,而不是一直保持active状态。有些颗粒支持深掉电模式,电流可以降到个位数微安,对年抛型纽扣电池设备很关键。

另外要注意QSPI接口本身在高速翻转时也会有动态功耗。如果设备大多数时间处于睡眠状态,偶尔被唤醒做一次数据记录,那接口频率其实不用拉太高,中等速率反而有利于降低功耗。对功耗敏感的产品,可以欠压或者降低时钟频率来换功耗,但要在性能和数据完整性之间找平衡。

4.2 掉电保护:NAND最容易被低估的软肋

NAND写Page是一个"编程"动作,时间相对长,如果编程过程中掉电,这个Page可能处于不确定状态,轻则数据错,重则损坏。很多开发者在实验室里发现不了这个问题,因为电源稳定;一到客户现场,电池供电、触点接触不良、用户直接抠电池,问题就全出来了。

应对思路有几种,我在产品里一般会组合使用:

  • 硬件掉电检测:MCU通过ADC或比较器检测电源跌落,在电压低于阈值时立刻停止Flash操作,并给关键的元数据区做标志。
  • 双备份关键区:Bootloader、分区表、文件系统超级块这些关键区域做两份,写入时先写备份再写主拷贝,启动时校验主拷贝,无效就回退。
  • 脏标志与日志:在擦除/写入前先写一个"操作中"标志,启动时看到这个标志就知道上次操作没完成,做恢复流程。

这些策略会让固件复杂不少,但QspiNAND这类产品本来就是给有一定软件能力的团队用的。如果不想处理这些,那大概率还是得回到NOR Flash的舒适区,接受容量和价格的上限。

4.3 寿命和ECC:能用多久要会算

NAND Flash有擦写寿命上限。SLC颗粒一般标称5万到10万次擦写,MLC只有几千到一两万次。1Gb QspiNAND作为工业向产品,大概率是SLC或等效SLC设计,寿命相对乐观,但也不能浪费。

算一下寿命预期:假设一台设备每天写入50MB日志,128MB分区可用约80MB(扣除文件系统开销和坏块预留)。用简单的循环覆盖方式,每天写约半个分区,那每天的擦写次数在0.5到1次P/E之间。按5万次P/E算,可以用50000天,远超产品生命周期。

但现实不会这么理想。如果应用频繁修改小文件,比如每几秒就更新一下传感器当前值,每次都要擦写同一个Block,磨损就会集中。解决办法是使用带磨损均衡的文件系统或FTL层,让写入均匀分布到所有Block。

ECC是另一个绕不开的话题。NAND出厂就有坏块,使用中还会产生新坏块,所以读取时要做ECC纠错。有些SPI NAND颗粒内置了ECC,主控只需读取状态寄存器判断是否发生不可纠错错误;有些则需要主控自己做ECC。选型时一定要确认这一点,否则后面驱动工作量会大很多。我的建议是优先选内置ECC的颗粒,至少能省掉MCU侧大量运算开销,也减少固件出bug的概率。

5. 从选型到量产的坑:驱动适配、坏块管理与PCB布局

5.1 先确认主控QSPI控制器的能力,别被"支持QSPI"骗了

很多MCU宣传自己带QSPI接口,但它到底支持什么命令、支持多大频率、有没有DMA、能不能双bank连续访问,都得仔细看参考手册。我见过一个项目,主控说支持QSPI,结果只有单线SPI模式可用,Quad模式压根没接线;还有的主控对QSPI NAND的Page Program命令支持不完整,只能通过普通SPI模式写,速度直接掉回单线。

所以在选型阶段,第一步不是看Flash datasheet,而是确认主控侧的QSPI控制器支持哪些命令序列,支不支持读状态寄存器、写使能、页编程、块擦除、读ID这些基本操作。还可以做一个小测试板,用逻辑分析仪抓一遍读ID和擦写命令,确认时序没问题再继续。

如果主控的QSPI控制器实在太弱,也可以退一步用普通SPI模式跑QspiNAND,只是吞吐会低一些。可穿戴设备的数据量通常不大,不是所有场景都需要Quad模式跑满,这个折中是可以接受的。

5.2 坏块管理和磨损均衡到底谁来干

这是QspiNAND项目里最大的分水岭。有的团队只用它存"一次性写入"的资源包,坏块管理都不做,擦写一次就不动了,那确实简单;但只要涉及动态写入和擦除,就必须有坏块管理和磨损均衡。

常见做法有三种:

  • 方案A:裸驱动+自己做简单坏块表。出厂时扫描所有Block,标记坏块,维护一张表;写入时跳过坏块。磨损均衡可能只做简单的"轮询写",适合日志类顺序写入场景。
  • 方案B:使用带FTL的SPI NAND方案。部分颗粒内部会实现地址映射、坏块管理、磨损均衡,对外提供类似"逻辑扇区读写"接口,主控侧简单很多。Winbond在NOR上的W25Q生态很成熟,NAND产品线也在往"降低开发门槛"方向走。如果有内置FTL的产品,对中小团队非常友好。
  • 方案C:使用文件系统组件,比如LittleFS、SPIFFS,或一些专门支持NAND的嵌入式文件系统。LittleFS自带磨损均衡和掉电保护,但对NAND的坏块管理支持需要权衡;很多文件系统是为NOR设计的,对NAND的"只能按页写、按块擦"约束适配得并不好。

我的经验是:如果是资源包+日志类的项目,方案A够用且代码透明;如果涉及文件管理、多目录、频繁增删,那么方案C更合适;如果想要开发速度快、又不想自己处理坏块,那就找方案B的颗粒或者模块。

5.3 硬件布局和电源:小设备上的隐形坑

存储芯片本身不大,但在可穿戴设备的狭小PCB上,摆放位置和电源滤波会影响整机稳定性。说几个我踩过的和见过的问题:

  • 去耦电容不能省:Flash在页编程时会有电流尖峰,如果电源纹波太大,可能导致写入错误。0.1uF和1uF的组合电容尽量靠近VCC引脚。
  • QSPI走线要等长:Quad模式下四根IO线最好保持等长,避免高速翻转时信号偏移。对低主频应用影响不大,但只要跑高频,这点就要注意。
  • 远离天线区域:Flash的走线和封装可能引入噪声,干扰蓝牙或WiFi天线。布局时尽量把Flash放在天线辐射区之外,中间加地过孔隔离。
  • 温度测试别省:穿戴设备贴近皮肤,温度可能到40多度;户外设备可能在零下工作。NAND在不同温度下的读写行为和漏电率有差异,量产前要做高低温读写测试。

还有一个很多人忽略的点:烧录。如果是小批量打样,用编程器直接烧录没问题;但量产时,最好在产线上通过主控的烧录接口先把Bootloader和分区表写进去,再让设备自己从云端拉取资源包和固件。这样能避免编程器座子在批量过程中带来的接触不良,也方便生产后在线升级。

6. 是不是所有低功耗设备都该换QspiNAND:和NOR、eMMC的取舍

6.1 三类方案的边界到底在哪

先做一张对照表,方便决策时一眼看清:

维度SPI NORQspiNANDeMMC
典型容量1MB~128MB64MB~1Gb4GB~128GB
XIP执行支持不支持不支持
读随机访问相对慢相对慢
连续写吞吐
坏块管理不需要需要芯片内部已做
磨损均衡一般不关注需要软件策略芯片内部已做
接口复杂度高(MMC/SDIO)
主控要求极低需要QSPI/SPI需要SD/MMC控制器
典型成本中小容量便宜甜点容量性价比高大容量便宜但门槛高
适合场景代码执行、小数据量日志、OTA、资源存储视频、大文件系统、Linux启动

这张表最关键的是"接口复杂度"和"主控要求"这两行。如果你的主控根本没有SD/MMC控制器,那eMMC直接出局;如果你的固件需要XIP,那NOR依然是刚需,只是可以和大容量NAND共存。

6.2 什么时候继续用NOR,什么时候换QspiNAND

我自己的判断逻辑是:

  • 如果整个固件加资源不超过16MB,且没有什么动态数据要存,继续用NOR,省事。
  • 如果固件超过16MB,或者需要本地存几十MB的日志、资源包、OTA包,那就认真考虑QspiNAND。
  • 如果要做Linux或RT-Thread + 文件系统 + 本地数据库,需要几百MB甚至几GB空间,那直接上eMMC或SD NAND。

所以QspiNAND不是万能的,它是填补"NOR容量不够、eMMC过重"这个中间档位的产品。对可穿戴和低功耗IoT这种"主控不强、空间不大、又要存不少数据"的场景,它的优势很明显。

6.3 选型决策清单:动手前先回答这10个问题

在把QspiNAND放进BOM之前,我会建议团队把这几个问题过一遍:

  1. 主控有没有可用的QSPI控制器,支持哪些命令?
  2. 是否必须支持XIP?如果是,NOR不能完全替代。
  3. 有没有掉电保护机制,是否需要掉电标志和恢复流程?
  4. 数据写入模式是大块顺序写还是频繁小文件随机写?
  5. 有没有文件系统需求,文件系统对NAND的适配是否成熟?
  6. 是否需要ECC,颗粒内置还是主控算?
  7. 有没有多分区、A/B升级的需求?
  8. 产品工作温度范围是什么,Flash是否满足?
  9. BOM成本目标是多少,同容量NOR和NAND价差是否能接受?
  10. 团队有没有FTL/坏块管理的开发经验?

这些问题不答完,就不要急着画原理图。存储选型看似简单,但它涉及固件架构、OTA策略、量产测试和售后运维,是一家公司产品成熟度的分水岭。我见过不少团队前期低估这个决策的复杂度,等到量产前才发现存储方案不可靠,被迫返工,那代价不是省下的几块钱芯片差价能补回来的。

最后分享一个我自己的小习惯:拿到任何一颗新Flash,我不会先看datasheet里的性能表,而是先写一个最简单的"读ID+擦除+写入+读回"的裸机测试程序,在最小系统板上跑一遍,用示波器或者逻辑分析仪把时序抓下来,确认主控和颗粒的握手没问题,再开始设计产品功能。这一步能提前暴露绝大多数接口兼容性问题,比任何仿真都管用。QspiNAND这种处在NOR和eMMC之间的"中间派"芯片,尤其需要这种谨慎验证。如果验证通过,它会是可穿戴和低功耗IoT设备里非常能打的一颗存储主力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 12:00:25

curl 64位二进制的本质:ABI兼容性与定制化构建指南

简介:本资源为适用于Windows平台的64位curl开发库二进制包,面向C/C开发者及需要集成HTTP/HTTPS/FTP等协议能力的桌面应用、工具链或嵌入式项目工程师。它解决了在VS2017环境下快速接入稳定、高性能网络传输能力的问题,避免从源码编译的复杂依…

作者头像 李华
网站建设 2026/8/30 11:58:35

Java+Oracle医院信息管理系统数据库课程设计实战指南

简介:这是一份面向数据库初学者与Java开发入门者的Oracle课程设计实战资源,聚焦医院信息系统数据库建模与前后端交互实现,适用于课程设计、大作业及工程实训等教学场景。资源包共45个文件,含36个Java源码(覆盖DAO、Ser…

作者头像 李华
网站建设 2026/8/30 11:57:59

视觉优先的多模态RAG:土木标准图智能审查与合规检查实践

土木标准图的合规审查,在设计院和审图机构里至今仍是一条高度依赖人工的工序。审查人员拿到一套 PDF 图纸,需要逐页翻图、定位构件、对照规范条文,再把结论整理成审图意见。这个过程不仅慢,而且消耗大量有经验的工程师时间。PlanS…

作者头像 李华
网站建设 2026/8/30 11:57:16

多智能体正反博弈:AI数学发现的可信新范式

如果一个AI系统告诉你,它发现了一个可能改写教科书的新数学规律,你的第一反应是什么?大概率是怀疑。但如果这个AI不是单独给出答案,而是内部先有一群Agent互相攻击——一个Agent提出规律,另一个Agent拼命找反例&#x…

作者头像 李华
网站建设 2026/8/30 11:53:01

所有权机制日常巡检的有效方法

所有权机制日常巡检的有效方法巡检 Rust 项目的所有权问题时,我不会先去寻找复杂的生命周期注解。更常见的隐患往往藏在容易通过编译的代码里:为了省事而复制大对象、把共享状态长期包在 Arc 中,或者让锁守卫跨过耗时操作。这些写法不一定错误…

作者头像 李华
网站建设 2026/8/30 11:52:25

Paddle Lite 模型转换踩坑实录:TFLite 转 .nb 的算子与目标平台排查

分享一个我这周刚踩完的坑:把一个 OCR 检测模型从 .tflite 转成 Paddle Lite 的 .nb 格式,命令里带了 --target 参数指定目标平台,结果各种报错来回折腾,光日志就看了好几轮。这个问题看起来很小,但涉及到的知识点其实…

作者头像 李华