只读分享解决方案文档调试&解决方案📅 2026-10-14🔖 Rev 1.0⏳ 还有3日到期
🔧解决方案&应用市场分析 -> 调试&解决方案 -> 存储_样机问题测试 -> 波形时序异常_CS_CLK_DI_DO_样机排查

波形时序异常_CS_CLK_DI_DO_样机排查

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

波形时序异常(CS / CLK / DI / DO)· 样机排查手册

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

XTX 芯天下 · FAE 现场技术文档 | 样机阶段四线波形判读与整改(SPI NOR / SPI NAND / SD NAND / PPI NAND / eMMC)| 2026-09 版

技术事实核查纪律(动手前必读)

本文所有时序参数、命令码、寄存器位与控制器配置项,都只写通用机制与排查方向;具体数值一律以器件 datasheet 与主控手册为准。

  • SPI 的 CPOL / CPHA 组合、dummy cycle 数、命令码(读 JEDEC ID 常见为 9Fh)在不同器件与主控上并不统一,动手前逐条核对手册。
  • 建立 / 保持时间、时钟频率上限、IO 电平门限、上拉阻值以 datasheet 的 DC / AC 特性表为准,本文只讲「在哪一沿量、量什么」。
  • eMMC / SD NAND 走 CLK / CMD / DAT 协议而非四线 SPI,本文的形态学判据可以类比,但采样沿、枚举时序与寄存器定义以对应协议与专篇为准;飞线寄生引入的问题另见《飞线与转接板引入故障_样机排查.html》。
4 线
样机阶段唯一的一手证据
CS# / CLK / DI / DO,先认形态再谈根因
7 类
四线上最常见的异常形态
CS · CLK · 浮空 · 三态 · 裕量 · 模式 · 边沿
降频
第一把验证刀
降到 1/4 立即恢复 → 时序裕量问题
弹簧地
接地方式决定波形真假
长鳄鱼夹地线会造出假振铃
一次只改一处
唯一有效的收敛纪律
改完重抓同一帧,逐项留截图

结论:样机阶段的波形异常, 先分清是「测出来的」还是「板子上的」——换接地方式波形就变,是测量问题; 换接地方式波形不变而降频就好,是时序裕量问题; 降频也不好,就别再盯着波形,去查驱动配置与器件状态。 四线里 CS# 定帧边界、CLK 定采样时刻、DI 定命令有没有送到、DO 定器件有没有应答, 逐根确认比通盘乱猜快一个数量级。

报告总结

解决的是样机阶段看 SPI 四线(以及 eMMC / SD 的 CLK、CMD、DAT)波形时, 看着「不对劲」却说不清是哪一类问题的定位与整改。覆盖 SPI NOR / SPI NAND / SD NAND / PPI NAND / eMMC 的常见异常形态, 按「形态 → 根因 → 处置 → 验证」组织:第 6 章是可翻查的速查表,第 7 章是可带的核查清单。

第 1 类
CS# 未拉低 / 提前释放
引脚复用没配、软件 CS 有效电平写反、分包处提前释放片选、CS# 缺上拉浮空。 表现为器件没被选中或操作被中途截断。
高发动作:只改驱动不改 pinctrl / 设备树
第 2 类
CLK 毛刺、振铃、占空比失衡
阻抗失配与飞线过长造成振铃过冲、串扰耦合出毛刺、分频配置导致占空比偏离 50%。 过冲越门限会被当成多余时钟沿。
高发动作:用杜邦线飞 CLK 还跑几十 MHz
第 3 类
DI / DO 无人驱动(浮空)
某一根停在 VCC/2 附近并随噪声漂移,说明这条线上没有任何一方在驱动: 引脚复用没配、器件没上电虚焊,或你认错了阶段。
高发动作:看到波形就查器件,不查引脚复用
第 4 类
DO 三态未释放(总线冲突)
某个器件的 CS# 没被有效释放,两个器件同时驱动同一根线,电平卡在中间, 读出来的数据既不是全 0 也不是全 1。
高发动作:只怀疑被选中的那颗器件
第 5 类
建立 / 保持时间不足
数据在采样沿附近跳变,样本落进亚稳态窗口。典型表现是读 ID 偶发错位、 温度或电压一拉偏就复现。
高发动作:降频通过后直接结案
第 6 类
模式错(CPOL / CPHA)
主机与器件的模式不一致,采样沿整整差半个时钟周期,每个字节整体错位 1 bit。 低速下偶尔能蒙对,提速后立刻暴露。
高发动作:照抄参考板配置不核对器件手册

怎么用这份文档

  1. 先把测量做对:探头补偿、接地弹簧、探点在芯片引脚近端。
  2. 认形态:把波形对到图 4 的六种形态上,确定是哪根线的哪类异常。
  3. 跑决策树:按第 3 章四个判定逐项回答,不要跳到「改分频」。
  4. 一次只改一个变量:改完重抓同一帧并留截图。
  5. 以量产条件闭环:目标时钟 + 目标温度 + 目标电压三者同时成立才结案。

1. 问题本质:四线该长什么样

四线波形是样机阶段唯一能直接看到「主控与器件到底说了什么」的一手证据。 本章先把每根线合格时长什么样定死——有了标准形态,异常才认得出来, 才谈得上后续的逐项排查。

1.1 四线的职责与合格判据

四条线分工很清楚:三条由主控驱动(CS#、CLK、DI),一条由器件驱动(DO)。 判一根线是否合格,就看三件事:谁在驱动它、空闲时该是什么电平、边沿该在哪个时刻。 下表是后面所有章节的基准。

信号驱动方空闲态合格形态一眼可见的错
CS#(片选)主控高(通常需上拉)整帧内稳定为低,下降 / 上升沿单调无毛刺,低电平宽度覆盖全部时钟全程为高、提前抬升、上毛刺、上电浮空
CLK(时钟)主控低(mode 0/1)或高(mode 2/3)边沿单调、占空比接近 50%、无振铃过冲、无额外毛刺振铃、过冲、毛刺、占空比失衡、边沿过缓
DI(MOSI)主控不定(由主控决定)命令与地址位型完整,位边界对齐时钟沿,高电平接近 VCCQ浮空在中间电平、位型缺失、幅度不足
DO(MISO)器件高阻命令阶段保持高阻,数据阶段按位输出;未被选中时必须为高阻常高阻无应答、中间电平、与 DI 位型完全相同

1.2 标准帧:mode 0 读 ID 长什么样

把「读 JEDEC ID」这一帧抓全,是判断四线是否健康的最小充分动作: 它有命令阶段(主控驱动 DI)和数据阶段(器件驱动 DO), 能同时验证两个方向的驱动能力与相位关系。下图是 CPOL=0 / CPHA=0(mode 0)下的标准形态。

标准读 ID 帧 · CPOL=0 / CPHA=0(mode 0)命令码、dummy 与返回字节数以具体 datasheet 为准CS#CLKDI (MOSI)DO (MISO)制造商 ID存储器类型容量tCS命令 9Fh · 8 bit数据字节 ×3(24 bit)DI 无关位 · DO 输出数据字节上升沿采样 · 下降沿切换CPOL=0 / CPHA=0:CLK 空闲低,主机下降沿切换数据、上升沿采样从机数据;mode 3 为空闲高、上升沿切换、下降沿采样。采样沿、dummy cycle 数、命令码与返回字节数以 datasheet 为准,本图位型只说明相位关系。
图 1 · 标准读 ID 帧的四通道时序图(CPOL=0 / CPHA=0)

三条最值得记住的相位关系:CS# 必须在第一个时钟沿之前就稳定为低 (通常称为片选建立时间,量值以 datasheet 为准);主机在下降沿切换数据; 主机在上升沿采样从机送出的数据。这三条成立,相位关系就是对的。

1.3 判波形的三条铁律

为什么这三条要叫「铁律」

因为它们对应的是三种最常见的方向性错误:没帧就抠位型,是在没有时间基准的情况下量时间;不定驱动方就判电平,会把正常的高阻误判成故障;不定采样沿就谈建立保持,得到的数字再漂亮也是错的。现场八成的反复返工,都出在这三件事没先定下来。

  • 铁律一:先看有没有帧,再看帧里对不对。CS# 没有干净的下降沿, 或 CLK 在 CS# 为低期间没有连续时钟,后面所有位型分析都没有意义——先修帧边界。
  • 铁律二:先定驱动方,再判电平。高阻期间出现中间电平是正常的, 驱动期间出现中间电平才是故障。
  • 铁律三:先定采样沿,再谈建立保持。建立 / 保持是 相对于采样沿定义的,采样沿没找准(模式错、dummy 数错),量出来的数值毫无意义。

2. 先排除测量本身

样机阶段相当一部分「波形异常」是探头自己造出来的。 花三分钟把测量本身做对,能省掉半天误判——这一章必须排在根因分析之前。

2.1 探头造成的三种假象

示波器探头不是理想导线,它有输入电容、输入电阻和一条地线。 地线与信号线围成的环路会拾取开关噪声,并在快速边沿上激发谐振。 下图是同一探点只换接地方式后的差别。

错误:长鳄鱼夹地线(15~20 cm)被测芯片引脚与地焊盘示波器探头10× 档探尖长地线,环路面积大实测波形对比地环路大:探头发自激振铃与过冲,常被误判为板上信号完整性问题正确:接地弹簧 / 短地环(≤2 cm)被测芯片引脚与地焊盘示波器探头10× 档探尖接地弹簧,环路最小实测波形对比环路面积最小:看到的是接近真实的边沿,可据此判建立 / 保持与振铃共同前提:探头先做补偿校准(方波校准信号上的过冲与圆角都要调平),10× 档的带宽与输入电容以探头手册为准。判据纪律:换接地方式后波形明显变化,先怀疑测量本身;换接地方式波形不变,才谈板上整改。
图 2 · 接地方式对照:长鳄鱼夹地线 vs 接地弹簧

三种最常见的假象,以及它们的识别方法:

假象波形表现为什么是假的识别方法
假振铃与假过冲每个边沿上叠一串衰减振荡,幅度很大长鳄鱼夹地线与探头电容构成谐振回路,边沿越快越明显换成接地弹簧后振铃显著减小甚至消失
探头一碰就好探笔压上时通信正常,抬起来就失败探头输入电容改变了该节点负载与边沿速率,恰好把时序拉回合格区换低电容探头或用 10× 档复核;这是裕量不足的强信号
幅度与形状失真方波变圆角或过冲,高电平达不到 VCCQ探头未做补偿校准,或带宽不足以支撑该边沿速率回到校准信号重新补偿;确认探头带宽与边沿速率匹配

2.2 接地与探针规范 SOP

  1. 先做探头补偿校准:接到方波校准输出上,调到方波既不过冲也不圆角。
  2. 用接地弹簧代替长鳄鱼夹:压在探点最近的地焊盘上,环路 ≤ 2 cm。
  3. 探点选在芯片引脚近端:不要探排针远端,那量到的是走线末端的反射。
  4. 优先用 10× 档:输入电容更小,负载效应更低(带宽以探头手册为准)。
  5. 同时看 VCC:另一通道交流耦合,确认读写瞬间有没有跌落。
  6. 留一张基线截图:把已知好板在同一探点、同一时基下的波形存下来。
最容易犯的两个错

错误一:用 15~20 cm 鳄鱼夹地线量几十兆赫时钟。量出来一定有振铃,但那个振铃属于探头不属于板子:换接地方式波形跟着变,就是测量问题。

错误二:把「探头一碰就好」当成问题解决了。这恰恰说明裕量已薄到只剩一个探头电容,量产批次一漂移就翻车,应作为信号完整性问题立项整改。

3. 判定:降频与单线定位

拿到波形先别改板。用降频和单线两个动作把范围砍一半: 降频回答「是不是时序裕量」,单线回答「是哪一根线」。

3.1 四步决策树

下面这棵树是本文的主干。四个判定按帧边界 → 时钟质量 → 数据线 → 时序裕量 的顺序展开,每一步的「否」都直接指向一类根因,不需要再往下走。

起点:读 ID 失败 / 启动失败已抓到 CS#、CLK、DI、DO 四线波形判定 1 · CS#:整帧内是否稳定为低无毛刺、无提前释放、无中途抬升否 → A 类:CS 与片选链路查引脚复用 / 上拉 / 驱动能力 / 提前释放否是判定 2 · CLK:边沿是否单调干净无振铃、无毛刺、占空比接近 50%否 → B 类:CLK 完整性振铃、毛刺、占空比失衡、边沿过缓、串扰否是判定 3 · DI / DO:是否有位型与应答命令位型完整、DO 非空、非中间电平否 → C 类:数据线 DI / DO浮空、三态未释放、上下拉冲突、多从机争夺否是判定 4 · 时钟降到 1/4 是否恢复只改分频,其余条件一律不动是 → E 类:时序裕量不足建立 / 保持、CPOL-CPHA 模式、边沿速率逐项量化是否判定 4 答「否」→ 波形不是首因四线形态全部合格而读写仍失败:转向驱动配置、器件状态与电源完整性(见对应专篇)用法:先答判定 1~3(波形本身合格吗),再答判定 4(是时序裕量还是别的问题)——不要跳到判定 4 直接改分频。降频通过只证明「裕量不够」,不证明根因;必须回到判定 1~3 找到是哪一项吃掉了裕量,否则量产一定复发。
图 3 · 四线波形异常的降频与单线定位决策树

3.2 降频定位法

降频是样机阶段性价比最高的动作:只改时钟分频,其余条件一律不动。 判读规则很干净:

  • 降到 1/4 立即恢复 → 时序裕量问题,按第 4、5 章找是哪一项吃掉了裕量。
  • 降到很低仍失败 → 不是时序问题,转驱动配置、器件状态与电源完整性。
  • 变好但没好透 → 多因素叠加:一个逻辑错误叠一个信号完整性问题, 先把逻辑层修对,再回头量裕量。
降频的正确姿势

一次只降一档,每档都重抓同一帧。按 1/2、1/4、1/8 逐档下降,每档保存四通道截图与一次读 ID 结果,画出「失败率 vs 频率」曲线,而不是只拿一个二值结论。注意降频只改分频,不要顺手改模式或驱动强度,否则改好了也不知道是哪一项起作用。

3.3 单线定位法与三条分界线

单线定位回答「哪一根线有问题」:把四根线两两组合起来看—— CS# 与 CLK 看帧边界,CLK 与 DI 看命令有没有送到,CLK 与 DO 看器件有没有应答。 单看一根线往往都正常,异常只存在于它们的关系里。

现象组合读出来的结论下一步
仅 CLK 异常,其余三根正常时钟链路问题:走线、串阻、分频配置、负载查 CLK 走线与源端串阻,量占空比与边沿速率
仅 DO 异常,CS# / CLK / DI 都正常命令已送达但器件没应答查器件供电、片选是否到达、DO 是否被别的器件占用
DI 与 DO 位型完全相同两根线短接,或 DO 未被驱动而耦合了 DI量两线之间的通断与绝缘,查焊接桥连
四线形态都合格,但读写就是错波形不是首因转驱动配置、器件状态与电源完整性三条线
三条分界线:什么时候该停止看波形

分界线一:四线形态全部合格,读写仍失败 → 去查驱动配置与器件状态。

分界线二:电源在读写瞬间跌落 → 先修电源;电源不稳时量出来的建立保持时间全是噪声。

分界线三:换接地方式波形就变 → 先修测量;测量不可信时的整改都是白做。

4. 成因排查(上):CS 与 CLK

CS# 与 CLK 全部由主控驱动,异常几乎都指向主控配置或物理互连, 与器件本身关系不大——先修好这两根,再去怀疑器件。

4.1 CS# 未拉低 / 拉低后提前释放

原理与波形

CS# 是帧的边界:器件在下降沿复位内部状态机、准备接收命令,在上升沿结束并锁存当前操作。 命令、地址、数据与空周期必须在 CS# 为低期间完整送出, 提前抬升会直接把操作截断,全程为高则器件根本没被选中。三种典型形态:

  • 未拉低:CS# 全程高,DO 常高阻——器件完全没参与这一帧。
  • 提前释放:低电平宽度明显短于 CLK 活动区间, 在最后一个时钟之前就抬升(图 4 之①),DO 输出到一半变回高阻。
  • 上毛刺:低电平期间出现窄正脉冲,被器件解释成「帧结束 + 新帧开始」。

根因

  • 引脚复用(pinmux / pinctrl)没配成 SPI 功能,还停在 GPIO 或另一个复用上。
  • 软件 CS(GPIO 模拟片选)的 GPIO 编号或有效电平写反。
  • 控制器 CS 极性与原理图相反,或 DMA 分包处每次都释放一次片选。
  • CS# 缺上拉,上电与复位期间浮空;或引脚虚焊、飞线断、转接板接触不良。

实操

  1. 断电用蜂鸣档确认主控 CS 焊盘到芯片 CS# 引脚的通断与对地绝缘。
  2. 量 CS# 上拉是否存在、阻值是否符合原理图(常见 10 kΩ 量级,以原理图为准)。
  3. 读出复用寄存器 / pinctrl 配置,确认配置成 SPI 片选功能。
  4. 软件 CS 时在驱动里对拉低 / 拉高位置打点,与波形的下降沿 / 上升沿逐条对比。

验证

结论:CS# 低电平宽度必须完整覆盖「命令 + 地址 + 数据 + 空周期」的全部时钟, 两端各留余量;连续抓 100 帧不得出现任何一次提前释放或毛刺。 只抓一两帧「好像是对的」不算通过——这类故障的复现率常常只有百分之几。

4.2 CLK 毛刺、振铃、占空比失衡

原理与波形

从机不区分「真的时钟沿」和「过冲 / 毛刺造成的假沿」, 只看电平有没有越过输入门限,所以振铃过冲与串扰毛刺都会变成多余的时钟。三种形态:

  • 振铃:每个边沿后跟一串衰减振荡,第一二个过冲最大(图 4 之②),过冲越深说明阻尼越不足。
  • 毛刺:平坦电平中间出现窄脉冲;CLK 上出现毛刺最危险,因为直接多出一个时钟。
  • 占空比失衡:高低电平宽度明显不等,压缩一侧的建立或保持窗口,随频率单向恶化。

根因

  • 阻抗失配与飞线过长:源端阻抗低、未端接,边沿在末端全反射形成振铃。
  • 缺少源端阻尼:CLK 上没有串联电阻,或串阻值太小。
  • 串扰:CLK 与数据线长距离并行(尤其捆成一扎的杜邦线),沿耦合到邻线。
  • 分频配置或负载过重:高分频比下产出非 50% 占空比,或一条 CLK 挂了过多器件。

实操

  1. 先降频到 1/4 重抓:振铃随频率降低而消失,确认是信号完整性问题。
  2. 在 CLK 驱动端串联小电阻做源端阻尼(常用几十欧姆,按实测标定)。
  3. 缩短 CLK 走线 / 飞线;飞线时 CLK 单独走一根并紧邻一根地线。
  4. CLK 与 DI / DO 分开走,中间插一根地线隔离,必要时加屏蔽。
  5. 量占空比并确认 CLK 上没有多余上下拉与主控驱动冲突。

验证

结论:目标频率下 CLK 每个边沿必须单调,过冲与振铃峰值不得越过对侧输入门限, 连续 1000 个周期内不得出现额外毛刺沿。量这些判据必须用接地弹簧。

4.3 边沿过缓

原理与波形

边沿速率不够时,信号在输入门限附近停留的时间变长,任何噪声都会被放大成 多次门限穿越,从机看来就是好几个沿。波形上方波变成 三角波或梯形波:上升下降时间接近甚至超过半个时钟周期, 高电平还没充到顶就开始下降(图 4 之③),把时基拉开能看到明显的指数曲线。

根因与处置

根因为什么会边沿过缓处置
串联电阻过大与线上电容构成过大 RC,时间常数接近位周期按实测定标下调串阻,阻尼够用即可
上拉电阻过大上拉太弱,上升沿由大 RC 主导按总线负载与 datasheet 重选上拉阻值
负载电容过大多器件并联、长走线、探头电容叠加减少同一 net 的负载;换低电容探头
驱动能力配置过弱IO 驱动强度档位设成了最低档按平台手册调到与走线匹配的档位
飞线过长或 IO 域偏低寄生参数抬高时间常数,低压下跨导下降缩短飞线、加粗线径;确认 VCCQ 匹配

4.4 六种异常波形对照

把前面各节的形态集中到一张图上,现场照着认即可:先认形态,再按对应小节深挖。

① CS# 提前释放CS#CLKCS# 在第 6 个时钟前抬升 → 帧被截断② CLK 振铃与毛刺CLKDIDO振铃过冲越过门限 → 被误采成多余时钟毛刺触及门限③ 边沿过缓 / 占空比失衡CLKDI上升下降时间接近半周期 → 采样窗口被吃掉有效窗口窄④ DI / DO 浮空(无驱动)CLKDIDO停在中间电平且随噪声漂移 → 没人驱动≈1/2 VCC高阻⑤ DO 三态未释放(冲突)CS1#CS2#DO两个器件同时驱动 DO → 电平卡在中间⑥ 采样沿错位(模式错)CLK期望实际相位差半个周期 → 每个字节整体错位 1 bit对照用法:先认形态(①~③ 看 CS# 与 CLK,④~⑥ 看 DI / DO),再按第 4、5 章逐项验证。本图为形态示意:纵轴逻辑电平、横轴时钟周期,不代表任何器件的具体时序参数,数值以 datasheet 为准。
图 4 · 六种典型异常波形对照(分面板)
相关报告 · 交叉引用 1 器件全部展开收起 ▾
点开类目即可展开:具体文档 / 章节(点章直接跳转到该章)
eMMC
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查
其他提及器件(共 4)
SD NAND
电路设计指南
软件设计规范
Linux 驱动开发
量产问题排查
SPI NOR
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查2
系统设计指南
SPI NAND
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查4
全志平台 SPI NAND NOR
章节(点章跳转,共 11 章)
海思平台 SPI NAND 量产常见失败
章节(点章跳转,共 11 章)
烧录成功但不开机 SPI NAND
章节(点章跳转,共 12 章)
瑞芯微平台 SPI NAND eMMC
章节(点章跳转,共 11 章)
系统设计指南3
PPI NAND(并行NAND)
电路设计指南
软件设计规范
Linux 驱动开发
量产问题排查