4、触发设置艺术:边沿触发、码型触发、协议触发、触发位置与预触发深度

触发设置这东西,说白了就是给逻辑分析仪一个「开拍」的信号。你想想看,数据流哗哗地跑,几百万个采样点,没有触发,你根本不知道从哪儿看起。我刚开始用逻辑分析仪那会儿,就吃过这个亏——抓了一大堆数据,结果全是无关的波形,气得我直拍桌子。

今天咱们就把触发这件事聊透。边沿触发、码型触发、协议触发,还有触发位置和预触发深度,一个一个来。

4.1 边沿触发:最基础也最常用

边沿触发,顾名思义,就是检测信号的上升沿或下降沿。这是逻辑分析仪最基础的触发方式,也是我平时用得最多的。

举个例子,你要抓一个 SPI 的 CS 信号下降沿,那就设置成「下降沿触发」。一旦 CS 拉低,分析仪立刻开始采集。简单粗暴,但非常有效。

关键参数:

  • 触发通道:选择你要监测的信号线
  • 触发边沿:上升沿、下降沿,或者双沿(上升和下降都触发)
  • 触发电平:一般用 TTL 电平(1.5V 左右),但有些信号是 1.8V 或 3.3V,得注意匹配

我个人习惯,在调试时钟信号时,用上升沿触发。因为时钟的上升沿通常是数据采样的时刻,抓这个沿能看到最完整的数据窗口。

小技巧:如果你不确定信号是上升还是下降沿有效,可以先用「双沿触发」抓一段波形看看。我经常这么干,省得来回改设置。

4.2 码型触发:抓特定数据组合

码型触发就高级一点了。它不是看单个信号的变化,而是看一组信号同时满足某个条件。比如,你要抓一个 8 位并行总线上出现「0xA5」这个数据,那就设置码型触发。

码型触发支持三种状态:

  • 高电平(H):信号为逻辑 1
  • 低电平(L):信号为逻辑 0
  • 任意(X):不关心这个信号的状态

我在项目中遇到过一个问题:一个并行 ADC 的输出总是不稳定,偶尔会跳出一个错误值。用边沿触发根本抓不到,因为错误不是每次都有。后来我用了码型触发,设置成「当数据等于 0xFF 时触发」,果然抓到了那个异常时刻。原来是电源纹波导致的采样错误。

注意:码型触发对时序要求很高。如果信号有毛刺或抖动,可能会误触发。我建议先抓一段波形看看信号质量,再设置码型。

4.3 协议触发:智能抓取总线数据

协议触发,这是我最喜欢的功能。它直接理解总线协议,比如 I2C、SPI、UART、CAN 等。你不需要手动设置边沿或码型,只需要告诉分析仪:「我要抓 I2C 的 START 条件」或者「我要抓 UART 的 0x55 数据帧」。

协议触发的好处是:

  • 自动识别:分析仪自己知道什么时候是有效数据
  • 条件灵活:可以设置地址匹配、数据匹配、帧类型匹配等
  • 解码同步:触发的同时,波形会自动解码,省去手动分析的麻烦

我记得有一次调试一个 I2C 传感器,设备地址是 0x68。我想抓它返回数据时的波形。用协议触发设置成「从机地址 0x68 + 读操作」,一下子就抓到了。要是用边沿触发,我得盯着 CS 和 SCL 的时序,累死个人。

协议触发常见场景:

协议 常用触发条件 我的经验
I2C START、STOP、地址匹配、数据匹配 地址匹配最常用,先确认设备地址对不对
SPI CS 下降沿、数据帧开始、特定数据 注意 CPOL/CPHA 设置,否则触发不准
UART 起始位、数据字节、错误帧 波特率必须设对,差一点就抓不到
CAN ID 匹配、数据帧、远程帧 CAN 总线有仲裁,触发条件要小心

4.4 触发位置与预触发深度

这个知识点,很多人容易忽略。触发位置决定了你抓到的波形中,触发点出现在什么位置。预触发深度,则决定了触发点之前能存多少数据。

逻辑分析仪的存储深度是有限的。比如你的采样深度是 1M 点,触发位置设置不同,效果完全不一样:

  • 触发位置在中间(50%):触发点前后各 512K 点。适合看触发前后的波形关系。
  • 触发位置在开头(10%):触发点前只有 102K 点,后面有 922K 点。适合看触发后的长序列。
  • 触发位置在结尾(90%):触发点前有 921K 点,后面只有 102K 点。适合看触发前的历史。

我个人的习惯是:

  • 调试时序问题时,触发位置设在 50%,前后都看看
  • 抓异常数据时,触发位置设在 10%,重点看触发后的波形
  • 分析协议交互时,触发位置设在 90%,看看触发前发生了什么

避坑指南:我曾经犯过一个错误——预触发深度设得太小,导致触发点之前的数据被覆盖了。结果抓到的波形只有触发后的部分,根本看不出问题原因。后来我养成了习惯:先设一个较大的预触发深度(比如 50%),确认问题后再调整。

4.5 综合实战:一个典型调试案例

说个真实的例子。有一次我在调试一个 FPGA 和外部 ADC 的 SPI 接口,ADC 偶尔会返回错误数据。我一开始用边沿触发,抓 CS 下降沿,但抓到的波形都是正常的。后来我改用协议触发,设置成「SPI 数据帧 + 数据值等于 0x00」(正常数据不会是 0x00),一下子就抓到了问题波形。

分析后发现,原来是 FPGA 的 SPI 时钟在某个特定条件下多了一个毛刺,导致 ADC 采样错误。这个毛刺非常窄,只有几纳秒,但刚好发生在数据采样窗口内。

嗯,这里要注意:协议触发虽然智能,但也不是万能的。如果总线时序本身有错误(比如毛刺、抖动),协议触发可能识别不到。这时候还是要回到边沿触发,先看信号质量。

最后提醒:触发设置没有银弹。不同的场景用不同的触发方式。我建议你多试试,边沿触发打底,码型触发抓异常,协议触发抓交互。三种配合使用,基本能搞定 90% 的调试场景。

好了,触发设置就聊到这儿。下一章咱们讲采样率与存储深度的平衡艺术,这个也很关键,别错过。