首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >从Flash闪存基础到SD NAND实测:一颗“贴片式TF卡”是怎么工作的

从Flash闪存基础到SD NAND实测:一颗“贴片式TF卡”是怎么工作的

原创
作者头像
用户11143476
发布2026-04-14 15:25:31
发布2026-04-14 15:25:31
680
举报
文章被收录于专栏:SD NANDSD NAND

一、前言

如果你拆过行车记录仪、无人机或者工业控制器,可能会在电路板上发现一颗黑色的小芯片,大小只有指甲盖的一半,底部有焊盘直接贴在板子上。这颗芯片就是SD NAND,也叫贴片式TF卡。

它和普通TF卡功能一样,但不需要卡座,直接焊接。那么它内部是怎么工作的?和普通NAND Flash有什么区别?实际性能如何?

这篇文章从Flash闪存的基础知识讲起,再到SD NAND的原理和实测数据,尽量写得通俗易懂。

二、Flash闪存基础

2.1 什么是NAND Flash

NAND Flash是一种非易失性存储器,断电后数据不会丢失。它广泛用于U盘、SSD、存储卡等产品。

NAND Flash的基本存储单元是“浮栅晶体管”。通过控制浮栅里的电荷量来表示0和1。写入数据时,给晶体管施加高压,电荷穿过氧化层进入浮栅。擦除数据时,反向施加高压,把电荷拉出来。

2.2 SLC、MLC、TLC的区别

NAND Flash按每个单元存储的比特数分为几种类型:

  • SLC:每单元存1比特,只有0和1两种状态。速度快、寿命长(约10万次擦写)、成本高。
  • MLC:每单元存2比特,4种状态。速度、寿命、成本居中。
  • TLC:每单元存3比特,8种状态。容量大、成本低,但寿命短(约500-1000次擦写)。
  • QLC:每单元存4比特,16种状态。容量更大,寿命更短。

简单理解:一个房间住的人越少,住得越舒服,但人均成本越高。SLC是“单人间”,TLC是“八人间”。

2.3 NAND Flash的几个痛点

NAND Flash有几个天生的问题,需要主控来处理:

坏块:出厂时就可能有坏块,使用过程中还会产生新坏块。主控必须能识别坏块并跳过。

位翻转:读取时可能出现比特错误,需要ECC纠错来检测和纠正。

写放大:NAND不能覆盖写,必须先擦除再写入。擦除以块为单位,写入以页为单位,导致实际写入量大于逻辑写入量。

磨损:每个块的擦写次数有限,需要磨损均衡算法让所有块的擦写次数平均。

这些问题在裸NAND芯片上都需要主控来处理,而SD NAND把这些都封装好了。

三、SD NAND是什么

SD NAND可以理解为“内置了SD控制器的NAND Flash”。它把一颗NAND闪存和一颗SD控制器封装在一起,对外提供标准的SD接口。

它的几个别名:贴片式TF卡、SD Flash、工业级SD卡。

核心特点

  • 即贴即用:直接焊接在PCB上,不需要卡座
  • 接口标准:兼容SD2.0/SD3.0,支持SDIO和SPI模式
  • 内置算法:ECC纠错、坏块管理、磨损均衡、垃圾回收
  • SMART功能:可监测写入量、坏块数、剩余寿命

我拿到的是MK米客方德的SD NAND样品,型号MKDV2GIL-AST,容量2Gbit(256MB),SLC颗粒,工业宽温级(-40℃~85℃),LGA-8封装,6x8mm。

四、SD NAND和普通TF卡的区别

项目

SD NAND(贴片式)

普通TF卡

连接方式

焊接

插拔式卡座

占板面积

6x8mm

卡11x15mm+卡座

抗震性

一般(弹片疲劳)

工作温度

-40℃~85℃

0℃~70℃

闪存类型

SLC/pSLC/MLC/TLC可选

多为TLC/QLC

擦写寿命

SLC 10万次

TLC 500-1000次

SMART

支持

不支持

可更换

不可(需热风枪)

可插拔

核心差异:SD NAND面向工业场景,强调可靠性和长寿命;普通TF卡面向消费场景,强调成本和可更换性。

五、实测数据

5.1 测试环境

  • 主控:STM32F407,SPI模式
  • 电源:3.3V
  • 测试工具:H2testw、Agilent U1252B万用表、高低温箱

5.2 功耗测试

状态

电流

待机(CS拉高)

80μA

连续读取

25mA

连续写入

41mA

待机仅80μA,对于电池供电的设备来说非常友好。读取电流25mA,在SPI模式SD卡中属于较低水平。

5.3 速度测试

PC端通过读卡器测试:

  • 读取:约21.8 MB/s
  • 写入:约10.1 MB/s

STM32 SPI模式(25MHz):

  • 读取:约2.5 MB/s
  • 写入:约1.8 MB/s

SPI模式速度受限于总线,但对于日志存储、传感器数据采集等应用完全够用。如果需要更高速度,可以切换到SDIO模式。

5.4 温度测试

温度

结果

-40℃

启动正常,读写正常

+25℃

正常

+85℃

启动正常,读写正常

连续运行72小时,未出现错误。宽温指标扎实。

5.5 与TF卡对比

在同一块板子上对比TF卡槽+普通TF卡(闪迪Class 10):

测试项

SD NAND

TF卡槽+普通卡

振动测试(50Hz/1mm)

通过

500次后偶发掉卡

高温写入(85℃)

正常

70℃以上偶发错误

待机功耗

80μA

约150μA

初始化成功率

100%

卡座氧化后下降

振动测试中,TF卡槽在500次振动后开始偶尔掉卡,应该是卡座弹片疲劳导致的接触不良。SD NAND焊接固定,全程正常。

六、SMART功能

SD NAND支持SMART,通过CMD56命令可以读取健康状态信息。

我写了一个简单的读取函数,每星期读取一次:

c

// 读取SMART数据

uint8_t cmd[6] = {0x56, 0x00, 0x00, 0x00, 0x01, 0x00};

sd_send_cmd(cmd, 6);

for (int i = 0; i < 512; i++) {

smart_data[i] = spi_read();

}

解析出的信息包括:

  • 总写入数据量
  • 出厂坏块数、新增坏块数
  • 剩余使用寿命(%)
  • 正常/异常掉电次数

目前写入量约2GB,新增坏块数为0,剩余寿命100%。这个功能对于工业设备的预防性维护很有价值。

七、驱动开发要点

7.1 初始化流程

c

// 1. 上电后发至少74个时钟

for (int i = 0; i < 10; i++) spi_write(0xFF);

// 2. CMD0复位

sd_cmd(CMD0, 0, 0x95); // 响应0x01

// 3. CMD8检测电压

sd_cmd(CMD8, 0x1AA, 0x87); // 响应0x01

// 4. 循环ACMD41等待初始化完成

do {

sd_cmd(CMD55, 0, 0x01);

r1 = sd_cmd(ACMD41, 0x40000000, 0x01);

} while (r1 != 0x00);

注意:初始化时钟必须低于400kHz,否则CMD0可能无响应。

7.2 读写操作

c

// 读单块

sd_cmd(CMD17, sector, 0x01);

while (spi_read() != 0xFE);

for (int i = 0; i < 512; i++) buf[i] = spi_read();

// 写单块

sd_cmd(CMD24, sector, 0x01);

spi_write(0xFE);

for (int i = 0; i < 512; i++) spi_write(buf[i]);

while (spi_read() != 0xFF); // 等待写入完成

写操作后的忙检测不可省略。

这颗SD NAND用下来,几点感受:MK SD NAND待机仅80μA、封装6x8mm、支持宽温和SMART预警,适合对抗振、长寿命有要求的工业场景,但成本高于普通TF卡且不可插拔。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、Flash闪存基础
  • 三、SD NAND是什么
  • 四、SD NAND和普通TF卡的区别
  • 六、SMART功能
  • 七、驱动开发要点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档