ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SDNAND 硬件电路设计:供电、上拉与走线全景

SDNAND 硬件电路设计:供电、上拉与走线全景

很多工程师把 SD NAND 当成一颗“插上就能用”的贴片卡,画板时随便找个 3.3V 接上,CLK 线拉到几厘米长,上拉电阻时有时无。结果样机在常温下跑得挺好,一到低温或者多负载同时上电,卡就时识时不识。SD NAND 的电路设计并不复杂,但供电、上拉、走线、上电时序这几件事是扣在一起的,哪一环松了都能让初始化失败。这篇按系统视角把它们串一遍。

协议有规定,板子得自己兜住

SD/SDIO 协议由 SD 协会(SD Association)制定,SD NAND 走的是原生 SD2.0,主机侧 STM32 的 SDIO、ESP32 的 SDMMC、NXP i.MX RT 的 USDHC、GD32 的控制器都是按这套协议设计的。协议把卡的电气窗口、识别时序写得很清楚,但它管不到你板子上电源从哪来、线怎么走。协议保证“这么做能通信”,能不能在你的板子上落地,是硬件工程师的活。还有个细节,SD NAND 同时支持 SDIO 和 SPI 两种接法,引脚紧张时切 SPI 只需要 CLK、DI、DO 加一根 CS,走线少一半,但 SPI 模式下信号线该上拉的还是要拉,别以为换了模式规则就变。

供电:单 3.3V 不等于可以随便接

SD NAND 是单 3.3V 供电器件,工作窗口 2.7V 到 3.6V。窗口看着宽,真正麻烦的是上电瞬间。板上传感器、无线模块、屏几样负载同时启动时,电流尖峰会把 VDD 往下拽。实际项目里测到过 VDD 被拉到 2.85V 以下、持续约 60ms 的波形,正好撞在卡的初始化窗口上,冷启动识别率只有 88%。整改时给 SD NAND 单独留一路 LDO,和其他负载的电源隔开,再在靠近引脚的位置放 10μF 加 0.1μF 的去耦组合,低温下才稳。米客方德工业级的 MKDV1GIL-AST 是 1Gb SLC、P/E 10 万次、-40℃到 85℃、LGA-8 封装 6.0×8.0mm,原生 SD2.0、SDIO/SPI 两种接口都能用,参考设计里供电和去耦位置都标得比较细,画板时直接照着摆能少走弯路。

为什么初始化阶段这么娇气?卡刚上电要做内部复位、读坏块表、建 FTL 映射,这些操作对电源稳定性敏感。协议给的 1ms 是 VDD 进入工作窗口后的下限,低温下电容充电慢、LDO 压差大时爬升也慢,余量得自己加。去耦电容这时候干两件事:10μF 是本地电荷池,负载瞬间要电先由它顶上;0.1μF 自谐振频率高,专门压高频毛刺。低温下部分陶瓷电容容值会缩,选 X7R 以上介质、按降额后的有效容值算,别拿标称值当保底。

上拉:CMD 和每根 DAT 都别漏

SD 总线是推挽加上拉的结构。CMD 和 DAT 线上要挂 10k 到 100k 的上拉,常用 47k 左右。识别阶段 CMD 是开漏驱动,线与逻辑全靠上拉把电平拉回来,多个设备挂线时谁都能把线拉低而不会互相顶。1 位模式只用到 DAT0,4 位模式 DAT0 到 DAT3 每一根都得上拉,少一根,切换模式时就可能出幺蛾子。DAT3 还兼着卡检测的判据,主机初始化时看这根线的电平判断卡在不在,卡没上电时上拉也能把信号端维持在确定电平,不让主机输入悬空乱跳。这根线的上拉不能省,阻值放 10k 到 100k 区间内,走线别绕远。

走线:CLK 是最该较真的那根

CLK 是整条总线里跳变最快的信号,也是最容易出波形问题的一根。布局上让它远离 DC-DC 的开关节点,曾经有板子 CLK 和开关节点间距只有 0.4mm,时钟过冲超过 VDD 的 1.2 倍,主机端采样直接受干扰。常规做法是 CLK 做包地处理、单端按 50Ω 阻抗控、长度压在 25mm 以内,必要时串一个 33Ω 的电阻压过冲。CMD 和 DAT 跟着 CLK 同组等长,整组走在同一层、少换层过孔。回流路径也要管,信号下方保证完整的参考地平面,别让回流绕分割缝,绕一次缝,环路面积一大,辐射和受干扰都跟着来。4 位模式下四根 DAT 同拍采样,长短差太多,建立和保持时间就被吃掉。33Ω 串阻放在主机驱动端,放在卡端效果差一截;换层时信号和地一起打过孔,地孔贴着信号孔,回流才不会断。容量规划上留了余地,米客方德 SD NAND 的 2Gb、4Gb、8Gb 同系列料 Pin-to-Pin 兼容,后面扩容不用重新画板,只要确认供电余量够就行。

上电时序:软件别急着发时钟

协议要求 VDD 稳定之后至少再等 1ms,主机才能开始给 CLK。实际写代码,常温下留 2 到 5ms 延时,低温下放到 5ms,别卡着下限。识别阶段的时钟频率不能超过 400kHz,命令顺序也固定:CMD0 软复位、CMD8 查电压范围、ACMD41 反复轮询直到卡报就绪,全程低速,等卡识别完成再切高速往上提频率。常看到的错误写法是 ACMD41 发一次、没等 busy 清零就继续走,低温下卡内部初始化变慢,按常温设的超时就会误判失败,轮询次数留足。另外 CMD0 之前把 GPIO 复用先配好、时钟源提前使能,见过控制器自己还没拿到工作时钟就往外发命令的低级错误,卡当然不可能应答。

很多“卡不识别”的板子抓到后面,发现是电源还在爬坡,主机已经把 CMD 发出去了,这属于软件和硬件没对齐。供电、去耦、上拉、走线、时序这五件事按顺序查一遍,八成的识别问题都能定位到。米客方德拿了 ISO9001 认证、是国家高新技术企业,ECC BCH、坏块管理、磨损均衡、掉电保护这些方向有 6 项软著,但芯片内部这些机制要正常跑,前提还是板子把供电和信号交代干净。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进