只读分享解决方案文档调试&解决方案📅 2026-09-21🔖 Rev 1.0⏳ 29天有效(至 2026-10-31)
🔧解决方案&应用市场分析 -> 调试&解决方案 -> 存储_样机问题测试 -> 波形时序异常_CS_CLK_DI_DO_样机排查

波形时序异常_CS_CLK_DI_DO_样机排查

生成时间 2026-09-28 13:35:00 有效期至 2026-10-31 23:59:59(29天有效(至 2026-10-31))
同系列 · 调试&解决方案

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

编制日期 2026-09-21 | 版本号 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 · 六种典型异常波形对照(分面板)