SD NAND(也称为贴片式TF卡或eMMC-like SPI NAND)在SPI模式下的接线与标准SD卡在SPI模式下基本相同。它简化了标准SD卡的物理接口(去掉了卡槽),但协议层面兼容SD卡的SPI协议。
以下是SD NAND在SPI模式下的标准引脚定义和接线方法:
SD NAND 引脚名称 | 引脚号 | SPI 模式功能 | 连接至 MCU/主控 |
---|---|---|---|
/CS (DAT3) | 1 | 片选 (Chip Select) | SPI 片选信号 (CS/SS) |
DI (CMD) | 2 | 数据输入 (MOSI) | SPI 主出从入 (MOSI) |
VSS (GND) | 3 | 地 (Ground) | 系统地 (GND) |
VDD (VCC) | 4 | 电源 (3.3V) | 3.3V 电源 |
CLK (CLK) | 5 | 时钟 (SCK) | SPI 时钟 (SCK) |
VSS (GND) | 6 | 地 (Ground) | 系统地 (GND) |
DO (DAT0) | 7 | 数据输出 (MISO) | SPI 主入从出 (MISO) |
/WP (DAT2) | 8 | 写保护 (可选) | GPIO 或 3.3V (悬空) |
/CD (DAT1) | 9 | 卡检测 (可选) | GPIO 或 GND (悬空) |
核心SPI连接 (必须连接):
/CS (片选, Pin 1): 连接到微控制器 (MCU) 或主控设备的任意一个 GPIO 引脚。这个引脚用于在SPI总线上选中该SD NAND设备。不能直接接地或接VCC! 必须由软件控制。
DI (数据输入, MOSI, Pin 2): 连接到MCU的 SPI MOSI (Master Out Slave In) 引脚。这是主设备发送数据给SD NAND的线路。
DO (数据输出, MISO, Pin 7): 连接到MCU的 SPI MISO (Master In Slave Out) 引脚。这是SD NAND发送数据给主设备的线路。
CLK (时钟, SCK, Pin 5): 连接到MCU的 SPI SCK (Serial Clock) 引脚。时钟信号由主设备产生并控制通信速率。
VDD (电源, Pin 4): 连接到稳定的 3.3V 电源。非常重要:绝大多数SD NAND都是3.3V器件,连接5V会损坏! 确认你的MCU SPI接口电平也是3.3V,否则需要电平转换。
VSS (地, Pins 3 & 6): 连接到系统的 地 (GND)。两个地引脚通常都建议连接,以提供良好的接地回路。
可选功能引脚:
/WP (写保护, Pin 8):
功能: 当此引脚被拉低 (接地) 时,SD NAND会进入硬件写保护状态,拒绝写入或擦除操作。
连接:
如果需要硬件写保护功能:连接到一个MCU的GPIO引脚(可以配置为输入检测外部开关状态,或输出强制写保护)。
如果不需要此功能:可以悬空 (Floating)。SD NAND内部通常有上拉电阻,悬空时该引脚为高电平,写保护功能禁用。为了更可靠,也可以将其直接连接到 3.3V。
注意: 很多应用中此引脚不使用。
/CD (卡检测, Pin 9):
功能: 此引脚在SPI模式下通常设计为低电平有效。当卡存在时,SD NAND会内部将此引脚拉低(或保持低电平)。当卡被移除(对于SD卡槽)或不存在时,外部上拉电阻会将其拉高。对于贴片焊接的SD NAND来说,卡始终存在。
连接:
如果MCU需要检测SD NAND是否存在(对于贴片SD NAND意义不大):连接到MCU的一个GPIO引脚(配置为输入)。通常需要一个外部上拉电阻(如10KΩ)到3.3V。当SD NAND存在且正常工作(初始化后)时,它会将此引脚拉低,MCU读到低电平表示卡在位。
如果不使用此功能(最常见情况):可以悬空 (Floating) 或 直接连接到地 (GND)。将其接地是最简单可靠的方式,明确告诉系统“卡始终存在”。悬空则取决于SD NAND内部是否下拉,直接接地更保险。
注意: 对于永久焊接在板上的SD NAND,此引脚通常直接连接到GND即可。
接线总结图:
SD NAND (SPI Mode) ┌─────────────────┐ │ ┌───┬───┐ │ MCU CS ├───┤1 /CS│ │ │ ├───┼───┤ │ MCU MOSI ├───┤2 DI │ │ │ ├───┼───┤ │ GND ├───┤3 VSS │ │ │ ├───┼───┤ │ 3.3V ├───┤4 VDD │ │ │ ├───┼───┤ │ MCU SCK ├───┤5 CLK │ │ │ ├───┼───┤ │ GND ├───┤6 VSS │ │ │ ├───┼───┤ │ MCU MISO ├───┤7 DO │ │ │ ├───┼───┤ │ 3.3V/GND/├───┤8 /WP │ (可选) GPIO │ ├───┼───┤ │ GND └───┤9 /CD │ (推荐接地) └───┴───┘
关键注意事项:
电压电平 (3.3V!): SD NAND是 3.3V 器件。确保:
供电电压是 3.3V。
MCU的SPI接口 (MOSI, MISO, SCK, CS) 工作在 3.3V 电平。如果MCU是5V系统,必须使用电平转换器,否则会损坏SD NAND。
片选 (/CS): 必须由MCU的GPIO控制,不能固定接地或接VCC。一个SPI总线上可以有多个设备,靠不同的片选信号区分。
上拉电阻: 通常在 MOSI (DI), MISO (DO), SCK (CLK) 线上需要连接上拉电阻 (例如 10KΩ 到 50KΩ 到 3.3V),以确保信号稳定,尤其在总线空闲或线长较长时。有些MCU的SPI接口内部已集成可配置的上拉电阻。如果通信不稳定,优先检查并添加上拉电阻。
电源去耦: 在SD NAND的 VDD 和 VSS (GND) 引脚之间,靠近芯片的位置,放置一个 0.1uF (100nF) 的陶瓷去耦电容,以滤除电源噪声。这对于稳定工作非常重要。
初始化: 上电后,MCU需要通过SPI总线发送特定的初始化命令序列 (主要是 CMD0
, CMD8
, CMD55
, ACMD41
) 来初始化SD NAND,将其切换到SPI模式并识别其容量。硬件接线正确是第一步,软件初始化驱动同样必不可少。
/CD 引脚处理: 对于贴片式SD NAND,将/CD (Pin 9) 直接连接到GND 是最简单可靠的做法,省去了外部上拉电阻,并明确告知系统设备始终存在。
/WP 引脚处理: 如果不需要硬件写保护功能,将/WP (Pin 8) 连接到3.3V 或悬空即可。
简单来说,最基本的连接只需要接好以下6条线:
VDD -> 3.3V
VSS (Pin 3) -> GND
VSS (Pin 6) -> GND (最好两个地都接)
/CS -> MCU GPIO (作为SPI片选)
DI -> MCU SPI MOSI
DO -> MCU SPI MISO
CLK -> MCU SPI SCK
/CD -> GND (推荐接地)
/WP -> 3.3V 或 悬空 (不使用写保护)
示例 (以树莓派Pico为例):
SD NAND VDD -> Pico 3V3(OUT)
SD NAND VSS (Pin 3 & 6) -> Pico GND
SD NAND /CS (Pin 1) -> Pico GP15 (任意GPIO)
SD NAND DI (Pin 2) -> Pico GP11 (SPI1 TX / MOSI)
SD NAND DO (Pin 7) -> Pico GP12 (SPI1 RX / MISO)
SD NAND CLK (Pin 5) -> Pico GP10 (SPI1 SCK)
SD NAND /CD (Pin 9) -> Pico GND
SD NAND /WP (Pin 8) -> Pico 3V3(OUT) 或 悬空
(在DI/DO/CLK线上可考虑加10KΩ上拉到3.3V)
按照以上说明连接硬件,并确保使用兼容SD卡SPI协议的库进行软件初始化 (如Arduino的SD.h
库、ESP-IDF的sdspi_host
等),你的SD NAND就应该能在SPI模式下正常工作了。