4. 逻辑分析仪触发设置:边沿触发、电平触发、协议触发、序列触发、触发位置与深度设置

触发设置,说白了就是告诉逻辑分析仪「什么时候开始干活」。

我见过不少工程师,抓了一大堆波形回来,结果发现关键信号早就跑过去了,或者缓冲区里全是无关数据。嗯,这就是触发没设好。

SPI 调试里,触发设对了,问题就解决了一半。

4.1 边沿触发:最基础的抓波方式

边沿触发是最简单的。你指定一根信号线,告诉分析仪:「看到上升沿(或下降沿),立刻开始录」。

  • 上升沿触发:常用于捕获 SCK 的第一个时钟边沿,或者 CS 从高拉低的瞬间。
  • 下降沿触发:SPI 模式 1 和模式 3 的数据采样点在下降沿,有时用它来对齐数据。
我的习惯: 调试 SPI 时,我通常先用 CS 的下降沿做触发。因为 CS 拉低代表一次传输的开始,用它做触发,能保证抓到完整的一帧数据。

边沿触发虽然简单,但有个致命缺点:它不关心信号电平的持续时间。如果线上有毛刺,上升沿触发可能会误触发。我曾经被一个 10ns 的毛刺坑过,抓回来的波形全是乱的。

4.2 电平触发:等一个稳定的状态

电平触发不是看跳变,而是看信号维持在高电平或低电平的时间。

触发类型 触发条件 典型应用场景
高电平触发 信号 > Vih 且持续超过设定时间 等待 CS 拉高(传输结束)
低电平触发 信号 < Vil 且持续超过设定时间 等待 MISO 被从设备拉低(忙状态结束)
脉冲宽度触发 信号宽度在指定范围内 捕获特定宽度的片选信号

电平触发在 SPI 调试里有个妙用:检测从设备响应超时。比如你发完命令后,MISO 一直没拉高,用低电平触发就能抓到那个「卡住」的状态。

注意: 电平触发的时间参数要设得合理。设太短,噪声会触发;设太长,可能漏掉真实事件。我一般从 1us 开始试,再根据波形调整。

4.3 协议触发:让分析仪读懂 SPI

这是我最常用的方式。协议触发不是看电平,而是看数据内容。

逻辑分析仪内部集成了 SPI 协议解码器。你只需要告诉它:

  • 哪根线是 SCK
  • 哪根线是 MOSI / MISO
  • 哪根线是 CS
  • SPI 模式(CPOL / CPHA)
  • 数据位宽(8bit / 16bit 等)

然后,你就可以设置触发条件为:「当 MOSI 上出现 0x55 这个字节时,触发」。

实战案例: 有一次调试 SPI Flash 驱动,读 ID 指令总是返回 0xFF。我设了一个协议触发:当 MOSI 上出现读 ID 命令 0x9F 时触发。结果发现,CS 在命令发送完之前就被拉高了——从设备根本没收到完整指令。

协议触发的好处是精准。你只关心特定数据,其他无关波形自动过滤掉。但要注意:协议触发依赖解码质量。如果采样率不够,或者信号质量差,解码会出错,触发也就不准了。

4.4 序列触发:多级条件组合

序列触发是高级玩法。它允许你设置多个触发条件,按顺序执行。

举个例子:

  1. 条件 A:CS 下降沿(传输开始)
  2. 条件 B:MOSI 上出现 0xAA(特定命令)
  3. 条件 C:MISO 上出现 0x55(期望的响应)

只有 A → B → C 依次满足,分析仪才触发。这能帮你精准定位复杂的交互流程。

我记得调试一个多设备 SPI 总线时,总线上挂了 3 个从设备。用序列触发,我设了:先抓到 CS1 拉低,再抓到 MOSI 上的设备地址字节,最后抓到 MISO 上的应答。这样就能确认主设备到底在和谁通信。

序列触发的层级: 大多数逻辑分析仪支持 4~8 级序列。级数越多,定位越准,但设置也越复杂。我建议从 2 级开始试,够用就行。

4.5 触发位置与深度设置

触发位置决定了「触发事件」在存储波形中的位置。这直接影响你能看到触发前还是触发后的数据。

触发位置 存储分配 适用场景
触发前 0% 全部存触发后 只看触发事件之后的行为
触发前 25% 25% 存触发前,75% 存触发后 兼顾触发前后的上下文
触发前 50% 各占一半 通用设置,我最常用
触发前 75% 75% 存触发前,25% 存触发后 想看触发事件的原因
触发前 100% 全部存触发前 捕获触发事件之前的异常

深度设置更直接:存储深度 = 采样率 × 采样时间。

  • 深度大:能录更长时间,但分析仪处理慢,波形加载也慢。
  • 深度小:录的时间短,但操作流畅,适合快速迭代调试。
避坑指南: 我曾经为了省事,把深度设到最大,采样率也拉到最高。结果分析仪卡了 5 分钟才把波形刷出来。后来我学乖了:先用小深度快速确认触发条件对不对,再加大深度做精细分析。

4.6 知识结构图:触发设置全景

逻辑分析仪触发设置全景 触发设置 边沿触发 电平触发 协议触发 序列触发 上升沿 下降沿 高/低电平 脉冲宽度 SPI 协议解码 数据内容匹配 多级条件组合 A → B → C 顺序 触发位置与深度设置 触发位置决定「看触发前还是触发后」,深度决定「能录多久」

4.7 实战建议:触发设置的优先级

如果你刚开始用逻辑分析仪调 SPI,我建议按这个顺序来:

  1. 先用边沿触发(CS 下降沿),确认基本波形有没有。
  2. 再切协议触发,抓特定命令,验证通信内容。
  3. 遇到复杂问题,上序列触发,多级条件定位。
  4. 最后调触发位置和深度,确保关键数据都在缓冲区里。
核心原则: 触发不是越复杂越好。能解决问题的触发,就是好触发。我见过有人用 6 级序列触发抓一个简单的片选毛刺,纯属杀鸡用牛刀。

嗯,触发设置就聊到这儿。记住:触发设得好,调试效率翻倍。下次抓波形前,花 30 秒想想「我要看什么」,再动手设触发,你会发现世界清净很多。