4、触发设置:逻辑分析仪的边沿触发、模式触发;示波器的上升沿/下降沿触发
触发,说白了就是让仪器在正确的时间点「停下来等你」。
我刚开始用逻辑分析仪和示波器那会儿,最头疼的就是信号满屏乱跳,根本看不清细节。后来才明白——触发没设对,一切都是白搭。今天咱们就聊聊这两个仪器的触发设置,尤其是它们联合调试时该怎么配合。
4.1 逻辑分析仪的边沿触发
边沿触发是最基础、最常用的触发方式。逻辑分析仪检测的是数字信号的跳变沿——上升沿或下降沿。
上升沿触发:当信号从低电平(0)跳变到高电平(1)时触发。
下降沿触发:当信号从高电平(1)跳变到低电平(0)时触发。
我个人习惯在调试SPI、I2C这类同步串行总线时,用时钟信号的上升沿作为触发条件。为什么?因为数据通常在时钟沿被采样,你抓住这个沿,就能看到前后完整的数据窗口。
关键点:边沿触发可以指定任意通道,也可以指定任意边沿方向。逻辑分析仪通常支持同时设置多个通道的边沿条件,比如「通道0上升沿且通道1下降沿」。
我在项目中遇到过一个问题:调试一个MIPI DSI接口时,数据线总是偶尔出现毛刺。我设了下降沿触发,抓了几次都没抓到。后来改成上升沿触发,配合预触发深度,才看到那个毛刺其实发生在时钟上升沿之后几百纳秒——原来是驱动芯片的建立时间不够。
4.2 逻辑分析仪的模式触发
模式触发比边沿触发高级一些。它允许你定义一个特定的电平组合(模式),当所有指定通道同时满足这个组合时,触发发生。
举个例子:你想抓一个I2C的START条件——SCL为高、SDA从高变低。用边沿触发只能抓SDA的下降沿,但无法保证SCL此时是高电平。模式触发就能搞定:设置SCL=1,SDA=0,然后触发。
模式触发的典型应用场景:
- 抓取总线上的特定地址或命令
- 检测多个信号同时满足某个状态
- 调试握手协议中的特定状态组合
小技巧:我建议在调试复杂协议时,先用模式触发抓一个已知的正常波形,确认触发条件正确后,再调整预触发深度去抓异常情况。这样能大大减少无效抓取次数。
模式触发还有一个变种——「序列触发」。你可以定义多个模式按顺序出现,比如先出现模式A,再出现模式B,然后才触发。这个在调试状态机时特别有用。我曾经用序列触发抓到一个DMA传输中的地址跳变错误,那个bug藏得很深,普通触发根本抓不到。
4.3 示波器的上升沿/下降沿触发
示波器的边沿触发和逻辑分析仪类似,但有个重要区别:示波器处理的是模拟信号,它有一个「触发电平」的概念。
上升沿触发:信号从低于触发电平上升到高于触发电平时触发。
下降沿触发:信号从高于触发电平下降到低于触发电平时触发。
你想想看,如果触发电平设得太高,上升沿可能永远触发不了;设得太低,噪声就可能误触发。我一般把触发电平设在信号幅度的50%左右,这样最稳定。
| 触发类型 | 适用场景 | 注意事项 |
|---|---|---|
| 上升沿触发 | 时钟信号、数据起始位、使能信号 | 触发电平要避开噪声区域 |
| 下降沿触发 | 复位信号、中断信号、数据结束位 | 注意信号是否有毛刺导致误触发 |
| 边沿+脉宽 | 捕获特定宽度的脉冲 | 需要示波器支持高级触发 |
示波器还有一个「噪声抑制」功能,我建议在信号质量较差时开启。它会滤除高频噪声,防止误触发。但要注意——开启后触发灵敏度会下降,太小的信号可能触发不了。
4.4 联合调试时的触发配合
这才是今天的重点。逻辑分析仪和示波器一起用,触发怎么配合?
方案一:逻辑分析仪做主触发,示波器做从触发
逻辑分析仪检测到特定数字模式后,输出一个触发信号给示波器。示波器用这个信号作为外部触发源。这样,示波器就能精确捕获数字事件发生时的模拟波形。
具体做法:
- 逻辑分析仪设置模式触发,比如抓到I2C的START条件
- 逻辑分析仪的触发输出口连接到示波器的外部触发输入
- 示波器设置为外部触发模式,触发电平设为TTL电平(约1.5V)
- 同时观察数字总线和模拟波形
注意:逻辑分析仪的触发输出信号通常有几十纳秒的延迟。如果信号频率很高(比如超过50MHz),这个延迟可能导致示波器捕获到的波形和实际事件有偏差。我建议在低速信号(10MHz以下)时使用这种方案。
方案二:示波器做主触发,逻辑分析仪做从触发
反过来也行。示波器检测到模拟信号上的异常(比如过冲、振铃),输出触发信号给逻辑分析仪,让逻辑分析仪记录此时的总线数据。
这个方案我用的不多,因为示波器的触发输出通常只有简单的边沿触发,灵活性不如逻辑分析仪。但如果你怀疑某个模拟问题是由数字信号引起的,这个方案就很合适。
方案三:独立触发,时间戳对齐
两个仪器各自独立触发,然后通过时间戳对齐数据。这个方案要求两个仪器都有高精度的时间戳功能,而且时钟要同步。说实话,我很少用这个方案——太麻烦,而且对齐精度有限。
嗯,这里要注意:无论用哪种方案,触发点的位置都很关键。我一般把预触发深度设为总采样深度的10%~20%,这样既能看触发前的状态,又能看触发后的完整响应。
最后分享一个经验:调试时别急着设复杂的触发条件。先用最简单的边沿触发确认信号是否存在、幅度是否正常、时序是否大致正确。等这些基础问题排查完了,再上模式触发去抓特定事件。一步一步来,反而更快。