只读分享解决方案文档调试&解决方案📅 2026-10-14🔖 Rev 1.0⏳ 还有3日到期
🔧解决方案&应用市场分析 -> 调试&解决方案 -> 存储_量产问题排查 -> Unknown_ID_主控不认芯片_量产排查

Unknown_ID_主控不认芯片_量产排查

同系列 · 调试&解决方案
扫码打开本页
微信扫码

Unknown ID · 主控不认芯片 量产排查手册

编制日期 2026-10-14 | 版本号 Rev 1.0

XTX 芯天下 · FAE 现场技术文档 | SoC / MCU 侧外挂存储识别失败 (SPI NOR / SPI NAND / SD NAND / eMMC)| 2026-09 版

技术事实核查纪律(执行前必读)

主控控制器寄存器、boot pins 状态、驱动 ID 表添加位置以具体平台手册为准;本文仅展示排查机制。

  • 本文讨论的是主控(SoC / MCU)侧读不到器件,与「烧录器找不到型号」是两件事。判别要点:烧录器能正常建工程、能烧、能校验通过,但板子起不来,就是本文范围;烧录器根本选不到型号,请查《SPI_NOR_烧录找不到型号_解决方案.html》。
  • 命令码(9Fh / 90h / ABh / B9h、SD 与 eMMC 的 CMD0 / CMD1 / CMD2 / CMD8 等)是各介质的常见写法,并非所有器件与所有平台都一致,动手前逐条核对 datasheet。
  • 寄存器名与位域、上电时序数值、复位延时量级、上拉阻值、dummy cycle 数、驱动 ID 表的文件路径与宏名全部以具体平台手册与 SDK 源码为准,本文只回答「要查哪一类、去哪里查」。
  • 涉及解除读保护 / 量产保护的操作在多数平台上会触发全片擦除,属不可逆动作,见第 8 章的危险操作提示。
6 类
主控侧不认芯片的根因归类
接线 · 电源时序 · 驱动参数 · ID 表 · 启动模式 · 芯片状态
3 关
识别链路必过的关卡
物理连通 → ID 读回 → 参数解析,逐关断点定位
9Fh
SPI NOR 读 JEDEC ID 的常见命令码
命令码与返回字节数以具体 datasheet 为准
5 处
主流主控 ID 表的添加位置
linux / U-Boot / RT-Thread SFUD / Zephyr / ESP-IDF
装板实跑
唯一有效的验收动作
烧录器校验通过不能替代主控侧识别成功

结论:「主控不认芯片」永远是这三件事之一—— 命令没送到(接线 / 电源 / 时序)、器件没应答(启动模式错 / 器件锁死)、 应答没被认(驱动参数不匹配 / ID 表里没有这一项)。 烧录器能烧、能校验通过,只证明器件是好的、数据是对的, 不证明主控的控制器和驱动认识它——这两件事之间隔着整整六类根因。

报告总结

解决的是SoC / MCU 上电启动后读不到外挂存储器件的识别信息、整个系统起不来 这一类问题的定位与根治方法,覆盖 SPI NOR / SPI NAND / SD NAND / eMMC 四种介质在 主控侧的识别失败场景。全文按「现象 → 机制 → 类目 → 立即动作 → 根治动作」组织, 第 9 章是可直接翻查的速查表,第 11 章是可带进车间的核查清单。

第 1 类
接线层:pinmux / 电平 / CS# 上下拉
引脚还停在 GPIO 或另一个复用功能上、1.8 V 器件挂在 3.3 V 域、CS# 缺上拉或上拉强度不够。波形上看不到任何有效交互,回读全 FF 或全 00。器件本身完全正常,是「话筒没递过去」。
高发动作:只改驱动不改设备树 / pinctrl
第 2 类
电源与时序层:VCC / VCCQ / 复位延时
多路电源的上电顺序与间隔、复位释放相对电源的延时、控制器驱动能力与走线质量。这一类最容易伪装成「间歇性不良」,因为它随温度、电压、批次漂移。
高发动作:沿用参考板的复位延时
第 3 类
主控驱动与 Flash 参数不匹配
dummy cycle 数与读命令不配套、超过 16 MB 仍用 3 字节地址、SFDP 读不到或解析错、QE 位与 QPI / DTR 模式没谈拢。这一类器件有应答,只是应答被主控解释错了。
高发动作:只按容量换料号不核对参数
第 4 类
主控驱动表未包含新型号
ID 读回来了、值也对,但主控的器件表里没有这一项,于是报 unknown ID 或退回默认参数。linux / U-Boot / RT-Thread SFUD / Zephyr / ESP-IDF 的表位置完全不同,逐个平台对齐。
高发动作:换了料号没同步改驱动表
第 5 类
主控启动模式选错
boot pins 的上下拉电阻决定 BootROM 去哪个介质找启动代码;介质是 SPI NAND 却被配成 SPI 启动,BootROM 会用 SPI 的读法去读 NAND,ID 当然对不上。这一项在改板和换介质时最容易被漏掉。
高发动作:改板后没复核 boot pins 电阻
第 6 类
芯片锁死或处于未知状态
MCU 读保护(RDP / CRP)挡住访问、上一次操作没结束卡在 busy、停在深度掉电模式没唤醒、写保护或量产保护生效。这一类要先把器件从异常状态里请出来,再谈识别。
高发动作:直接判定芯片不良报废

怎么用这份文档

  1. 先按串口输出定画像:把「不认」归到第 1 章六种画像之一,确定断在哪一段,不要一上来就换芯片。
  2. 抓一份「已知好板」基线:把能正常启动那块板的启动日志、回读 ID、控制器寄存器值、 设备树 / pinctrl 配置、boot pins 电阻各存一份,后面所有对比都拿它当基准。
  3. 用第 2 章的三关断点法收敛:先确认物理连通(有没有波形),再看 ID 回读(值对不对), 最后看参数解析(驱动表命中没命中)——不要跳关。
  4. 一次只改一个变量:pinctrl、时序、dummy cycle、ID 表、boot 电阻每次只动一处, 改完重新上电抓日志。
  5. 用装板实跑闭环:任何改动的最终判定,以「装板跑通完整启动 + 关键功能 + 一次断电重启」为准。

1. 问题本质:主控侧的 ID 识别机制

主控「不认芯片」这句话在现场被用得太泛。它可能是控制器根本没发出命令, 可能是发出来了但器件没回,也可能是回了但主控不认识。 本章先把现象还原成机制:讲清主控是怎么认一颗器件的、认出来要满足哪几个条件, 然后把本文的排查对象与「烧录器找不到型号」严格切开——这两件事在产线上被混淆的概率极高, 一混淆就会把几天时间花在错误方向上。

1.1 六种数据画像

现场接到「板子起不来、主控不认芯片」,第一件事是接串口、上电、把输出完整贴出来, 然后按下面六类归档。六类对应的是同一条识别链在不同环节断掉的六种暴露方式, 不是六种独立故障;归档的价值在于它直接决定从第 3 章到第 8 章该先翻哪一章。

完全静默 · 串口一行不出上电电流正常,串口零输出连 BootROM 的第一条打印都没有先查供电、复位、时钟、boot pin先看 类目 5 → 类目 2BootROM 报 unknown ID日志打出 No flash / unknown ID回读 id 常见为 ff ff ff 或 00 00 00控制器起来了,器件没应答先看 类目 1 → 类目 2卡死在识别 · 打印几行就没了SPL 或 BootROM 打几行就停住常卡在等待器件就绪的轮询里复位延时或时序不对是首因先看 类目 2 → 类目 6进低功耗 · 电流很快掉下去启动介质没找到,SoC 自行睡下也可能某个电源域根本没开先确认 boot 模式与电源域先看 类目 5 → 类目 2重启循环 · 反复刷同一段同一段 BootROM 日志不停重放watchdog 或复位线被反复拉供电跌落也会触发这种循环先看 类目 2 → 类目 5间歇性识别 · 时好时坏冷机起不来、热机正常或反之按压芯片或轻拍板子又好了虚焊、电平临界、上拉不足先看 类目 1 → 类目 2六种画像不是六种故障,而是同一条识别链在不同环节断掉的六种暴露方式;归档的价值在于直接决定第 3 章到第 8 章该先翻哪一章。排查起点不是「芯片是不是坏了」,而是「主控把这条识别链配成了什么样、器件在不在它认识的名单里」。
图 1 · 主控侧不认芯片的六种数据画像
归档时的两个提醒

提醒一:先确认串口本身是通的。「完全静默」这个画像有个前提—— 你确定串口波特率、引脚、电平都是对的。见过太多次把波特率配错、或者 TX/RX 接反, 于是把「有输出但乱码」当成了「一行不出」,白白排查半天电源。

提醒二:同一块板可能同时命中多个画像。比如 boot pins 配错(类目 5) 会导致 BootROM 用错协议去读,表现出来的就是「unknown ID」(类目 1 的画像)。 画像定的是先查哪一章,不是只查哪一章。

1.2 与「烧录器找不到型号」的分工

这是本文档最重要的一张表。产线上这两件事经常被当成同一件事处理: 「型号不对,让原厂支持一下」。但它们的发生位置、判定主体、根因集合、解决路径完全不同。 判别方法只有一句话:烧录器能不能正常把活干完。

维度主控侧不认芯片(本文)烧录器找不到型号(另册)
谁在读SoC / MCU 的控制器与驱动(含 BootROM)编程器的算法库与器件支持列表
发生时机板子上电、BootROM / SPL / 驱动初始化时烧录工装建工程、选型号时
典型现象串口无输出、unknown ID、卡死、重启循环、起不来烧录软件报「未找到型号」「不支持该 ID」
判别要点烧录器能正常烧录并校验通过烧录器建不了工程
根因集合接线、电源时序、驱动参数、ID 表、boot 模式、芯片状态算法库版本、器件支持列表、料号选型
解决方向改板 / 改设备树 / 改驱动 / 改 ID 表 / 改 boot 电阻升级算法库、申请新型号支持、核对选型
负责方主控平台方 + 器件原厂 FAE 一起定位编程器厂商 + 器件原厂 FAE
一句话判别

烧录器能烧、能校验通过,板子起不来 → 主控侧问题,看本文。
烧录器建不了工程、选不到型号 → 烧录器侧问题,看《SPI_NOR_烧录找不到型号_解决方案.html》。

两者唯一的交叉点:当主控驱动与烧录器共用同一份「ID → 参数」映射时 (例如同一个 SDK 里的器件表被两边引用),改一侧要连带确认另一侧。

1.3 主控到底是怎么「认」一颗器件的

主控识别一颗外挂存储器件,本质上是一次「发命令 → 收结构化应答 → 查表 → 套参数」的过程。 以 SPI NOR 为例:控制器先把 CS# 拉低,在 SCLK 上送出读 ID 命令, 器件在同一个帧里回出若干字节,主控拿这串字节去自己的器件表里查, 查到了就把表里登记的容量、页大小、扇区大小、支持哪些读命令等参数套给后续所有操作。

识别步骤主控做了什么失败时的可观测现象对应类目
① 供电与时钟给器件上电、等电源稳定、开控制器时钟与分频完全静默、电流异常类目 2
② 引脚复用把引脚从 GPIO 切成 SPI / SD / eMMC 功能SCLK 上没有波形,或波形幅度不对类目 1
③ 发识别命令CS# 拉低,送读 ID 命令,器件同帧回出 ID 字节回读全 FF(没应答)或全 00(总线短路 / 高阻)类目 1 / 2
④ 查驱动表用回读的 ID 字节去器件表里逐条匹配日志报 unknown ID、unrecognized JEDEC id类目 4
⑤ 套参数把表里的容量 / 页大小 / flags 填进驱动结构体型号打印正确,但读写出错或容量不对类目 3
⑥ 走 SFDP(可选)表内没命中时读 SFDP 参数表自动解析SFDP 读不到则退回默认或直接放弃类目 3

关键认知在于:ID 对,不代表参数对。ID 只是查表的键, 真正决定能不能读的是查表之后套上来的那一组参数。这也是为什么现场会出现 「日志打印了正确的型号名,但系统照样起不来」——表项里的 flags 或页大小写错了。

1.4 四种介质的识别依据不同

SPI NOR 靠 JEDEC ID,SD NAND 与 eMMC 靠 SD/MMC 协议里的寄存器与寄存器块应答 (OCR / CID / CSD / EXT_CSD),SPI NAND 则往往是两者都要: 先读 JEDEC ID 确认厂商与型号,再读参数页或查内部表拿几何参数。 四者的识别主体、识别依据、失败表现都不一样,不能互相套用排查套路。

介质识别主体识别依据常见失败表现本文章节
SPI NORSPI 控制器 / spi-nor 驱动JEDEC ID(厂商 + 类型 + 容量),辅以 SFDPunknown JEDEC id、回读 ff ff ff第 5、6 章为主
SPI NANDSPI 控制器 / spi-nand 驱动JEDEC ID + 参数页或内建几何参数表ID 对但容量 / 页大小解析错第 5、6 章为主
SD NANDSD / MMC 主机控制器CMD0 / CMD8 / CMD1 OCR、CMD2 CID、CMD3 RCA、CMD7CMD 超时、OCR 电压不匹配、CRC error第 4、7 章为主
eMMCMMC 主机控制器CMD1 OCR、CMD2 CID、CMD8 EXT_CSD识别到但分区 / 总线宽度 / 速率模式不对第 4、7 章为主
一句话机制

把「主控不认芯片」拆成三个可证伪的命题,逐个排除: ① 命令有没有送到(第 3、4 章:接线与电源时序)、 ② 器件有没有应答(第 7、8 章:启动模式与芯片状态)、 ③ 应答有没有被认(第 5、6 章:驱动参数与 ID 表)。 任何一例现场问题,都必须先回答这三个问题再动手。

2. 识别链路总览:从上电到可用

主控从按下复位到能读写外挂存储,中间要经过一条固定长度的链路。 链路的每一段都有可能断,而不同段断掉的表现又高度相似——这就是「不认芯片」难以定位的根本原因。 本章把这条链路完整摊开,给出五段流程与三关断点, 并给出四类介质各自的识别路径对照。后面六章的所有排查动作,都是在某一关内做细分。

2.1 从上电到可用的五段链路

把主控的启动过程按「谁在用 Flash」切成五段,会发现绝大多数「不认芯片」都集中在第③④⑤段, 而现场最容易被忽略的恰恰是第②段——boot pins 在复位释放的瞬间就被锁存了, 这一段的错误会一路伪装到最后。

主控侧识别链路:从上电到 Flash 可用(顺序与段数以平台手册为准)① 供电与时钟VCC / VCCQ 到位时钟与 PLL 起振串口零输出电流或时钟异常② 复位与 boot pinRST# 释放boot pins 被锁存跑错启动介质直接进下载模式③ 引脚复用与控制器引脚切 SPI / SD分频与模式配置ID 全 FF 或全 00SCLK 上无波形④ 发命令读 IDSPI 送 9Fh 读 IDSD / eMMC 走 CMDID 值不对时好时坏⑤ 查表与套参数表内命中或读 SFDP填容量 / 页 / flags报 unknown id容量 / 页大小错断点定位法:先确认 CS# / SCLK 上有无波形(物理连通)→ 再看 MISO 上有没有 ID 字节回来(器件应答)→最后看驱动日志报的是 unknown id 还是参数错(参数解析)。三关逐关排除,不要跳关。关卡 1 · 物理连通工具:逻辑分析仪或示波器判据:CS# 有下降沿、SCLK 有方波通过:波形干净、边沿陡峭不通过:回到第 3、4 章关卡 2 · ID 读回工具:抓 SPI 帧或看驱动日志判据:MISO 上有非 FF 的字节通过:ID 值与 datasheet 对得上不通过:转到第 7、8 章关卡 3 · 参数解析工具:内核日志 / U-Boot 日志判据:打印出正确型号与容量通过:读写一小段做验证不通过:转到第 5、6 章三关全部通过而系统仍起不来,问题已经不在识别层——转向《烧录成功但不开机》系列文档继续排查。
图 2 · 主控侧识别链路:从上电到 Flash 可用的五段与三关断点
最容易忽略的一段

第②段(复位与 boot pin 采样)。它的错误不会表现为「boot pin 有问题」, 而是表现为后面所有段的现象:BootROM 拿着错误的启动介质去发命令, 于是第④段读回来的 ID 当然不对,日志上看到的就是「unknown ID」。 如果直接跳去查接线和驱动表,会绕一大圈。详见第 7 章。

2.2 三关断点定位法

拿到一块不起来的板,不要从第一章顺着读下去,而是先用三关断点法把范围砍到三分之一。 每一关都只回答一个是非题,用的工具也不同:第一关靠仪器、第二关靠抓帧或日志、 第三关靠日志。

  1. 关卡 1 · 物理连通:示波器或逻辑分析仪挂到 CS# 与 SCLK。 上电复位后如果连一个下降沿都没有,问题在接线层或电源时序层(第 3、4 章); 如果有波形但幅度 / 电平不对,问题在电平匹配(第 3 章)。
  2. 关卡 2 · ID 读回:把 MISO 上的字节解出来,或者看驱动日志里打印的 ID 值。 全 FF 说明器件没应答(查第 7、8 章,以及第 1、2 类); 全 00 多半是总线被拉死或器件没上电; 值不对或时好时坏 多半是时序或电平临界(第 4 章)。
  3. 关卡 3 · 参数解析:ID 读回来了、值也对,就看日志里有没有打印出正确型号与容量。 报 unknown id → 第 6 章;打印了型号但容量 / 页大小错 → 第 5 章。
  4. 三关都过:识别成功但系统仍起不来,问题已经在识别层之外, 转向《烧录成功但不开机》系列文档(SPI NOR / SPI NAND / PPI NAND 分册)。
关卡要回答的问题判据(通过)不通过时去哪一章
关卡 1 物理连通命令有没有送到器件?CS# 有干净的下降沿,SCLK 有方波,边沿陡峭、幅度符合 IO 电平第 3 章(接线层)、第 4 章(电源与时序)
关卡 2 ID 读回器件有没有应答?回读字节非全 FF / 全 00,且与 datasheet 上的 ID 值一致第 7 章(启动模式)、第 8 章(芯片状态)
关卡 3 参数解析应答有没有被认?日志打印出正确型号与容量,读写一小段数据一致第 5 章(驱动参数)、第 6 章(ID 表)

2.3 四类介质的识别路径对照

「ID」这个词在四种介质里指的不是同一个东西。SPI NOR / SPI NAND 的 ID 是一串字节, SD NAND 与 eMMC 的识别则是一整套 CMD 交互,最终拿到的是 OCR / CID / CSD / EXT_CSD 里的字段。 因此「读 ID」这个动作在四类介质上的实现完全不同,不能把 SPI 的经验直接搬到 SD/eMMC 上。

SPI NOR识别主体:SPI 控制器 / spi-nor 驱动识别命令:9Fh 读 JEDEC ID(以 datasheet 为准)正常返回:厂商 ID + 类型 + 容量,3 字节起补充依据:SFDP 参数表(JESD216 系列)典型异常:回读 ff ff ff、unknown JEDEC idSPI NAND识别主体:SPI 控制器 / spi-nand 驱动识别命令:9Fh 读 ID,再读参数页或查内建表正常返回:2~3 字节 ID 加几何参数补充依据:部分器件走 ONFI 风格参数页典型异常:ID 对但容量 / 页大小解析错SD NAND识别主体:SD / MMC 主机控制器识别序列:CMD0 → CMD8 → CMD1(OCR) → CMD2正常返回:OCR 电压窗与 CID 厂商产品名补充依据:CSD 寄存器里的容量与几何典型异常:CMD 超时、电压窗不匹配eMMC识别主体:MMC 主机控制器识别序列:CMD0 → CMD1(OCR) → CMD2 → CMD8正常返回:EXT_CSD 里的容量与分区信息补充依据:总线宽度与速率模式需协商典型异常:识别到但 boot 分区没配对四类介质的识别命令、返回结构、失败表现完全不同,排查前先确认自己在哪一类,不要交叉套用套路。上表命令码、寄存器名、返回字节数均为常见写法,具体以器件 datasheet 与主机控制器手册为准。
图 3 · SPI NOR / SPI NAND / SD NAND / eMMC 的识别路径对照

2.4 先抓一份「已知好板」基线

三关断点法要能用,前提是有一个正确的参照。现场最常见的问题是: 没有基线,于是每一个异常值都无法判断「是不是异常」。因此拿到第一块能正常启动的板, 请先把下面这些项各存一份,命名里带上日期与软件版本。

基线项怎么取用来对比什么对应章节
完整启动日志串口 0 从第一个字节开始全量保存,含 BootROM 与 SPLID 值、型号名、容量、报错行第 5、6、7 章
回读的 ID 字节逻辑分析仪解 SPI 帧,或日志里的 id 打印与 datasheet 标称值逐字节比对第 1、3、4 章
CS# / SCLK 波形上电复位瞬间单次触发抓取,存图有无波形、频率、边沿、幅度第 3、4 章
boot pins 电平万用表 / 示波器量复位期间各 boot pin 电压与平台手册的启动模式表逐条对第 7 章
设备树 / pinctrl导出当前生效的 dts 与编译后的 dtb 反编译结果引脚复用、频率、CS 编号第 3、5 章
控制器寄存器值启动后读一组关键寄存器并保存与坏板同一组寄存器做差第 4、5 章
电源与复位时序多通道示波器抓 VCC / VCCQ / RST# 的相对关系上电顺序与复位延时第 4 章
软件版本清单SDK / U-Boot / kernel / 驱动 ID 表版本号确认两侧是否同一版本第 6、10 章
基线的最小可用集

如果时间只够抓三样,抓这三个:完整启动日志(含 ID 与容量打印)、 上电复位时 CS#/SCLK/SCK 的波形图、设备树 / pinctrl 与 boot pins 电阻照片。 这三样能覆盖第 3~8 章里绝大部分的对比需求。

3. 第 1 类:接线层(pinmux / 电平 / CS# 上下拉)

接线层的问题在统计上不一定是占比最高的,但它是必须第一个排除的—— 因为只要这一层不成立,后面所有层的排查都没有意义:命令根本没送到器件, 你在驱动日志里看到的一切异常都只是「没人应答」的不同写法。

接线层:SoC 与 Flash 之间的六个信号SoC / MCU控制器 + pinmuxSPI NOR外挂存储器件CS#SCLKMOSI / IO0MISO / IO1IO2 / WP#IO3 / HOLD#六条信号缺一不可;Quad 模式还要确认 IO2 / IO3 也在复用组内VCC上拉电阻CS#CS# 上拉:上电期间主控引脚多为高阻,缺上拉会让器件采样到随机命令阻值以原理图与器件 datasheet 为准,阻值过大会拖慢边沿、过小会增加功耗检查点 1:pinmux 寄存器里这几个引脚是否真的切成了 SPI 功能检查点 2:主控 IO 电平域与器件 VCC 是否同一档(1.8 V / 3.3 V)检查点 3:CS# 有没有上拉、上拉挂在哪一路电源上检查点 4:上拉 / 串联电阻取值是否让边沿在允许范围内四个检查点从上到下依次排查,任意一项不满足都会让后面的排查全部失效错法 1 · 引脚还停在 GPIO 态现象:SCLK 上一个波形都没有处置:改 pinctrl / 复用寄存器后重新抓波形错法 2 · 1.8 V 器件挂在 3.3 V 域现象:波形幅度超标、器件完全不应答处置:加电平转换,或把主控 IO 域改到器件侧错法 3 · CS# 缺上拉现象:上电期间总线浮空,冷机概率性失败处置:按原理图补上拉,并验证上电全程电平错法 4 · 上拉过强 / 串阻过大现象:边沿过缓,低频能过、高频读错处置:调整阻值并重抓波形看上升时间
图 4 · 接线层的六个信号与四类典型错法

3.1 pinmux:引脚是不是真的切成了 SPI / SD 功能

现代 SoC 的引脚几乎都是多功能的。复位释放后,多数引脚的默认状态是 GPIO 输入或某个与启动无关的复用功能。 设备树里写了 spi0,不等于引脚已经切到 SPI 功能——pinctrl 组是否真的生效、 有没有被另一个节点抢占、复用寄存器的值有没有被后续代码改写,都要实际确认。

/* 设备树里 SPI 引脚的复用(示例,字段名与取值以平台 BSP 为准) */
&spi0 {
    pinctrl-names = "default";
    pinctrl-0 = <&spi0_pins>;          /* 必须指向真正的 SPI 功能组 */
    cs-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
    status = "okay";

    flash@0 {
        compatible = "jedec,spi-nor";
        reg = <0>;
        spi-max-frequency = <50000000>;  /* 以器件 datasheet 为准 */
    };
};
确认 pinmux 的三条路径
  • 读寄存器:启动后 dump 该组引脚的复用寄存器,与平台手册的功能编码表逐位比对。 这是最直接、也最不容易被表象误导的方法。
  • 看波形:逻辑分析仪挂 SCLK,上电复位后如果一个边沿都没有, 先怀疑复用而不是怀疑器件。
  • 查抢占:同一个引脚组被两个 pinctrl 节点引用时,后加载的那个会覆盖前面的。 把设备树编译成 dtb 再反编译回来核对最终生效值。

3.2 电平匹配:1.8 V 器件与 3.3 V 器件不能混挂

这一点听起来基础,但在换料号与改板时高发:原方案用 3.3 V 器件,换成 1.8 V 的低功耗料号, 板子没改,主控 IO 还在 3.3 V 域。轻则器件长期过压损伤,重则上电即不响应。 反过来 3.3 V 器件挂在 1.8 V 域,则表现为「低压下偶尔能读、常温下不行」。

检查项要求怎么确认不合规的后果
器件 VCC 标称与原理图设计值一致(1.8 V 或 3.3 V,以 datasheet 为准)查料号 datasheet 的推荐工作电压过压损伤或欠压不响应
主控 IO 电平域与器件 VCC 同一档,IO 电平由对应电源域决定查平台手册的 IO 电源域分配表幅度超标或高电平判不到
电平转换跨电压域时必须加,且方向、速率要够查原理图是否有 level shifter、速率是否支持高速读写时误码或完全不识别
VCCQ(eMMC / SD)控制器侧 IO 电源与器件 VCCQ 匹配量 VCCQ 实际电压并与手册比对初始化阶段 CMD 超时
信号幅度高低电平落在器件 VIH / VIL 范围内示波器量实际高电平与低电平间歇性识别、温度漂移
同板多器件同一总线上所有器件的 IO 电平一致逐个查器件 datasheet 的 IO 电平从器件拖垮整条总线

3.3 CS# 的上下拉与上拉强度

CS# 是 SPI 通信的帧定界信号,器件靠它的下降沿判断「一帧开始了」。 上电期间主控引脚多为高阻,如果 CS# 没有外部上拉,总线在这段时间是浮空的, 器件可能采样到随机电平并误判成命令——表现就是冷机起不来、热机正常这类概率性故障。

反过来,上拉也不是越强越好:上拉过小(阻值大)边沿过缓,高速读时建立时间不够; 上拉过大(阻值小)则增加功耗并可能超过主控引脚的灌电流能力。 串联电阻同理,为改善信号完整性加的串阻太大会直接把边沿拖垮。

检查项正确做法怎么确认常见错法
CS# 上拉按原理图在 CS# 上加上拉电阻,阻值以原理图与器件手册为准断电量 CS# 对 VCC 的阻值;上电全程量 CS# 电平完全没上拉,靠主控内部弱上拉凑合
上拉挂哪路电与器件 VCC 同路,避免器件未上电时被反向供电查原理图 net 连接挂在常开电源上,导致器件掉电不彻底
上拉强度兼顾边沿速度与功耗,按走线负载调整抓波形看上升 / 下降时间与过冲照抄参考设计不加调整
串联电阻为抑制反射加的串阻要控制在不破坏边沿的范围内抓波形看建立 / 保持时间阻值过大把边沿拖成斜坡
复位期间电平复位释放前后 CS# 必须稳定为高复位期间单次触发抓 CS# 全程复位期间 CS# 被拉低,器件进入错误状态
WP# / HOLD#不用时按 datasheet 要求上拉或下拉,不能浮空量引脚电平浮空导致器件被意外写保护

3.4 立即动作与根治动作

动作类型具体动作验收标准
立即动作用逻辑分析仪确认 CS# / SCLK 上有没有波形,没有波形就先别看日志上电复位后能看到完整的命令帧
立即动作dump 引脚复用寄存器,与平台手册逐位比对所有涉及引脚的功能编码都对得上
立即动作量器件 VCC 与主控 IO 域的实际电压,确认同一档电压值落在器件 datasheet 的推荐范围内
立即动作断电量 CS# 上拉电阻是否存在、阻值是否与原理图一致阻值与原理图 BOM 一致
根治动作把 pinctrl / 复用配置纳入版本管理,随 SDK 一起评审每次改板都有一份可追溯的复用表
根治动作在试产首件中固定「抓一次上电波形」这个动作并存档首件报告里附有波形图与判读结论
根治动作建立料号 → IO 电平的对照表,换料号时强制核对换料单上有电平核对签字栏
危险操作

不要在带电状态下飞线、短接或改动上下拉电阻。尤其是 CS# 与电源引脚, 短接可能直接损伤器件或主控 IO;改上下拉前必须断电,改完先量电压再上电。

不要用「直接把 1.8 V 器件接到 3.3 V 上试试」的方式验证。 过压损伤是累积性的,试出来「能用」的板子在寿命期内随时可能失效。

4. 第 2 类:电源与时序层

电源与时序层是最会伪装的一类。它不像接线层那样「要么通要么不通」, 而是表现出强烈的温度依赖、电压依赖、批次依赖——冷机起不来、热机正常; 这批板好、下批板不行;加个探头就好了。现场常被误判成「芯片不良」而批量退货, 实际根因只是一路电源的上电顺序反了,或者复位释放早了几毫秒。

上电与复位时序:VCC / VCCQ / RST# / CS# 的相对关系(示意,数值以 datasheet 为准)VCCVCCQRST#CS#① VCC 到达斜率以手册为准② VCCQ 到达不允许早于 VCC③ 复位释放须等电源稳定④ 首次 ID 读取CS# 建立后才发⑤ 稳定工作区判读要点:VCC 与 VCCQ 的先后顺序、复位释放相对电源稳定的延时、CS# 在复位期间是否被可靠拉高——这三项任意一个不合规,都会表现成「间歇性不认」。所有时间量与电压阈值均为示意,必须查器件 datasheet 的「上电与复位时序」章节逐项核对。
图 5 · 上电与复位时序:VCC / VCCQ / RST# / CS# 的相对关系

4.1 VCC / VCCQ 的上电顺序

多路电源器件(典型是 eMMC 的 VCC 与 VCCQ、部分 SPI NOR 的 VCC 与 IO 电源) 对上电顺序有明确要求。规范通常要求核心电源先于或同步于 IO 电源, 且两路之间的间隔有上限。顺序反了或间隔超了,器件内部状态机可能起不来, 表现就是主机侧 CMD 或 SPI 命令完全无应答。

检查项要求(以 datasheet 为准)怎么量不合规的典型表现
上电顺序核心电源先于或同步于 IO 电源双通道示波器同时抓两路电源的上升沿器件完全不应答,CMD 或 SPI 超时
两路间隔不超过 datasheet 规定的上限量两路电源到达阈值的时间差偶发不识别,随温度变化
电源斜率上升斜率在允许范围内,不能过缓量 10%~90% 上升时间内部上电复位电路不释放
电压精度稳态电压落在容差范围内带负载量稳态电压,不能只量空载低压下读写错,量产后才暴露
掉电完整性掉电要掉到底,不能有残压断电后量各路电源的放电曲线快速上下电后器件状态异常
复位释放在电源稳定之后,且满足最短复位脉宽多通道抓电源与复位线的相对关系概率性不识别,复现无规律

4.2 复位释放与延时

器件上电后需要一段时间完成内部初始化,这段时间内它不响应任何命令。 主控侧必须等到这段时间过去再发第一条命令。常见的两个错法:

  • 复位释放太早:主控的复位释放与电源稳定之间没有留够延时, BootROM 在器件还没醒的时候就开始发识别命令,读到全 FF。
  • 只查了主控侧延时,没查器件侧要求:以为「主控起来了器件就该就绪」, 实际器件的上电就绪时间往往比主控的复位释放时间长,两者的差必须由软件延时或硬件 RC 保证。
延时量级怎么定

本文不给出具体数值——不同器件、不同容量的上电就绪时间差异很大。 正确做法是:查器件 datasheet 里「上电与复位时序」章节给出的时间参数, 再加上主控侧的电源稳定时间,取二者之和并留余量。量产阶段建议用示波器实测 「电源稳定 → 复位释放 → 第一条命令」的实际间隔,而不是只看代码里的延时值。

4.3 控制器驱动能力与信号完整性

这一类常被归到「硬件问题」而推给 Layout,但从主控侧看它是可编程的: 多数 SoC 的引脚驱动强度(drive strength)、压摆率(slew rate)都是可以配置的。 默认配置未必适合当前走线——走线长、负载重、多器件并联时,默认驱动强度常常不够。

现象可能原因怎么确认处置
边沿过缓、上升时间过长驱动强度配置偏弱,或走线负载过重抓波形量上升 / 下降时间提高引脚驱动强度(以平台手册为准)
过冲 / 振铃明显阻抗不匹配、缺少端接抓波形看有无振铃调整串阻或改为更低驱动强度
高频读失败、低频正常建立保持时间不足对比不同频率下的波形与误码降频验证,再决定是否改善走线
加了探头就好了探头电容改变了负载特性换低电容探头对比说明原本就在临界,必须改板或改参数
多器件并联时速率下降总线负载超过驱动能力逐个摘除器件对比减少并联数量或加缓冲
长线传输误码走线过长、参考平面不完整查 PCB 走线与回流路径改板,缩短走线或加屏蔽

4.4 立即动作与根治动作

动作类型具体动作验收标准
立即动作多通道示波器抓 VCC / VCCQ / RST# 的相对关系,与 datasheet 逐项比顺序、间隔、斜率、脉宽全部合规
立即动作实测「电源稳定 → 复位释放 → 第一条命令」的间隔间隔大于器件上电就绪时间并有余量
立即动作带负载量各路电源稳态电压,而不只是空载全部落在 datasheet 容差内
立即动作在最高温与最低温各跑一次上下电循环全温范围内识别成功率 100%
根治动作把电源时序要求写进原理图评审清单与 BOM 备注评审记录里有时序核对项
根治动作量产测试增加快速上下电循环项目连续循环不出现识别失败
根治动作驱动强度与压摆率配置纳入版本管理,随板级变更评审配置与板版本一一对应可追溯
相关报告 · 交叉引用 4 器件全部展开收起 ▾
点开类目即可展开:具体文档 / 章节(点章直接跳转到该章)
SPI NOR
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查2
系统设计指南
eMMC
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查
SPI NAND
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查4
全志平台 SPI NAND NOR
章节(点章跳转,共 11 章)
海思平台 SPI NAND 量产常见失败
章节(点章跳转,共 11 章)
烧录成功但不开机 SPI NAND
章节(点章跳转,共 12 章)
瑞芯微平台 SPI NAND eMMC
章节(点章跳转,共 11 章)
系统设计指南3
SD NAND
电路设计指南
软件设计规范
Linux 驱动开发
量产问题排查
其他提及器件(共 1)
PPI NAND(并行NAND)
电路设计指南
软件设计规范
Linux 驱动开发
量产问题排查