上电不识别 / ID 读不到 · 样机排查手册
编制日期 2026-09-21 | 版本号 Rev 1.0
XTX 芯天下 · FAE 现场技术文档 | 样机阶段 SoC / MCU 读不到外挂存储(SPI NOR / SPI NAND / SD NAND / eMMC)| 2026-09 版
命令码、寄存器位、上拉阻值、上电时序与初始化时间全部以所用型号的 datasheet 与主控平台手册为准;本文只讲排查机制与分工,不代替代号核对。
- 本文针对的是样机阶段:板子刚焊好或刚改完,主控上电后根本读不到器件。与「烧录器找不到型号」「量产阶段偶发不认」是两个场景,判定路径不同。
- 文中出现的命令码(9Fh / 90h 一类)、eMMC/SD 的命令名(CMD0 / CMD8 / ACMD41 一类)只是用来描述该看哪一段波形,具体码值与时序参数逐条核对 datasheet。
- 涉及改电压域、割线、短接电源的动作必须先断电、先确认极性,见第 3 章危险操作提示。
- 任何一次判定都要落到实测数据(电压值、波形截图、换料编号),不接受「应该是好的」这种结论。
一句话结论:「ID 读不到」从来不是一个故障,而是五个前提里至少断了一个的共同表现——没上电、没选中、没时钟、命令没送到、器件不应答。这五环里前四环全是硬件与板级问题,所以在示波器看到一次合法的「CS# 拉低 + CLK 有时钟」之前,改驱动参数、加 ID 表、打补丁,全都是在给一个没接通的链路做软件手术。
这份文档解决什么
解决样机上电后主控完全识别不到外挂存储器件这一类问题:串口打出 Unknown ID、id 00 00 00、或调试器读 ID 回全 FF / 全 00,eMMC/SD 侧则表现为枚举超时、命令发下去没有回应。第 6 章是可直接翻查的现象速查表,第 7 章是可带进车间的核查清单与结案栏。
怎么用这份文档
- 先把现象归档:接串口、上电、把完整 LOG 贴出来,对照第 1 章的三类画像,确认是「全 FF」「全 00」还是「有值但不认」。
- 严格按五步顺序走:供电 → 接触 → 波形 → 交叉 → 判读。每一步都有明确的退出条件,不达标不许往下走——跳步是这类案子拖几天的头号原因。
- 先抓一份已知好板基线:把能正常启动那块板的 LOG、读回 ID、电压实测值、波形截图各存一份,后面所有对比都拿它当基准。
- 一次只改一个变量:换芯片、剪飞线、改上拉、改 pinmux 每次只动一处,改完重新上电并留存证据。
- 落在数据上结案:第 7 章的结案栏逐项填完,「验证方式」与「是否可进试产门禁」这两栏不许留空。
1. 问题本质:读 ID 是一条前提链
「ID 读不到」在现场被当成一种故障,其实它是一整条前提链断掉之后的共同终点:主控要拿到一个正确的 ID,需要芯片先有电、先被选中、先收到时钟、先收到命令,最后才谈得上应答。本章把这条链拆成五环,并给出每一环断掉时的读回特征——后面的所有排查,都是在逐环证实或证伪。
1.1 五环前提:缺一环就没有 ID
读 ID 这事对器件的要求极低:不需要任何配置、不需要开 QE、不需要 4 字节地址,只要上电、选中、给时钟、发命令,器件就会把 ID 送出来。正因为门槛低,它才是排查第一刀——也正因为门槛低,一旦读不到,问题一定出在这几个最基本的环节上。
用法是从上往下逐环证实:电源测到就打钩,片选看到就打钩,打到某一环打不上钩,根因就在那一环,后面的章节不用翻。
读 ID 失败只有两种可能:器件没收到命令,或者器件收到了但主控不认识回的值。读回是全 FF 或全 00,就说明链路根本没打通,此时改驱动参数、加 ID 表,等于给一根断掉的网线改 IP 地址。
1.2 三类 LOG 画像
接串口、上电、把输出完整贴出来,按下面三类归档。三类画像对应的排查入口完全不同,归档错了就会在错误方向上耗掉半天。
| 画像 | 典型 LOG / 读回 | 它说明了什么 | 优先翻哪一章 |
|---|---|---|---|
| 全 FF 型 | id ff ff ff / 0xFF 0xFF 0xFF | 链路没打通:没上电、没选中、数据线开路或方向反了 | 第 3、4 章 |
| 全 00 型 | id 00 00 00 / 全 0x00 | 数据线被拉死:短路、连锡、电平域错、器件已损坏 | 第 3、5 章 |
| 有值不认型 | Unknown ID / 值非零但报错 | 链路是通的,问题在驱动表或参数解析,不是本文主线 | 另见主控驱动专篇 |
表格里的「优先翻哪一章」按出现概率排,不是按章节顺序。全 FF 与全 00 两类占了样机阶段不认芯片的绝大多数,判掉这两类,剩下的问题规模会小一个数量级。
1.3 为什么「先改驱动」基本无效
样机阶段最常出现的动作序列是:不认芯片 → 改设备树 → 换驱动 → 打补丁 → 怀疑料有问题 → 换芯片 → 还是不行 → 最后发现某个电源没起来。问题在于前四步全部作用在一条根本没通的链路上。
| 改动的层次 | 它影响的是哪一环 | 链路没通时是否有效 |
|---|---|---|
| 驱动 / ID 表 | 主控如何解释读回的值 | 无效:值都没读回来 |
| dummy cycle / 模式位 | 读命令之后的时序 | 无效:命令阶段就失败了 |
| pinmux / pinctrl | 引脚是否切到控制器 | 有效:直接决定 CS#/CLK 有没有信号 |
| 供电 / 上拉 / 焊接 | 芯片有没有电、有没有被选中 | 有效:这是链路的物理前提 |
四层里只有下面两层在链路没通时仍然有效,所以顺序必须是「先物理层、后协议层」。倒过来会得到一堆互相矛盾的实验结果——因为链路时通时断时,任何软件改动都会看起来有点效果。
1.4 与「烧录器找不到型号」的区别
烧录器能建工程、能烧、能校验通过,但板子起不来——链路在板子上不通,属于本文范围;烧录器根本选不到型号——那是烧录器型号库与容量档位的事,走另一条路径。两者的第一证据也不同:主控侧看串口 LOG 与示波器波形,烧录器侧看软件报错码。混淆这两件事,是样机阶段最常见的方向性错误。
2. 快速分流:五步决策树
本章是整份文档的主干。五步分流的设计目标是:用最低的仪器门槛,把根因收敛到一个可动手的层级。前两步只需要一把万用表,第三步才需要示波器,第四步才需要备料。每一步都有明确的退出条件——不达标不许往下走,因为后面的步骤都建立在前一步的结论上。
2.1 五步的判据与退出条件
决策树画的是动作顺序,下表给出每一步的合格判据与退出条件。判据必须是可观测的量(电压值、波形形态、换料结果),不能是「感觉应该没问题」。
| 步骤 | 动作 | 合格判据(达标才能往下走) | 不达标时的处置 |
|---|---|---|---|
| ① 供电 | 万用表直流档测芯片引脚处 VCC(eMMC 加测 VCCQ) | 实测值在规格内,上电稳定无跌落 | 查 LDO 使能脚、上电顺序、限流、对地短路 |
| ② 接触 | 手按封装再读一次;卡座类换座重读 | 不按也能稳定读出,多次上电一致 | 补焊 / 重新植球 / 换座 / 查簧片 |
| ③ 波形 | 示波器挂 CS#、CLK、DO,单次触发抓读 ID 事务 | CS# 有低脉冲、CLK 有方波、DO 有翻转 | 查 pinmux、CS 上拉、飞线长度与地回流 |
| ④ 交叉 | 好芯片装坏板、可疑芯片装好板,各读一次 | 故障明确跟板走或跟芯片走 | 跟板走查飞线与主控侧;跟芯片走查料与焊 |
| ⑤ 判读 | 把前四步实测数据填进第 7 章结案栏 | 根因有实测证据,可复现可消除 | 证据不足则回到 ① 重走,不许推测结案 |
五步走完,手上应该有:一组电压实测值、一组波形截图、一次换料记录。这三样东西决定了你能不能在评审会上说服别人,也决定了三天后这个案子复现时你能不能接得上。
2.2 一次只改一个变量
这条规则在「时好时坏」的案子里尤其关键。间歇性故障的本质是某个物理量处在临界点上,此时任何改动都可能让它暂时好转,从而产生错误的因果判断。
- 一次只动一处:换芯片、剪飞线、加电容、改上拉,每次只做一件,做完固定下来再动下一件。
- 用次数说话:判定「修好了」的标准是连续上电 20 次以上全部通过,一次通过不算。
- 先固化复现条件:如果只有低温/高温/某个电压下才出现,先把复现条件写成可执行的步骤,再谈改动——否则你无法判断改动到底有没有效果。
2.3 先抓「已知好板」基线
没有基线就没有「差异」可言。样机阶段最容易犯的错,是拿着一块从来没通过电的新板,试图从零判断波形「正不正常」。基线抓一次不到半小时,但能让后面每一步对比都有锚点,回报率最高。
- 启动 LOG:好板串口完整输出存一份,用来对比报错位置与顺序。
- 读回 ID:同颗料在好板上的读回值,用来确认 ID 值本身对不对。
- 电压实测:逐点测 VCC / VCCQ 并记录,用来对比坏板是否偏低或跌落。
- 波形截图:抓一次读 ID 三路波形,用来对比 CS# / CLK / DO 形态差异。
- 配置快照:设备树 / pinctrl / 启动电阻存档,用来找出改板引入的变更。
3. 第 1 步 · 供电:万用表能解决的就别动烙铁
供电层的排查不需要任何昂贵仪器,却判掉了样机阶段近一半的不认芯片案子。本章给出必测点清单、上电顺序与使能脚的查法,以及电压域错接这类一旦发生就会直接烧片的危险操作边界。
3.1 必测点与判据
关键细节:测芯片引脚,不要测电源输出。LDO 输出正常不代表芯片引脚上有电——中间隔着走线、磁珠、0 Ω 电阻和焊点,任何一处断开都会让芯片侧无电。
| 测点 | 怎么测 | 合格判据 | 不达标时的第一动作 |
|---|---|---|---|
| VCC(芯片引脚) | 直流档,黑表笔接 GND,点芯片 VCC 引脚或去耦电容 | 实测值在规格内 | 沿供电网络往上游逐点测,定位断开点 |
| VCCQ(eMMC) | 同上,单独测 VCCQ 引脚 | 有电且在规格内 | 查 VCCQ 的 LDO 是否使能 |
| GND 连通性 | 蜂鸣档测芯片与主控 GND | 导通,接近 0 Ω | 查共地过孔与地平面分割 |
| 对地阻抗(断电) | 断电后测 VCC 对 GND 阻值 | 无短路 | 排除连锡后再上电,禁止反复试 |
| 上电瞬间跌落 | 示波器直流耦合并触发抓上电 | 单调上升,无回沟 | 加大去耦、查电源带载 |
万用表读的是平均值,测不出上电瞬间的跌落和纹波。如果电压平均值正常但器件仍不认,换示波器看上电曲线:LDO 软启动过慢、限流保护反复打嗝、大电容充电拉垮前级,这些都会表现为「万用表看着正常,器件就是不干活」。
3.2 上电顺序与 LDO 使能脚
多路电源有顺序要求时(例如先 core 后 IO、先 VCC 后 VCCQ),顺序错了器件可能进入不确定状态,表现为完全不应答。样机阶段最常见的是LDO 的使能脚没被拉起来——软件没配 GPIO、上拉电阻漏贴、或者使能脚被另一个电源域控制。
- 先查原理图:有几路电源、每路使能脚由谁控制、有无上电顺序要求。
- 再测使能脚:上电后确认它真的到了有效电平(高低依设计而定)。
- 核对上电顺序:必要时用双通道示波器抓两路电源上电沿(数值以 datasheet 为准)。
- 最后才动软件:确认是 GPIO 没配就补配置,确认电阻漏贴就补件。
- 1.8 V 器件接到 3.3 V 域会直接损坏芯片,且往往表现为读 ID 全 00 或芯片发烫。上电前必须先确认 IO 电平域,电平域问题另见电压域专篇。
- 禁止带电飞线、带电焊接:飞线搭到相邻引脚会造成瞬时短路,轻则锁死 LDO,重则打穿芯片 IO。
- 怀疑短路时不要反复上电试:先断电打阻值确认,反复上电会把原本可恢复的连锡烧成永久损坏。
- 割线前必须确认该网络没有其它负载,割断后要确认断口两侧确实分离,避免留下隐性半连。
3.3 eMMC / SD 的双电源
eMMC 有 VCC(存储阵列)与 VCCQ(控制器与接口 IO)两路电源,两路分离供电时缺任何一路都会导致枚举超时。这是 eMMC 侧与 SPI 侧最大的差异,也是最容易漏测的一项。
| 电源 | 作用 | 缺失时的典型表现 |
|---|---|---|
| VCC | 存储阵列供电 | 器件完全不应答,命令无任何回应 |
| VCCQ | 控制器与接口 IO 供电 | 命令可能发得出但收不到回应,或回应错乱 |
两路的具体电压值、上电顺序要求与容差以所用型号的 datasheet 为准;本文不给出具体数值,避免不同型号之间张冠李戴。
4. 第 2-3 步 · 接触与波形:把「没选中」和「没上电」分开
供电确认之后,剩下的核心问题是:主控到底有没有把片选拉低、有没有给时钟、数据线有没有通。接触决定了信号能不能过去,波形决定了信号过去了没有。这两步做完,「命令没送到」和「器件不应答」就能被彻底分开。
4.1 接触层:手按、换座、补焊
接触类故障的典型特征是状态可随外力改变:手按一下就好,松开又不行;换个座子就好,换回来又不行。这类故障最容易伪装成软件问题,因为它的表现是随机的。
| 现象 | 指向的接触问题 | 验证动作 | 根治动作 |
|---|---|---|---|
| 手按封装就能读 ID | BGA 底部空焊 / 引脚虚焊 | 松开复现、按下恢复,重复三次 | 重新植球 / 补焊,查钢网与回流曲线 |
| 换座后正常 | 座子簧片变形、弹力衰减 | 换回原座复现 | 换座子,检查工装压合次数 |
| 按压某个方向才正常 | PCB 焊盘翘起或微裂 | 沿不同方向按压定位 | 查 PCB 焊盘与过孔 |
| 冷机不行、热机就好 | 焊点微裂,热胀后接触 | 热风枪局部加热后复测 | 补焊,查热应力设计 |
| 换芯片后正常 | 原芯片焊点或芯片本体 | 原芯片装到好板复测 | 跟芯片走则查批次与来料 |
手按能恢复只证明了根因是接触,不代表故障已消除。判定修复的标准是不加外力、连续上电 20 次以上全部稳定通过。只做到「手按能过」就把板子放行,是最典型的样机阶段漏网动作。
4.2 波形层:三条信号各自必须出现的东西
示波器是解决「ID 读不到」的决定性工具。不需要抓多复杂的东西,只要确认三件事:CS# 有没有被拉低、CLK 有没有时钟、DO 在事务窗口内有没有翻转。下图给出一次正常读 ID 事务的三路波形形态与判读要点。
三路都正常却仍然读不到 ID,只剩两种可能:命令字节本身不对(命令码、模式、地址宽度以 datasheet 核对),或者器件处于某种异常状态(保持态、复位态、深度掉电)。
4.3 探点规范与判读要点
| 信号 | 推荐探点 | 看什么 | 异常时的含义 |
|---|---|---|---|
| CS# | 芯片侧 CS# 引脚 | 读 ID 期间是否有干净低脉冲 | 主控侧有、芯片侧没有 → 走线断 |
| CLK | 芯片侧 CLK 引脚 | 是否有连续方波、频率是否合理 | 无时钟 → 控制器没起或 pinmux 没配 |
| DO / MISO | 芯片侧 DO 引脚 | 是否从高阻变为有驱动翻转 | 一直高 → 未上电;一直低 → 被拉死 |
| DI / MOSI | 芯片侧 DI 引脚 | 是否有命令字节的翻转 | 无翻转 → 主控没发命令 |
| VCC | 去耦电容两端 | 事务期间是否跌落 | 跌落 → 电源带载不足 |
探主控侧引脚只能证明主控发出了信号,不能证明信号到达了芯片。走线断、过孔不通、串阻焊反、座子接触不良,都会造成「主控侧有、芯片侧没有」。所有关键判读都必须在芯片侧引脚上完成。
4.4 飞线与转接板引入的故障
样机阶段为了改板方便,飞线和转接板是常规手段,但飞线过长带来的反射与串扰在高速下会直接表现为时序违规,而探头本身的电容也会改变信号边沿——这些都要算进误差里。
飞线或转接板状态下通过的结论,不代表焊接状态下也通过;反之,飞线状态下失败也不能直接判定芯片不良。正确做法是:飞线状态先做交叉验证定位层级,定位后再回到正式焊接状态做最终确认。常见引入项有三类:飞线过长带来反射与串扰(剪短、加地回流、先降频验证);多根飞线并行造成 CLK 对 DO 的串扰(分开走、加地隔离);探头电容改变信号边沿(用 10× 档或有源探头)。