第四节:基础信号捕获——单次触发、连续捕获与触发条件设置
各位同学,今天我们来聊聊逻辑分析仪最基础、也最核心的操作——信号捕获。说实话,很多新手拿到逻辑分析仪,第一反应就是「直接点开始,看波形」。嗯,这确实能抓到信号,但往往抓到的不是你想要的。我刚开始用逻辑分析仪那会儿,就吃过这个亏。
记得有一次调试一个I2C通信问题,从机偶尔不响应。我开着连续捕获看了半天,波形密密麻麻的,根本找不到那个异常点。后来才意识到——我连触发条件都没设。白白浪费了两个小时。所以今天这节课,咱们就把捕获这件事彻底讲透。
一、单次触发捕获——精准定位异常
单次触发,说白了就是「等一个特定事件发生,然后抓下来」。它特别适合捕捉那些偶发性的故障。
什么时候用单次触发?
- 系统上电瞬间的信号行为
- 按键按下时的电平变化
- 通信协议中的起始条件
- 偶尔出现的错误帧
我个人习惯,在调试新产品时,第一件事就是设好单次触发。为什么呢?因为单次触发能让你看到「事件发生前」和「事件发生后」的完整上下文。连续捕获虽然也能看,但数据量太大,反而容易漏掉关键细节。
核心要点:单次触发 = 等待触发条件 → 捕获一段数据 → 停止。它只抓一次,不会覆盖之前的数据。
举个例子,你怀疑某个GPIO在系统启动时有一个毛刺。你设好上升沿触发,然后按复位键。逻辑分析仪会一直等待,直到那个上升沿出现,然后捕获前后各一段数据。这样你就能看到毛刺到底是从哪来的。
二、连续捕获——观察长期行为
连续捕获,也叫「滚动模式」或「流模式」。它就像一台永不停机的示波器,波形从左往右滚动显示。
连续捕获的适用场景:
- 观察长时间内的信号变化趋势
- 监控通信总线是否稳定
- 调试PWM占空比是否漂移
- 分析多个事件之间的时间间隔
但这里有个坑——连续捕获的采样深度是有限的。你想想看,逻辑分析仪的内存就那么大,数据一直在往里写,旧数据就会被新数据覆盖。所以连续捕获只能看到「最近一段时间」的波形。
避坑指南:我曾经调试一个UART波特率偏差问题,用连续捕获看了半天,总觉得波形没问题。后来才发现,连续捕获模式下采样率被自动降低了,导致边沿位置不准确。所以连续捕获时,一定要确认采样率是否满足你的需求。
我个人建议:连续捕获适合做「初步观察」,真正要分析细节,还是得用单次触发。
三、触发条件设置——上升沿、下降沿、电平触发
触发条件,就是告诉逻辑分析仪「什么时候开始干活」。这是整个捕获过程的核心。没有触发条件,你就是在瞎抓。
3.1 上升沿触发
上升沿触发,检测信号从低电平跳变到高电平的那个瞬间。这是最常用的触发方式。
典型应用:
- 捕获SPI的片选信号(CS)从高变低后的数据
- 捕捉中断请求信号的上升沿
- 分析时钟信号的第一个上升沿
设置方法很简单:在触发条件中选择「上升沿」,然后指定你要监测的通道。逻辑分析仪会一直等待,直到该通道出现一个上升沿,然后开始捕获。
3.2 下降沿触发
下降沿触发,检测信号从高电平跳变到低电平的那个瞬间。和上升沿正好相反。
典型应用:
- 捕获UART的起始位(起始位就是下降沿)
- 检测复位信号的下降沿
- 分析I2C的停止条件(SCL高电平时SDA上升沿)
嗯,这里要注意:有些协议同时用到上升沿和下降沿。比如I2C,数据在SCL的上升沿采样,但起始和停止条件却用到了边沿组合。这时候单一边沿触发就不够用了,需要用到更高级的「序列触发」或「协议触发」。这个我们后面章节会讲。
3.3 电平触发
电平触发,也叫「逻辑电平触发」。它不关心边沿,只关心信号当前是高还是低。
电平触发的两种模式:
- 高电平触发:当信号为高电平时触发
- 低电平触发:当信号为低电平时触发
电平触发特别适合检测「信号卡死」的情况。比如你怀疑某个使能信号一直被拉低,导致外设不工作。设一个高电平触发,如果逻辑分析仪一直不触发,那就说明信号确实没变高过。
小技巧:我调试时经常把电平触发和边沿触发结合起来用。比如先用电平触发确认信号有没有变化,再用边沿触发抓具体的变化时刻。这样效率高很多。
四、触发位置与预触发深度
触发条件设好了,还有一个重要参数——触发位置。它决定了触发事件在捕获窗口中的位置。
| 触发位置 | 说明 | 适用场景 |
|---|---|---|
| 触发前(Pre-trigger) | 触发事件位于捕获窗口的右侧 | 想看触发事件之前发生了什么 |
| 触发后(Post-trigger) | 触发事件位于捕获窗口的左侧 | 想看触发事件之后发生了什么 |
| 中心触发 | 触发事件位于捕获窗口的中间 | 想看触发事件前后的上下文 |
我个人最常用的是「中心触发」。为什么呢?因为这样既能看触发前的原因,又能看触发后的结果。比如调试一个通信错误,中心触发能让你看到错误发生前的几个字节,以及错误发生后的总线状态。
预触发深度,就是触发前要保存多少数据。这个值越大,你能看到的「历史」就越长。但代价是总捕获时间会缩短,因为内存是固定的。
经验之谈:我一般把预触发深度设为总深度的50%。这样前后各一半,比较均衡。如果怀疑问题是由某个前置条件引起的,我会把预触发深度调到70%,多留点空间给「原因」。
五、实战配置示例
好了,理论讲完了,咱们来点实际的。假设你要调试一个SPI通信,从机偶尔不响应。你会怎么配置?
我的配置步骤:
- 选择触发方式:单次触发。因为问题偶发,连续捕获数据太多。
- 设置触发条件:下降沿触发,监测CS片选信号。因为SPI通信从CS拉低开始。
- 设置触发位置:中心触发,预触发深度50%。
- 设置采样率:至少4倍于SPI时钟频率。比如SPI时钟10MHz,采样率设40MHz以上。
- 设置捕获深度:根据你需要观察的字节数来算。比如你要看100个字节,每个字节8位,加上时钟和CS,大概需要800个采样点。保险起见,设个10K深度就够了。
- 开始捕获:点击「开始」或「Arm」按钮,逻辑分析仪进入等待状态。
- 触发事件:当CS拉低时,逻辑分析仪自动捕获并停止。
- 分析波形:查看触发点前后的数据,找出异常。
你看,整个流程很清晰。但如果你不设触发条件,直接点连续捕获,那波形就是一团乱麻。
又一个坑:我曾经犯过一个低级错误——采样率设得太低,导致边沿位置不准确。明明是个上升沿,看起来却像是个缓慢的斜坡。后来才发现,采样率只有信号频率的2倍,根本不够。记住,采样率至少要是信号最高频率的4倍,最好8倍以上。
六、总结
今天这节课,我们讲了三种捕获方式:
- 单次触发:精准定位,适合偶发故障
- 连续捕获:长期观察,适合趋势分析
- 触发条件:上升沿、下降沿、电平触发,告诉分析仪「什么时候开始」
这三种方式没有绝对的好坏,关键看场景。我个人的工作流是:先用连续捕获摸清信号的大致行为,再用单次触发抓具体细节。触发条件嘛,90%的情况下用边沿触发就够了,电平触发更多是作为辅助手段。
下一节课,我们会讲「协议触发与解码」,那才是真正好玩的。到时候我会拿一个实际项目中的I2C通信故障来演示,保证让你大开眼界。
好了,今天的课就到这里。有问题随时问我,咱们下节课见。