4. 逻辑分析仪触发设置:边沿触发、电平触发、协议触发、序列触发、触发位置与深度设置
触发设置,说白了就是告诉逻辑分析仪「什么时候开始干活」。
我见过不少工程师,抓了一大堆波形回来,结果发现关键信号早就跑过去了,或者缓冲区里全是无关数据。嗯,这就是触发没设好。
SPI 调试里,触发设对了,问题就解决了一半。
4.1 边沿触发:最基础的抓波方式
边沿触发是最简单的。你指定一根信号线,告诉分析仪:「看到上升沿(或下降沿),立刻开始录」。
- 上升沿触发:常用于捕获 SCK 的第一个时钟边沿,或者 CS 从高拉低的瞬间。
- 下降沿触发:SPI 模式 1 和模式 3 的数据采样点在下降沿,有时用它来对齐数据。
边沿触发虽然简单,但有个致命缺点:它不关心信号电平的持续时间。如果线上有毛刺,上升沿触发可能会误触发。我曾经被一个 10ns 的毛刺坑过,抓回来的波形全是乱的。
4.2 电平触发:等一个稳定的状态
电平触发不是看跳变,而是看信号维持在高电平或低电平的时间。
| 触发类型 | 触发条件 | 典型应用场景 |
|---|---|---|
| 高电平触发 | 信号 > Vih 且持续超过设定时间 | 等待 CS 拉高(传输结束) |
| 低电平触发 | 信号 < Vil 且持续超过设定时间 | 等待 MISO 被从设备拉低(忙状态结束) |
| 脉冲宽度触发 | 信号宽度在指定范围内 | 捕获特定宽度的片选信号 |
电平触发在 SPI 调试里有个妙用:检测从设备响应超时。比如你发完命令后,MISO 一直没拉高,用低电平触发就能抓到那个「卡住」的状态。
4.3 协议触发:让分析仪读懂 SPI
这是我最常用的方式。协议触发不是看电平,而是看数据内容。
逻辑分析仪内部集成了 SPI 协议解码器。你只需要告诉它:
- 哪根线是 SCK
- 哪根线是 MOSI / MISO
- 哪根线是 CS
- SPI 模式(CPOL / CPHA)
- 数据位宽(8bit / 16bit 等)
然后,你就可以设置触发条件为:「当 MOSI 上出现 0x55 这个字节时,触发」。
协议触发的好处是精准。你只关心特定数据,其他无关波形自动过滤掉。但要注意:协议触发依赖解码质量。如果采样率不够,或者信号质量差,解码会出错,触发也就不准了。
4.4 序列触发:多级条件组合
序列触发是高级玩法。它允许你设置多个触发条件,按顺序执行。
举个例子:
- 条件 A:CS 下降沿(传输开始)
- 条件 B:MOSI 上出现 0xAA(特定命令)
- 条件 C:MISO 上出现 0x55(期望的响应)
只有 A → B → C 依次满足,分析仪才触发。这能帮你精准定位复杂的交互流程。
我记得调试一个多设备 SPI 总线时,总线上挂了 3 个从设备。用序列触发,我设了:先抓到 CS1 拉低,再抓到 MOSI 上的设备地址字节,最后抓到 MISO 上的应答。这样就能确认主设备到底在和谁通信。
4.5 触发位置与深度设置
触发位置决定了「触发事件」在存储波形中的位置。这直接影响你能看到触发前还是触发后的数据。
| 触发位置 | 存储分配 | 适用场景 |
|---|---|---|
| 触发前 0% | 全部存触发后 | 只看触发事件之后的行为 |
| 触发前 25% | 25% 存触发前,75% 存触发后 | 兼顾触发前后的上下文 |
| 触发前 50% | 各占一半 | 通用设置,我最常用 |
| 触发前 75% | 75% 存触发前,25% 存触发后 | 想看触发事件的原因 |
| 触发前 100% | 全部存触发前 | 捕获触发事件之前的异常 |
深度设置更直接:存储深度 = 采样率 × 采样时间。
- 深度大:能录更长时间,但分析仪处理慢,波形加载也慢。
- 深度小:录的时间短,但操作流畅,适合快速迭代调试。
4.6 知识结构图:触发设置全景
4.7 实战建议:触发设置的优先级
如果你刚开始用逻辑分析仪调 SPI,我建议按这个顺序来:
- 先用边沿触发(CS 下降沿),确认基本波形有没有。
- 再切协议触发,抓特定命令,验证通信内容。
- 遇到复杂问题,上序列触发,多级条件定位。
- 最后调触发位置和深度,确保关键数据都在缓冲区里。
嗯,触发设置就聊到这儿。记住:触发设得好,调试效率翻倍。下次抓波形前,花 30 秒想想「我要看什么」,再动手设触发,你会发现世界清净很多。