第四章 触发设置与数据捕获:边沿触发、电平触发、协议触发、预触发与后触发深度设置
触发设置,说白了就是告诉逻辑分析仪「什么时候开始干活」。
我刚开始用逻辑分析仪那会儿,总觉得只要把探头夹上去,波形自然就出来了。结果呢?抓了一屏幕的乱码,根本找不到我要的那个信号跳变。后来才明白——触发没设对,抓再多数据也是白搭。
4.1 边沿触发:最基础的触发方式
边沿触发是最常用的触发方式。它检测信号从低到高(上升沿)或从高到低(下降沿)的变化。
核心概念:边沿触发 = 检测信号电平变化瞬间
设置边沿触发时,你需要指定:
- 触发通道:哪个信号引脚作为触发源
- 触发边沿:上升沿、下降沿,还是双沿
- 触发条件:单通道触发,还是多通道组合
举个例子。我在调试一个SPI通信问题时,CS片选信号下降沿总是抓不到。后来发现——我把触发设成了上升沿。嗯,这种低级错误,谁还没犯过呢?
个人习惯:我一般把触发阈值设在信号幅度的50%位置。这样无论信号上升快慢,触发点都比较准确。
4.2 电平触发:捕获特定电平状态
电平触发不是检测跳变,而是检测信号是否处于某个电平状态。比如,你想看看某个信号在低电平时,其他信号在干什么。
电平触发有两种模式:
- 高电平触发:信号为高时触发
- 低电平触发:信号为低时触发
我记得有一次调试I2C总线,设备偶尔会拉低SCL时钟线。用边沿触发根本抓不到,因为拉低后没有跳变。换成低电平触发,一下子就捕获到了异常行为。
注意:电平触发容易误触发。如果信号长时间处于目标电平,分析仪会反复触发,导致你看到的都是同一段波形。这时候需要配合「触发延时」或「触发次数」来过滤。
4.3 协议触发:按通信协议规则触发
协议触发是逻辑分析仪的「高级玩法」。它按照特定的通信协议规则来触发,比如:
- I2C触发:起始条件、停止条件、设备地址匹配、数据字节匹配
- SPI触发:CS片选、特定数据模式
- UART触发:起始位、停止位、特定数据字节
- CAN触发:ID匹配、数据场匹配、错误帧
协议触发的好处是——你不需要手动分析波形,分析仪直接帮你找到「有意义」的事件。
实战案例:我在调试一个I2C温度传感器时,发现读数偶尔跳变。用边沿触发抓了一整天,什么都没抓到。换成I2C协议触发,设置设备地址为0x48,数据字节匹配0xFF——不到10分钟就抓到了异常数据包。
设置协议触发时,一般需要:
- 选择协议类型(I2C、SPI、UART等)
- 配置协议参数(波特率、地址、数据位宽等)
- 设置触发条件(起始条件、地址匹配、数据匹配等)
4.4 预触发与后触发深度设置
触发点只是「参考点」。真正有用的数据,往往在触发点之前或之后。
预触发深度:触发点之前捕获的数据量。
后触发深度:触发点之后捕获的数据量。
为什么要设置预触发?因为很多故障的「原因」发生在「结果」之前。比如,一个中断丢失了,你想看中断发生前CPU在干什么。没有预触发,你只能看到中断发生后的波形,根本找不到原因。
我的经验:调试时序问题时,我通常把预触发深度设为总深度的70%~80%。这样能确保看到触发点之前足够多的信号变化。调试通信协议时,预触发和后触发各占50%,方便看完整的数据包。
设置预触发/后触发深度时,要考虑:
- 采样率:深度越大,采样率可能越低
- 信号频率:高频信号需要高采样率,深度不能太大
- 故障类型:偶发故障需要大预触发深度
避坑指南:我曾经把预触发深度设到99%,结果触发点后的数据只有一点点。分析仪刚触发就停止采集了,根本看不到完整的故障现象。后来我改成70%预触发 + 30%后触发,才抓到完整的异常波形。
4.5 触发设置的知识体系
下面这张图总结了触发设置的核心逻辑:
4.6 触发设置的实战对比
不同触发方式适合不同场景。下面这个表格帮你快速选择:
| 触发方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 边沿触发 | 时钟信号、中断信号、GPIO跳变 | 简单、通用、响应快 | 无法区分具体数据内容 |
| 电平触发 | 总线占用、信号保持时间检测 | 捕获稳态异常 | 容易误触发 |
| 协议触发 | 通信协议调试、数据包分析 | 精准定位协议事件 | 需要配置协议参数 |
| 预/后触发 | 偶发故障、时序分析 | 看到故障前后完整波形 | 深度设置影响采样率 |
4.7 触发设置的常见误区
我总结了几个新手容易踩的坑:
- 触发阈值设置错误:阈值太高或太低,导致触发点偏移。建议设为信号幅度的50%。
- 预触发深度太小:抓不到故障原因。偶发故障建议预触发深度≥70%。
- 协议触发参数配置错误:波特率、地址、数据位宽不对,分析仪永远触发不了。
- 忽略触发延时:信号有抖动时,设置触发延时可以过滤毛刺。
我曾经踩过的坑:调试一个UART通信故障,波特率设置成9600,但实际设备跑的是19200。分析仪一直触发不了,我还以为是硬件坏了。折腾了两小时才发现是波特率配错了。从那以后,我每次调试前都会先用示波器确认一下实际波特率。
4.8 触发设置的最佳实践
最后,分享几个我个人的设置习惯:
- 先简单后复杂:先用边沿触发确认信号是否存在,再用协议触发定位具体问题。
- 预触发深度留足余量:偶发故障,预触发深度设到80%以上。
- 触发条件尽量具体:能用协议触发就别用边沿触发,减少误触发。
- 保存触发配置:调试复杂问题时,把触发配置保存下来,方便复现。
小技巧:如果你不确定该用哪种触发方式,先试试「自动触发」模式。分析仪会持续采集波形,你可以在捕获到的数据中手动寻找感兴趣的事件,然后再设置精确触发条件。