第四章 触发设置与数据捕获:边沿触发、电平触发、协议触发、预触发与后触发深度设置

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

我刚开始用逻辑分析仪那会儿,总觉得只要把探头夹上去,波形自然就出来了。结果呢?抓了一屏幕的乱码,根本找不到我要的那个信号跳变。后来才明白——触发没设对,抓再多数据也是白搭。

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

边沿触发是最常用的触发方式。它检测信号从低到高(上升沿)或从高到低(下降沿)的变化。

核心概念:边沿触发 = 检测信号电平变化瞬间

设置边沿触发时,你需要指定:

  • 触发通道:哪个信号引脚作为触发源
  • 触发边沿:上升沿、下降沿,还是双沿
  • 触发条件:单通道触发,还是多通道组合

举个例子。我在调试一个SPI通信问题时,CS片选信号下降沿总是抓不到。后来发现——我把触发设成了上升沿。嗯,这种低级错误,谁还没犯过呢?

个人习惯:我一般把触发阈值设在信号幅度的50%位置。这样无论信号上升快慢,触发点都比较准确。

4.2 电平触发:捕获特定电平状态

电平触发不是检测跳变,而是检测信号是否处于某个电平状态。比如,你想看看某个信号在低电平时,其他信号在干什么。

电平触发有两种模式:

  • 高电平触发:信号为高时触发
  • 低电平触发:信号为低时触发

我记得有一次调试I2C总线,设备偶尔会拉低SCL时钟线。用边沿触发根本抓不到,因为拉低后没有跳变。换成低电平触发,一下子就捕获到了异常行为。

注意:电平触发容易误触发。如果信号长时间处于目标电平,分析仪会反复触发,导致你看到的都是同一段波形。这时候需要配合「触发延时」或「触发次数」来过滤。

4.3 协议触发:按通信协议规则触发

协议触发是逻辑分析仪的「高级玩法」。它按照特定的通信协议规则来触发,比如:

  • I2C触发:起始条件、停止条件、设备地址匹配、数据字节匹配
  • SPI触发:CS片选、特定数据模式
  • UART触发:起始位、停止位、特定数据字节
  • CAN触发:ID匹配、数据场匹配、错误帧

协议触发的好处是——你不需要手动分析波形,分析仪直接帮你找到「有意义」的事件。

实战案例:我在调试一个I2C温度传感器时,发现读数偶尔跳变。用边沿触发抓了一整天,什么都没抓到。换成I2C协议触发,设置设备地址为0x48,数据字节匹配0xFF——不到10分钟就抓到了异常数据包。

设置协议触发时,一般需要:

  1. 选择协议类型(I2C、SPI、UART等)
  2. 配置协议参数(波特率、地址、数据位宽等)
  3. 设置触发条件(起始条件、地址匹配、数据匹配等)

4.4 预触发与后触发深度设置

触发点只是「参考点」。真正有用的数据,往往在触发点之前或之后。

预触发深度:触发点之前捕获的数据量。
后触发深度:触发点之后捕获的数据量。

为什么要设置预触发?因为很多故障的「原因」发生在「结果」之前。比如,一个中断丢失了,你想看中断发生前CPU在干什么。没有预触发,你只能看到中断发生后的波形,根本找不到原因。

我的经验:调试时序问题时,我通常把预触发深度设为总深度的70%~80%。这样能确保看到触发点之前足够多的信号变化。调试通信协议时,预触发和后触发各占50%,方便看完整的数据包。

设置预触发/后触发深度时,要考虑:

  • 采样率:深度越大,采样率可能越低
  • 信号频率:高频信号需要高采样率,深度不能太大
  • 故障类型:偶发故障需要大预触发深度

避坑指南:我曾经把预触发深度设到99%,结果触发点后的数据只有一点点。分析仪刚触发就停止采集了,根本看不到完整的故障现象。后来我改成70%预触发 + 30%后触发,才抓到完整的异常波形。

4.5 触发设置的知识体系

下面这张图总结了触发设置的核心逻辑:

触发设置知识体系 触发设置 边沿触发 电平触发 协议触发 预/后触发深度 上升沿/下降沿 双沿触发 多通道组合 高电平触发 低电平触发 I2C/SPI/UART CAN/LIN 地址/数据匹配 预触发深度 后触发深度 采样率权衡 核心原则 触发设置 = 告诉分析仪「抓什么」 预/后触发深度 = 告诉分析仪「抓多少」

4.6 触发设置的实战对比

不同触发方式适合不同场景。下面这个表格帮你快速选择:

触发方式 适用场景 优点 缺点
边沿触发 时钟信号、中断信号、GPIO跳变 简单、通用、响应快 无法区分具体数据内容
电平触发 总线占用、信号保持时间检测 捕获稳态异常 容易误触发
协议触发 通信协议调试、数据包分析 精准定位协议事件 需要配置协议参数
预/后触发 偶发故障、时序分析 看到故障前后完整波形 深度设置影响采样率

4.7 触发设置的常见误区

我总结了几个新手容易踩的坑:

  • 触发阈值设置错误:阈值太高或太低,导致触发点偏移。建议设为信号幅度的50%。
  • 预触发深度太小:抓不到故障原因。偶发故障建议预触发深度≥70%。
  • 协议触发参数配置错误:波特率、地址、数据位宽不对,分析仪永远触发不了。
  • 忽略触发延时:信号有抖动时,设置触发延时可以过滤毛刺。

我曾经踩过的坑:调试一个UART通信故障,波特率设置成9600,但实际设备跑的是19200。分析仪一直触发不了,我还以为是硬件坏了。折腾了两小时才发现是波特率配错了。从那以后,我每次调试前都会先用示波器确认一下实际波特率。

4.8 触发设置的最佳实践

最后,分享几个我个人的设置习惯:

  1. 先简单后复杂:先用边沿触发确认信号是否存在,再用协议触发定位具体问题。
  2. 预触发深度留足余量:偶发故障,预触发深度设到80%以上。
  3. 触发条件尽量具体:能用协议触发就别用边沿触发,减少误触发。
  4. 保存触发配置:调试复杂问题时,把触发配置保存下来,方便复现。

小技巧:如果你不确定该用哪种触发方式,先试试「自动触发」模式。分析仪会持续采集波形,你可以在捕获到的数据中手动寻找感兴趣的事件,然后再设置精确触发条件。