只读分享解决方案文档原理方案设计📅 2026-09-21🔖 Rev 1.0✅ 长期有效
🔧解决方案&应用市场分析 -> 原理方案设计 -> SD_NAND_Flash_电路设计指南

SD_NAND_Flash_电路设计指南

生成时间 2026-09-21 11:02:38 长期有效

SD NAND 电路设计指南

SPI / SDIO 双模式 · 1-bit / 4-bit 总线 · 高速 / 低速 / 低功耗 / 动态可调 · VCC 负载开关断电控制 | 编制日期 2026-09-21 | 版本号 Rev 1.0

适用范围

本指南面向使用贴片式 SD NAND(LGA / BGA 封装,内置 NAND Flash + SD 控制器)作为板载存储的硬件与固件设计,覆盖原理图、器件选型、电源与低功耗、PCB Layout、初始化流程、可靠性与量产排查。常见供应商:米客方德 MKST、芯天下 XTSD、江波龙 Longsys、得一微、Zetta、SkyHigh 等,容量覆盖 128 MB ~ 64 GB。

重要前提

不同厂商、不同容量的 SD NAND 在支持的最高速率档位初始化时序要求峰值电流上存在差异。本文给出的是符合 SD Physical Layer Specification 的通用设计基线,落地前必须以实际器件 datasheet 为准二次核对,尤其是第 3 章的上下电时序与第 2 章的最高速率。

核心结论速览

  1. SPI 模式:接线最少(4 根信号线),速率低(通常 ≤25 MHz),适合小容量、低速、MCU 无 SDIO 外设的场景。
  2. SDIO 4-bit 模式:速率最高(Default Speed 12.5 MB/s、High Speed 25 MB/s 理论值),适合需要较高吞吐或跑文件系统的场景。
  3. 速率可调:400 kHz 初始化 → Default Speed 25 MHz → CMD6 切 High Speed 50 MHz,是标准且推荐的动态调节路径。
  4. 低功耗:SD NAND 没有 eMMC 那样的 SLEEP / AWAKE 指令,停时钟后的 Standby 电流仍在 100 µA 量级。要做到 µA 级待机,唯一可靠办法是用主控 GPIO 控制负载开关切断 VCC,并严格遵循"先收 IO、再断电"的顺序。

同系列文档

文档器件类型关注重点
SPI NOR 电路设计指南串行 NOR FlashQuad/QPI 提速、dummy cycles、XIP、DPD 低功耗
SPI NAND 电路设计指南串行 NAND Flash页/块管理、片内 ECC、坏块表、主机 FTL
并行NAND (PPI NAND) 电路设计指南8/16 位并行 NAND宽总线时序、ECC 引擎、40+ 引脚 Layout
eMMC 电路设计指南eMMC 5.0/5.1HS200/HS400、1.8 V VCCQ、DS 选通与等长
SD NAND 电路设计指南 本文贴片式 SD NANDSPI/SDIO 双模式、无休眠指令、VCC 负载开关断电
NAND MCP 电路设计指南多芯片合封存储多 die 与多 CE、双电源轨、HDI 扇出
并行NOR (PPI NOR) 电路设计指南并行 NOR Flash异步读时序、XIP、等待周期、总线扩展
PSRAM 电路设计指南伪静态 RAMOPI/HyperBus、刷新与延迟周期、XIP 与帧缓存
DDR2 电路设计指南DDR2 SDRAMSSTL_18、T 分支拓扑、VTT 端接、ODT
DDR3 电路设计指南DDR3 / DDR3LFly-by 拓扑、write leveling、动态 ODT
DDR4 电路设计指南DDR4 SDRAMPOD12、bank group、DBI、2D 训练
DDR5 电路设计指南DDR5 SDRAM双子通道、On-DIMM PMIC、DFE、同帧 ECC
EEPROM 电路设计指南EEPROMI²C/SPI 接口、上拉电阻与总线电容、页写与写保护

1 · 器件基础

1.1 定位与选型对比

SD NAND 可以理解为"把 SD 卡的控制芯片和 NAND 裸片封装进一个贴片 LGA / BGA 里",对外呈现标准的 SD 协议接口(SDIO 或 SPI),内部完成坏块管理、ECC、磨损均衡、垃圾回收。对主控而言,它和一张焊死在板上的 microSD 卡没有区别。

对比项SD NANDmicroSD(TF 卡)eMMCRaw NAND
封装LGA-8 / BGA-9,6×8 mm 或 8×8 mm卡座 + 可插拔卡BGA-153/169,11.5×13 mmTSOP / BGA
接口SDIO 1/4-bit 或 SPISDIO 1/4-bit 或 SPIeMMC 1/4/8-bit HS400ONFI / Toggle
最高理论速率25 MB/s(HS 4-bit)50~104 MB/s(UHS-I)400 MB/s(HS400)取决于主控
主控要求SDIO 或 SPI 外设即可同上需专用 eMMC 控制器需 NAND 控制器 + FTL
是否需卡座不需要,直接贴片需要(接触可靠性风险)不需要不需要
抗振动差(易松脱)
成本 / 容量中小容量性价比高最低(但卡座有成本)大容量更划算最低,但开发量大
典型应用穿戴、IoT、工控、小家电、语音模组消费类可换卡设备手机、平板、盒子大批量成本敏感产品
为什么选 SD NAND 而不是 TF 卡座

卡座是机电件,在振动、高低温、盐雾环境下是典型的失效点(接触电阻变大、弹片疲劳、氧化)。SD NAND 贴片后与 PCB 成为一体,抗震性与一致性显著提升,且省掉卡座成本与结构空间。代价是不可更换、容量在贴片时就固定。

1.2 封装与引脚定义

市面上最常见的是 LGA-8(8 引脚,6×8 mm 或 8×8 mm)封装,引脚定义对应 SD 总线的完整信号子集:

SD NAND LGA-8 封装引脚定义(顶视) LGA-8 顶视图,上排自左至右为 1 脚 DAT2、2 脚 DAT3 兼 CS、3 脚 CMD 兼 DI、4 脚 VDD;下排自左至右为 8 脚 DAT1、7 脚 DAT0 兼 DO、6 脚 VSS、5 脚 CLK 兼 SCLK。 LGA-8 封装引脚定义(顶视,Pin 1 左上) SD NAND · LGA-8 1 2 3 4 DAT2 DAT3 / CS CMD / DI VDD DAT1 DAT0 / DO VSS CLK / SCLK 8 7 6 5
图 1-1 LGA-8 引脚定义(顶视,左上圆点为 Pin 1 标识)
引脚SDIO 模式SPI 模式方向(SDIO)说明
1DAT2未使用(NC / 上拉)I/O4-bit 数据线 bit2;1-bit 与 SPI 下不用
2DAT3CS(片选)I/O4-bit 数据线 bit3;SPI 下作片选,低有效
3CMDDI(MOSI)I/O(双向,开漏 + 推挽)命令与响应线;SPI 下为主发从收
4VDD(VCC)VDD(VCC)电源2.7 ~ 3.6 V,典型 3.3 V
5CLKSCKI时钟,主控输出
6VSS(GND)VSS(GND)
7DAT0DO(MISO)I/O数据线 bit0;SPI 下为从发主收,同时承载 busy 指示
8DAT1未使用 / IRQ / busyI/O4-bit 数据线 bit1;部分型号在 SPI 下复用为中断或 busy 输出
引脚顺序不是通用的

上图是主流 LGA-8 的一种排列,但不同厂商、不同封装(LGA-8 / BGA-9 / WSON-8)的 pin order 并不统一,甚至同厂不同容量批次也可能有差异。原理图建库时必须逐一对照该型号的 datasheet 引脚图,切勿直接套用其他家的封装。这是 SD NAND 项目最容易翻车的地方。

芯天下 XTX SD NAND 选型对照

电压域容量型号封装状态
3.3 V(2.7 ~ 3.6 V)1 GbXTSDG01GWSIGAWSON-8 8×6 mmMP
3.3 V(2.7 ~ 3.6 V)2 GbXTSDG02GWSIGAWSON-8 8×6 mmMP
3.3 V(2.7 ~ 3.6 V)4 GbXTSDG04GWSIGAWSON-8 8×6 mmMP
3.3 V(2.7 ~ 3.6 V)8 GbXTSDG08GWSIGAWSON-8 8×6 mmMP
1.8 V(1.7 ~ 1.9 V)1 GbXTSDQ01GWSIGAWSON-8 8×6 mmMP
1.8 V(1.7 ~ 1.9 V)2 GbXTSDQ02GWSIGAWSON-8 8×6 mmMP
1.8 V(1.7 ~ 1.9 V)4 GbXTSDQ04GWSIGAWSON-8 8×6 mmMP
1.8 V(1.7 ~ 1.9 V)8 GbXTSDQ08GWSIGAWSON-8 8×6 mmMP
1.8 V(1.7 ~ 1.9 V)1 / 2 GbXTSDQ01GLAIGA / XTSDQ02GLAIGALGA-8 6×5 mmCS(小体积版本)

XTX SD NAND 主力封装为 WSON-8 8×6 mm(不是 LGA-8),pin order 需以具体料号 datasheet 为准;1.8 V 小体积版本另有 LGA-8 6×5 mm 封装。

未使用引脚的处理

  • SPI 模式下的 DAT1(8 脚)、DAT2(1 脚):优先级顺序为 → 接主控 GPIO(若器件支持 IRQ / busy 输出且你需要)→ 4.7 ~ 10 kΩ 上拉到 VCC_SD → 直接悬空(仅当 datasheet 明确允许)。不推荐直接接地
  • SDIO 1-bit 模式下的 DAT1 / DAT2 / DAT3:DAT3 在 SD 协议中兼作卡检测(内部下拉、主机上拉识别),外部仍建议 4.7 ~ 10 kΩ 上拉;DAT1 / DAT2 悬空或上拉均可,但上拉更利于 ESD 与抗干扰。
  • 任何情况下,未使用的 IO 引脚不要在 PCB 上预留测试焊盘以外的大面积走线,避免成为天线。

1.3 内部架构

理解内部架构有助于判断"哪些事情硬件不用管、哪些必须由软件做":

SD NAND 内部架构框图 主控芯片经 SD 接口物理层连接 SD 控制器,控制器内含 ECC、坏块管理、磨损均衡与 FTL 映射,后端接 NAND Flash 阵列;虚线框内为 SD NAND 单芯片。 SD NAND(单芯片 · LGA-8 / BGA-9) 主控芯片 MCU / SoC SD 接口物理层 命令译码 / CRC7 SPI / SDIO 模式识别 1-bit / 4-bit 通路 SD 控制器 ECC 校验 / 纠错 坏块管理 BBT 磨损均衡 + 垃圾回收 FTL 地址映射 NAND Flash 阵列 SLC / MLC
图 1-2 SD NAND 内部架构:坏块、ECC、磨损均衡全部由器件内部完成,主控只看到标准 SD 协议
对硬件设计的直接意义

因为坏块管理、ECC、磨损均衡都在器件内部,主控不需要像 Raw NAND 那样外挂 ECC 引擎或跑 FTL —— 这也是 SD NAND 相对并行 NAND 的最大工程价值。但代价是:主控无法直接控制写入位置与时机,掉电时序必须由系统设计保证(见 第 8 章)。

1.4 关键电气参数

参数符号最小值典型值最大值备注
电源电压VDD2.7 V3.3 V3.6 VSD 规范要求 ±10%
电源纹波Vripple100 mVp-p建议控制在 50 mV 以内
读工作电流IDD-R15 ~ 30 mA45 mA25 MHz 4-bit 连续读
写 / 擦工作电流IDD-W30 ~ 70 mA100 mANAND 编程瞬间峰值
Standby 电流IDD-SB80 ~ 350 µA500 µA时钟停止、卡未选中
断电后漏电流Ioff< 1 µA取决于负载开关低功耗方案的目标值
输入高电平VIH0.625×VDDVDD+0.33.3 V 时约 2.06 V
输入低电平VIL−0.30.25×VDD3.3 V 时约 0.83 V
上电到首条命令tPU1 ms5 ms建议留 5~10 ms 余量
初始化时钟fOD100 kHz400 kHz400 kHz识别阶段上限

注:以上为通用参考量级,实际以器件 datasheet 为准。VIH / VIL 取值来自 SD 规范对 3.3 V 信令的定义。

2 · 接口与工作模式

2.1 SPI 模式 vs SDIO 模式

SD NAND 上电后默认处于 SDIO(SD 总线)模式。切换到 SPI 模式的方法是:拉低 CS(DAT3)的同时发送 CMD0。一旦进入 SPI 模式,只能通过重新上下电退出(部分器件支持断电复位)。

维度SPI 模式SDIO 模式
信号线CLK、DI(CMD)、DO(DAT0)、CS(DAT3)CLK、CMD、DAT0 [+DAT1~3]
总线宽度固定 1-bit1-bit / 4-bit 可切换
理论最高速率25 MHz → 约 3.1 MB/s(部分器件可超频至 33~40 MHz)50 MHz × 4 = 25 MB/s
SPI 时钟极性Mode 0(CPOL=0, CPHA=0),数据在 CLK 上升沿采样不适用(SD 总线为上升沿采样)
CRC默认关闭,需 CMD59 开启;CMD0 必须带正确 CRC(0x95)命令 CRC7 / 数据 CRC16,硬件自动
主控要求任意 SPI 外设,甚至 GPIO 模拟需 SDIO / SD / MMC 硬件控制器
初始化流程CMD0 → CMD8 → CMD58 → ACMD41 → CMD58(查 CCS)→ CMD16 / CMD59CMD0 → CMD8 → ACMD41 → CMD2 → CMD3 → CMD7 → ACMD6 → CMD6
硬件 CRC / DMA需软件处理 CRC(若开启)控制器硬件完成,可配 DMA
优势接口简单、走线少、时序裕量大、主控选择面广速率高、协议由硬件处理、CPU 占用低
劣势速率低、CPU 开销大、无 4-bit 扩展需要专用外设、走线等长要求更严
选型建议

只存配置参数、日志、小固件、字库 → SPI 模式足够,还省主控资源。
需要跑文件系统(FATFS / littlefs)、存 UI 资源 / 音频 / OTA 包、批量写日志 → 必须 SDIO 4-bit,否则写吞吐会严重拖慢系统响应。

2.2 速率档位与总线宽度

档位信令电压时钟上限1-bit 理论4-bit 理论实测有效(读)SD NAND 支持度
识别 / 初始化3.3 V100 ~ 400 kHz0.05 MB/s全部支持(必须)
Default Speed(DS)3.3 V25 MHz3.1 MB/s12.5 MB/s6 ~ 10 MB/s全部支持
High Speed(HS)3.3 V50 MHz6.25 MB/s25 MB/s12 ~ 20 MB/s主流型号支持
UHS-I SDR251.8 V50 MHz6.25 MB/s25 MB/s极少支持
UHS-I DDR501.8 V50 MHz50 MB/s基本不支持
SD NAND 各档位理论峰值吞吐对比 四组配置的读理论峰值:SPI 与 SDIO 1-bit 在 25 兆赫下均为 3.1 兆字节每秒,SDIO 4-bit 25 兆赫为 12.5 兆字节每秒,SDIO 4-bit 50 兆赫为 25 兆字节每秒。 读理论峰值吞吐对比(MB/s) SPI · 1-bit @ 25 MHz 3.1 MB/s SDIO · 1-bit @ 25 MHz(DS) 3.1 MB/s SDIO · 4-bit @ 25 MHz(DS) 12.5 MB/s SDIO · 4-bit @ 50 MHz(HS) 25.0 MB/s
图 2-1 读理论峰值吞吐对比
关于"高速"的现实预期

SD NAND 的写入速度远低于读取速度,这是 NAND 编程特性决定的,与接口速率关系不大。典型 SD NAND 连续写入在 2 ~ 8 MB/s,小文件随机写可能低至几百 KB/s。把时钟从 25 MHz 提到 50 MHz,读性能提升明显,写性能提升有限。做方案评估时不要拿 25 MB/s 这个理论数字去估写入时间

2.3 模式选型决策

接口模式选型决策路径 从主控是否有原生 SDIO 外设开始判断,无则选 SPI 模式;有则再看吞吐需求是否超过 12.5 兆字节每秒,决定 SDIO 1-bit 或 4-bit 高速模式;任意模式均可叠加 VCC 负载开关断电控制。 开始:确定接口 主控是否有原生 SDIO 外设? SPI 模式 1-bit,≤25 MHz 是否需要 > 12.5 MB/s? (读吞吐需求) SDIO Default Speed 1-bit 或 4-bit @ 25 MHz SDIO High Speed 4-bit @ 50 MHz 任意模式均可叠加 VCC 负载开关断电控制(见第 3 章)
图 2-2 接口模式选型决策路径
补充

选择接口模式的核心依据是三条:主控是否有 SDIO 外设吞吐需求是否超过 3 MB/sPCB 是否能满足 4 线等长。三者都满足才值得上 SDIO 4-bit;否则 SPI 更简单也更稳。

3 · 电源与低功耗设计(核心章节)

本章是 SD NAND 设计与普通 SD 卡座设计最大的差异点。由于 SD NAND 没有类似 eMMC 的 CMD5 SLEEP / AWAKE 指令,也不支持 SDIO 卡的休眠机制,关掉时钟后的 Standby 电流仍在 100 µA 量级。对于电池供电的 IoT / 穿戴设备,这个量级不可接受,必须从硬件上切断 VCC

3.1 供电与去耦

  • 电压:3.3 V ±10%(2.7 ~ 3.6 V)。若系统主电源是 3.7 V 锂电池或 5 V,需先经 LDO / DCDC 稳压,不要直接由电池供电(电压会随电量变化超出范围)。
  • 去耦配置:VCC 引脚附近放置 1 × 10 µF(陶瓷,X5R/X7R,0603/0805)+ 2 × 0.1 µF(0402/0603)。0.1 µF 必须紧靠 VCC 引脚(走线 < 2 mm),10 µF 提供写操作峰值电流的电荷池。
  • 总容值下限:SD 规范要求卡侧 VDD 上有效去耦电容不小于 1 µF;工程上按 ≥ 10 µF 设计以应对编程峰值。
  • 电容布局:所有去耦电容的地回路必须直接打到 SD NAND 下方的完整地平面,用短而宽的走线或多个过孔连接,避免与其他大电流回路共用。
  • 不要串磁珠 / 电感:在 VCC 上串磁珠会在写峰值电流时造成电压跌落,导致写入失败。若必须隔离噪声,用 0 Ω 电阻预留位置。
SD NAND 供电去耦与 VCC 负载开关 VCC_3V3 经集成负载开关产生 VCC_SD,负载开关 EN 由主控 GPIO 控制;VCC_SD 上并联三颗去耦电容各自独立接地,最后送至 SD NAND 的 VDD 引脚。 VCC_3V3 负载开关 TPS22917 · 带 QOD SD_PWR_EN VCC_SD 10 µF 0.1 µF 0.1 µF GND 至 SD NAND VDD(4 脚)
图 3-1 供电、去耦与 VCC 负载开关(三颗去耦电容彼此并联,各自独立接地)
去耦电容必须并联,不能串联

图中 10 µF 与两颗 0.1 µF 都是各自独立地从 VCC_SD 跨接到 GND(三条并联支路)。若误画成串联,等效容量按 1/C 折算且两颗电容分压,等于没有去耦 —— 这是画原理图时最容易被忽略、后果也最严重的一类错误。

3.2 VCC 断电控制:三种方案

VCC 断电控制三种方案对比 方案 A 用 P-MOS 做高边开关、由 N-MOS 电平移位驱动,成本最低;方案 B 用集成负载开关,EN 由 GPIO 直驱,推荐;方案 C 把 N-MOS 放在地回路做低边开关,会使 SD NAND 的地被抬高,不推荐。 方案 A · P-MOS 高边(成本最低,需注意电平移位) VCC_3V3 P-MOS AO3401 VCC_SD SD NAND XTX XTSD 系列 N-MOS GPIO 方案 B · 集成负载开关(推荐) VCC_3V3 Load SW TPS22917 VCC_SD SD NAND XTX XTSD 系列 GPIO 方案 C · 低边 N-MOS(不推荐:地把器件地抬高了) VCC_3V3 VCC_SD SD NAND XTX XTSD 系列 N-MOS 在内地回路里 GPIO
图 3-2 VCC 断电控制三种方案对比(虚线为控制信号;方案 C 把开关放在地回路,会使器件地电位被抬高)
方案补充说明
  • 方案 A 的动作逻辑:GPIO 高电平 → N-MOS 导通 → P-MOS 栅极被拉低 → VGS ≈ −3.3 V → P-MOS 导通;GPIO 低电平 → N-MOS 截止 → 10 kΩ 上拉使 VGS = 0 → 关断。
  • 1.8 V GPIO 的经典坑:若主控 GPIO 为 1.8 V 电平而 VCC_SD 为 3.3 V,GPIO 直驱 P-MOS 会关不断(VGS = −1.5 V 仍导通),必须用 N-MOS / NPN 做电平移位,如方案 A 所示。
  • 方案 C 为什么不推荐:开关在地回路里,导通时器件地比系统地高出一个 VDS,CMD / DAT 的电平判定基准被抬高,容易在读写出错;而且 IO 引脚仍挂在 3.3 V 上,倒灌路径依然存在,省不掉"IO 置低"这一步
  • 不要把负载开关当成"GPIO 直接供电":写峰值可达 100 mA,远超 GPIO 驱动能力,会造成主控内部电压跌落。

负载开关选型要点

参数要求原因
导通电阻 RDS(on)< 100 mΩ(推荐 < 60 mΩ)200 mA 峰值时压降 < 20 mV,不影响 VDD 窗口
持续电流≥ 300 mA预留 2~3 倍裕量应对写峰值与浪涌
关断漏电流< 1 µA直接决定待机功耗下限
静态电流 IQ< 1 µA关断态主要看关断电流,导通态看 IQ
输出电压摆率可控 / 软启动限制上电浪涌,避免主电源电压跌落
输出放电 QOD强烈建议具备关断后快速泄放残压,保证下次干净上电
反向电流阻断具备(true reverse current blocking)防止主控先掉电时电流倒灌
EN 逻辑电平兼容主控 GPIO 电平(1.8 V / 3.3 V)1.8 V IO 主控需选 1.8 V 逻辑兼容型号

常用型号参考

型号厂商VINIMAXRDS(on)QOD特点
TPS22916TI1.8~5.5 V2 A63 mΩ可选超低关断漏电(<10 nA),IQ 极低
TPS22917 / 22918TI1.8~5.5 V2 A78 mΩ软启动可控,封装小,综合最均衡
TPS22860TI1.8~5.5 V0.5 A240 mΩ超小封装,适合空间紧张设计
SGM2578圣邦微1.8~5.5 V1.5 A60 mΩ可选国产替代,性价比高
SY6280AAC力芯微2.4~5.5 V1.2 A80 mΩ带限流保护,常用
AP22652 / AP22802Diodes1.5~5.5 V2 A65 mΩ可选车规型号齐全
RT9742 / RT9743Richtek2.4~5.5 V3 A55 mΩ可选带可调限流
XC8107Torex1.8~6.0 V1 A90 mΩ超低 IQ,适合穿戴

型号仅为示例,选型时请以最新 datasheet 参数与供货状态为准。

3.3 泄放残压与 IO 倒灌防护

最容易踩的坑:IO 倒灌导致"关不断"

切断 VCC 后,如果主控的 CLK / CMD / DAT 引脚仍保持高电平(SDIO 外设的空闲态常常是内部上拉为高),电流会通过 SD NAND 引脚内部的 ESD 保护二极管从 IO 灌入 VDD 网络,把 VCC_SD "顶"到 1~2 V。后果有四个:

  • 断电失败,实际功耗仍达数十至数百 µA;
  • SD NAND 内部处于半死不活的亚稳态,下次上电初始化可能失败;
  • 长期偏置会加速器件老化甚至损坏;
  • 若外部上拉电阻挂在 VCC_3V3 上,倒灌路径更明显。

解决办法:断电前,先把主控的这 4~6 个 IO 从 SDIO 复用功能切回 GPIO,配置为输出低电平(或模拟输入 / 高阻)。推荐"输出低",因为它可以主动把结电容上的电荷放掉,最彻底。

外部上拉接法对错对比与 IO 倒灌路径 上图为错误接法:上拉电阻接到常开的 VCC_3V3,断电后电流经上拉与器件内部 ESD 二极管倒灌进 VCC_SD;下图为正确接法:上拉接到开关之后的 VCC_SD,且主控 IO 输出低,倒灌路径被切断。 ✗ 错误:上拉接 VCC_3V3,断电后经 IO 倒灌 VCC_3V3(常开) 负载开关 OFF(已关断) VCC_SD SD NAND XTX XTSD 系列 VDD 主控 MCU CMD / DAT0~3 10k 上拉接 VCC_3V3(错) 倒灌电流 ✓ 正确:上拉接 VCC_SD,且断电前把 IO 置低 VCC_3V3(常开) 负载开关 OFF(已关断) VCC_SD(已失电) SD NAND XTX XTSD 系列 VDD 主控 IO 输出低 CMD / DAT0~3 10k 倒灌路径已切断
图 3-3 外部上拉的接法对比:上拉必须接在开关之后的 VCC_SD 上,且断电前把主控 IO 置低

外部上拉的接法(硬性要求)

CMD / DAT0~3 的外部上拉电阻必须接到 VCC_SD(开关之后),而不是 VCC_3V3(开关之前)

  • 若接到 VCC_3V3,断电后上拉电阻会持续通过 ESD 二极管给 VCC_SD 供电,直接破坏断电效果
  • 接到 VCC_SD 后,断电瞬间上拉网络随之失电,且主控 IO 已置低,倒灌路径被彻底切断。

泄放设计

  • 首选:选用带 Quick Output Discharge(QOD)功能的负载开关,关断时内部 MOS 自动把 VCC_SD 拉到地,零静态功耗。
  • 次选:在 VCC_SD 与 GND 之间加 47 kΩ ~ 100 kΩ 常接泄放电阻。10 kΩ 时静态功耗 1.09 mW(偏大),47 kΩ 为 0.23 mW,100 kΩ 为 0.11 mW。不要用小于 10 kΩ 的泄放电阻
  • 第三选择:用一个额外的 N-MOS + 电阻,仅在关断时导通放电(成本换功耗)。
  • 关断后等待 VCC_SD 降到 < 0.3 V(留足余量可按 < 0.1 V)再认为断电完成;之后若要重新上电,建议再等 1~5 ms 让电荷完全泄放。

3.4 上电 / 断电时序

SD NAND 断电与上电推荐时序 断电六步:文件系统同步、等 busy 结束、停时钟、IO 切 GPIO 输出低、拉低 EN 关断、等残压泄放;上电六步:确认 IO 低且 EN 低、拉高 EN 开电、等电源稳定、IO 切回外设、送 400 千赫与 74 个以上时钟、识别后提速。 断电时序(顺序不可颠倒) ① fs_sync 关闭已打开文件 ② 等 busy 结束 CMD13 / DAT0 电平 ③ 停时钟 SPI 先拉高 CS ④ IO 输出低 切 GPIO 并置 0 ⑤ EN = 0 关断负载开关 ⑥ 等泄放 VCC_SD < 0.3 V 典型耗时:①~③ 数毫秒(取决于文件系统) · ④ 微秒级 · ⑤~⑥ 3~10 ms 上电时序 ① 确认初始态 IO=0 且 EN=0 ② EN = 1 打开负载开关 ③ 等 5 ms 含软启动时间 ④ IO 切外设 AF 复用 ⑤ 400 kHz 送 ≥74 个时钟 ⑥ 识别 + 提速 ACMD6 → CMD6 典型耗时:①~④ 约 5 ms · ⑤~⑥ 10~100 ms(首片可能更长)
图 3-4 断电与上电推荐时序(顺序不可颠倒)
两条不可违反的红线
  • 严禁在 busy 期间断电:可能导致正在编程的页损坏,甚至丢失 FTL 映射表。断电前必须确认 CMD13 或 DAT0 电平显示卡已空闲。
  • VCC 上升沿必须单调:回勾可能使内部 POR 误判,导致初始化失败。选用带软启动的负载开关即可满足。
两个实用提示
  • 避免频繁上下电:每次上电都需重新初始化(10~100 ms)并产生浪涌电流,建议在 RAM 中做写缓存合并,减少上下电次数。
  • CMD0 之前至少要送 74 个时钟周期,让内部控制器完成 POR 与状态机复位;这 74 个时钟必须在 ≤400 kHz 下送出。

3.5 软件流程参考

下面是断电 / 上电控制的伪代码框架,可直接移植到 STM32、GD32、NXP、ESP32、瑞萨等平台。

/* ============ 断电 ============ */
int sdnand_power_down(void)
{
    /* 1. 落盘并等待卡不再忙 */
    fs_sync();                       // 文件系统同步
    if (sd_wait_not_busy(TIMEOUT_500MS) != OK)   // CMD13 轮询 / DAT0 电平
        return -EBUSY;               // 宁可放弃断电,也不要在 busy 时掉电

    /* 2. 停时钟;SPI 模式先拉高 CS */
    SDIO_ClockCmd(DISABLE);
    gpio_set(CS_PIN, 1);             // 仅 SPI

    /* 3. 关键:IO 切 GPIO 输出低,切断倒灌路径 */
    sdio_pins_to_gpio_output_low();  // CLK / CMD / DAT0~3

    /* 4. 关断负载开关 */
    gpio_set(SD_PWR_EN, 0);

    /* 5. 等待残压泄放 */
    delay_ms(3);
    // 可选:adc_sample(VCC_SD) < 0.3V 确认

    /* 6. 标记状态,进入低功耗 */
    sd_state = SD_OFF;
    return OK;
}

/* ============ 上电 ============ */
int sdnand_power_up(void)
{
    /* 1. 确保 IO 低、EN 低 */
    sdio_pins_to_gpio_output_low();
    gpio_set(SD_PWR_EN, 0);
    delay_us(50);

    /* 2. 打开负载开关 */
    gpio_set(SD_PWR_EN, 1);

    /* 3. 等待电源稳定(含软启动时间)*/
    delay_ms(5);

    /* 4. IO 切回外设 */
    sdio_pins_to_af();

    /* 5. 识别阶段:400 kHz + ≥74 个 dummy clock */
    SDIO_Init(CLK_400KHZ, BUS_1BIT);
    SDIO_SendDummyClocks(80);

    /* 6. 标准识别流程 */
    if (sd_identify() != OK) {       // CMD0 / CMD8 / ACMD41 / CMD2 / CMD3
        sdnand_power_down();         // 失败也断电,避免漏电
        return -EIO;
    }

    /* 7. 提速:先切宽度,后切高速,最后提频 */
    sd_set_bus_width(BUS_4BIT);      // ACMD6
    if (card_supports_hs())
        sd_switch_to_hs();           // CMD6,切换时时钟必须 ≤25 MHz
    SDIO_SetClock(target_freq);      // 25 或 50 MHz

    sd_state = SD_ON;
    return OK;
}
重试与容错

初始化失败时建议做"断电 → 延时 10 ms → 重新上电 → 重新初始化"的重试循环,最多 3 次。单纯重复发命令而不重新上下电,成功率远低于完整断电重来。同时务必在失败路径上把负载开关关掉,否则一次失败就会让整机待机电流长期偏高。

3.6 功耗预算

工作场景SD NAND 电流负载开关漏电合计说明
连续读(25 MHz 4-bit)20 mA20 mA
连续写 / 擦除30 ~ 70 mA≤ 70 mA峰值可到 100 mA
空闲(时钟停、未选中)80 ~ 350 µA≤ 350 µA无休眠指令,降不下去
断电(VCC off,无泄放电阻)0< 1 µA< 1 µA推荐配置
断电(VCC off + 47 kΩ 泄放)0< 1 µA< 1 µA泄放电阻也被切断,不耗电
断电失败(IO 倒灌)50 ~ 500 µA50 ~ 500 µA未将 IO 置低的典型后果
电池寿命粗算

以 500 mAh 电池、每天写入 10 MB(约 3 秒 @ 60 mA)、其余时间待机为例:
· 不断电方案:待机 250 µA × 24 h = 6 mAh/天,加写入约 0.05 mAh → 约 6.05 mAh/天 → 约 82 天
· 断电方案:待机 < 1 µA × 24 h ≈ 0.024 mAh/天,加写入 0.05 mAh → 约 0.074 mAh/天 → 数年(受电池自放电限制)
差距在一到两个数量级,这就是必须做 VCC 断电控制的原因。

4 · SPI 模式电路设计

SPI 模式典型应用电路 主控 SPI 外设的 SCK、NSS、MOSI、MISO 经可选串阻接 SD NAND 的 CLK、DAT3 兼 CS、CMD 兼 DI、DAT0 兼 DO;CS、DI、DO、DAT1、DAT2 各经 10 千欧上拉接到负载开关之后的 VCC_SD;VCC 由负载开关供电并配并联去耦电容。 VCC_3V3 负载开关 TPS22917 · 带 QOD SD_PWR_EN VCC_SD 0.1 µF 10 µF 主控制器 MCU SPI 外设 SPIx_SCK SPIx_NSS SPIx_MOSI SPIx_MISO GPIO(可选 DAT1) GPIO(可选 DAT2) SD NAND(LGA-8) SPI 模式 · LGA-8 / WSON-8 XTX XTSDG / XTSDQ 系列 5 CLK 2 DAT3 / CS 3 CMD / DI 7 DAT0 / DO 8 DAT1 1 DAT2 33R 33R 33R 33R 串阻 0~33 Ω(可选) 10k 必需 10k 10k 10k 10k 上拉到 VCC_SD 4 VDD 6 VSS
图 4-1 SPI 模式典型应用电路(串阻可选;CS 上拉必需,其余上拉建议保留)
上拉必须接 VCC_SD,不能接 VCC_3V3

图中所有 10 kΩ 上拉都挂在负载开关之后的 VCC_SD 轨上。若接到常开的 VCC_3V3,断电后上拉电阻会持续通过器件内部 ESD 二极管给 VCC_SD 供电,断电效果直接失效(详见 §3.3)。

SPI 模式要点
  • SPI Mode 0(CPOL=0, CPHA=0),上升沿采样;识别阶段 ≤400 kHz,工作常用 10~25 MHz。
  • CS 在整个命令—响应—数据期间必须保持低电平(每 8 个时钟后可短暂拉高,视器件而定)。
  • 进入 SPI 模式:CS 拉低的同时发送 CMD0,CRC 必须正确,为 0x95
  • 上拉点必须接在串阻之后的器件侧(图中串阻占 x≈270~302,上拉抽头在 x≈310~478,全部落在器件侧)。接在串阻主控侧会与器件侧形成分压,空闲电平拉不到 VCC_SD。
  • DAT1 / DAT2 是慢速可选线,不画串阻;图中用虚线表示可选连接。

4.1 元件取值

元件取值数量作用与说明
Rseries(SCK / MOSI)0 ~ 33 Ω(可选2源端端接,抑制过冲。靠近 MCU 放置,Layout 预留焊盘
Rseries(MISO)0 ~ 33 Ω(可选1MISO 是 SD NAND 输出、MCU 输入,串阻应靠近 SD NAND 放置
Rseries(CS)0 ~ 33 Ω(可选1CS 速率低,可直接短接;空间允许时保留
RPU(CS)10 kΩ,必需1保证上电期间 CS 为高,避免误入 SPI 模式
RPU(DO / DAT0)4.7 ~ 10 kΩ1开漏响应期间提供上升沿;多数 MCU 内部上拉可替代
RPU(DI / CMD)4.7 ~ 10 kΩ(可选)1MCU 推挽驱动时可省;长走线时建议保留
RPU(DAT1 / DAT2)4.7 ~ 10 kΩ(可选)2SPI 下未使用;上拉更利于抗干扰,也可接 GPIO 用 IRQ / busy
Cbypass0.1 µF × 22紧靠 VDD 引脚,两颗并联
Cbulk10 µF1提供写峰值电荷池

上拉取值口径:本指南统一推荐 4.7 kΩ(允许 4.7 ~ 10 kΩ),不使用 47 kΩ 一类过弱上拉——SDIO 走线通常在 30~80 mm,过弱上拉在空闲期易受串扰,且开漏响应阶段上升沿过缓会直接吃掉高速模式的时序余量。追求极低功耗时可取 10 kΩ,但不要再往上加。

4.2 SPI 初始化流程要点

/* 1. 进入 SPI 模式:CS=0 的同时发 CMD0,CRC 必须为 0x95 */
CS_LOW();  spi_send_cmd(0, 0x00000000, 0x95);  // 期望 R1 = 0x01 (idle)

/* 2. CMD8 检查电压与协议版本,arg = 0x000001AA,CRC = 0x87 */
r = spi_send_cmd(8, 0x000001AA, 0x87);          // 期望 R7 = 0x01 + 0x000001AA

/* 3. CMD58 读 OCR,确认电压窗口 */
r = spi_send_cmd(58, 0, 0);                     // R3: OCR 32bit

/* 4. ACMD41 = CMD55 + CMD41,轮询直到 busy bit 清零 */
do {
    spi_send_cmd(55, 0, 0);
    r1 = spi_send_cmd(41, 0x40000000, 0);       // HCS = 1
} while (r1 != 0x00 && --retry);

/* 5. 再次 CMD58,检查 CCS(bit30) 判断 SDSC / SDHC */
spi_send_cmd(58, 0, 0);
is_sdhc = (ocr & (1UL << 30)) ? 1 : 0;

/* 6. SDSC 必须设置块长度;SDHC/SDXC 固定 512B,此步可省 */
if (!is_sdhc) spi_send_cmd(16, 512, 0);

/* 7. 建议开启 CRC 校验,提升数据可靠性 */
spi_send_cmd(59, 0x00000001, 0);                // CRC_ON_OFF = 1

/* 8. 提频到工作速率 */
SPI_SetBaudRate(target);                        // 常用 10~25 MHz
SPI 模式常见误解
  • 不能像 SPI NOR Flash 那样上电直接读。SD NAND 必须走完整的 SD 识别流程,否则数据线不会输出有效内容。
  • 写操作后必须轮询 busy。发送 CMD24(WRITE_BLOCK)后,DO 线会持续输出 0x00,主机需持续读取直到收到非 0x00 字节,才能拉高 CS 或发下一条命令。
  • 每块之间要有间隔。连续多块写时用 CMD25(WRITE_MULTIPLE_BLOCK),并用 STOP_TRAN token 结束,效率远高于多个 CMD24。
  • SPI 模式下的"高速":SD 规范没有为 SPI 定义 High Speed 档位,能否超过 25 MHz 取决于器件,需要实测验证并做高低温考核。

4.3 1 路 SPI 挂多个 SD NAND

一颗主控的一路 SPI 只有一组 SCK / MOSI / MISO,但板上有可能需要两片 SD NAND——常见理由有三个:把固件区与数据区分开(避免频繁擦写拖慢启动)、A/B 双备份 OTA、以及一片常电小容量存配置、一片门控大容量存日志。SPI 模式天然支持这种接法:每片一个独立 CS,三根信号线共享。

但 SD NAND 与 SPI NOR 有一个本质差别,会让"照搬多片 SPI NOR 的画法"直接翻车:SD NAND 写完一个块之后,DO 线会被器件持续驱动为低电平直到内部编程结束,这段时间里即便把 CS 拉高,部分器件也不会立刻释放 DO。再叠加上第 3 章的 VCC 门控——两片的上下电状态可能不同步——这就是多片 SD NAND 最难调的地方。

1 路 SPI 挂两片 SD NAND 主控一路 SPI 外设的 SCK、MOSI、MISO 三根共享总线经串阻后并联到两片 SD NAND;每片由独立 GPIO 驱动 CS 并各自上拉到本片 VCC_SD;两片各由一路负载开关独立门控。 1 路 SPI 挂两片 SD NAND:共享 SCK / MOSI / MISO,各自独立 CS 与 VCC 门控 VCC_3V3 负载开关 0(SW1) TPS22917 · 带 QOD EN0 ← GPIO 负载开关 1(SW2) TPS22917 · 带 QOD EN1 ← GPIO VCC_SD0 VCC_SD1 33R 33R 33R 共享总线串阻 33 Ω(可选) 主控制器 MCU SPI 外设 + 4 GPIO SPIx_SCK SPIx_MOSI SPIx_MISO GPIO · CS0 GPIO · CS1 SD NAND #1 WSON-8 · SPI 模式 XTX XTSDG / XTSDQ 系列 5 CLK 3 CMD / DI 7 DAT0 / DO 2 DAT3 / CS 8 DAT1 / 1 DAT2 4 VDD 6 VSS SD NAND #2 WSON-8 · SPI 模式 XTX XTSDG / XTSDQ 系列 5 CLK 3 CMD / DI 7 DAT0 / DO 2 DAT3 / CS 8 DAT1 / 1 DAT2 4 VDD 6 VSS 33R 10k 33R 10k 10k 10k 注 1:SCK / MOSI / MISO 三根共享总线只在主控侧串一次阻;CS0 / CS1 各自串 33 Ω、各自上拉 10 kΩ 到本片 VCC_SD。 注 2:DAT1 / DAT2 未使用,各自上拉 4.7 ~ 10 kΩ 到本片 VCC_SD,两片之间不并联。 注 3:去耦电容每片独立(0.1 µF + 10 µF),图中未画出;两片绝不能共用去耦。 注 4:DO 在写操作 busy 期间由器件持续驱动为低,未选中期间必须释放,详见下文"开漏冲突"。
图 4-2 1 路 SPI 挂两片 SD NAND:SCK / MOSI / MISO 共享,每片独立 CS 与独立 VCC 负载开关
图 4-2 要点
  • 共享线只串一次阻:SCK / MOSI / MISO 由主控唯一驱动,未被选中的那片在这些线上为高阻,因此 33 Ω 串阻只放在主控侧一次,不必每片都串。
  • 每片独立 CS:CS0 / CS1 由两个 GPIO 分别驱动,各自串 33 Ω、各自上拉 10 kΩ 到本片的 VCC_SD。绝不能用一片 CS 同时选通两片。
  • DO 上拉按片独立:两片的 DAT0 / DO 各用 10 kΩ 上拉到自己的 VCC_SD(图中在总线两端各画一处,实际两片都接)。
  • 每片一路负载开关:SW1 / SW2 各自独立,EN0 / EN1 分别由主控 GPIO 控制,这样才能做到"只唤醒其中一片"。代价见下文"上拉互拉"。

为什么不能照抄多片 SPI NOR 的接法

对比项多片 SPI NOR多片 SD NAND
进入可用的前置流程上电即可读,无需初始化每片都要走完整的 SD 识别流程(CMD0 / CMD8 / ACMD41 / CMD58),且换片后不能复用
DO 的释放时机CS# 拉高后立即高阻写操作 busy 期间 DO 被器件持续驱动为低;CS 拉高后还需补 8 个时钟才彻底释放
一次事务的长度1 字节 opcode(长命令也只到 6 字节)6 字节命令 + 多字节响应,一次读块要连续四千多个时钟
典型速率104 ~ 133 MHzSPI 模式通常 ≤ 25 MHz,总线负载对时序的影响相对小
上下电多片通常同一电源域,同时上下电常需要独立门控,于是引出上拉互拉问题
开漏冲突:DO 被两片同时驱动

这是多片 SD NAND 最致命的硬件故障模式。SPI NOR 在 CS# 拉高后立刻释放 MISO,而 SD NAND 有两种情况会让 DO 保持驱动:

  • 写操作 busy:发送 CMD24 / CMD25 之后,器件把 DO 拉低表示忙,直到内部编程结束才放开。
  • 读数据的连续输出:多块读(CMD18)进行中,DO 持续输出数据流。

如果此时主控切到另一片(拉低另一片 CS),总线上就是一片拉低、一片输出数据——读到的是线与结果,表现为"数据偶尔整体错位"或直接读出全 0。

软件侧必须做的三件事:

  1. 换片前先确认当前片不在 busy。发完写命令后轮询 DO 直到收到非 0x00,再拉高 CS。
  2. CS 拉高后补 8 个时钟,让器件彻底释放 DO。多片共享总线时这一步不能省。
  3. 换片后重新走识别流程。SD NAND 的状态机由上电 / CS 有效沿触发,不能假设另一片已经初始化过;把初始化流程封装成函数,按需对目标片再跑一遍。
独立门控 + 共享 DO 上拉 = 空闲电平被拉到中间

这是多片 SD NAND 最隐蔽的一个坑,只有"独立门控"和"共享总线"同时存在时才会出现。假设片 1 断电、片 2 上电:

  • QOD(快速输出放电)的负载开关(TPS22917 等)关断后,会把 VCC_SD0 内部拉到 GND。于是片 1 的 DO 上拉不再是上拉,而变成了 10 kΩ 下拉
  • 它与片 2 的 10 kΩ 上拉在 MISO 上分压,空闲电平停在 VCC/2 附近(3.3 V 时约 1.65 V)——既不是确定的高,也不是确定的低。
  • 同理,CS0 的上拉在片 1 断电后也变成下拉,若该 GPIO 在复位期驱动能力弱,CS0 可能拉不到高电平而误选通。

三种解法,按推荐度排序:

方案做法代价适用
A 两片共用一路负载开关推荐SW1 / SW2 合并成一路更大电流的开关,VCC_SD0 = VCC_SD1,上拉只留一组失去独立门控,待机电流是两片之和两片总是同时工作的场景(固件区 + 数据区)
B DO 线加总线开关隔离每片的 DO 经 74LVC1G66 / TS3A5017 一类模拟开关再并入总线,未上电那片的开关断开每片多 1 颗开关 + 1 根选择 GPIO;DO 线上多约 5 Ω 导通电阻与 5 pF 电容必须独立门控的场景
C 两片各占一路 SPI 外设SPI1 接片 1、SPI2 接片 2,完全不共享多占 3 根 IO主控 IO 富裕、且两片速率或模式不同

如果选 A(两片同时上下电),上拉只保留一组即可,阻值回到 4.7 ~ 10 kΩ;如果两片分开布局在板子两端,则应在总线最末端保留这一组上拉,而不是放在主控附近。

什么时候干脆别用多片

如果只是为了容量,直接换更大容量的单片——XTX SD NAND 现有 MP 料号已覆盖 1 / 2 / 4 / 8 Gb(3.3 V 的 XTSDG01G / 02G / 04G / 08GWSIGA,1.8 V 的 XTSDQ01G / 02G / 04G / 08GWSIGA,均为 WSON-8 8×6 mm)。多片方案的真实价值是隔离——读写分离、A/B 备份、独立门控,而不是堆容量。

另外,SPI 模式下片数超过 4 片后 GPIO 与总线电容都会失控,那时应改用 SDIO 多片(见 §5.4)或换接口。

📥 芯参谋客户端下载