一、触发系统入门:触发概念、触发位置与触发模式
大家好,我是老张。今天咱们聊聊逻辑分析仪最核心的功能——触发系统。
说实话,我刚入行那会儿,觉得触发就是个「开始采集」的按钮。后来被坑了几次才明白,触发系统才是逻辑分析仪的灵魂。你想想看,没有触发,就像在漆黑的隧道里拍照——快门按了,但拍到的全是黑暗。
1.1 触发到底是什么?
触发,说白了就是告诉逻辑分析仪:「嘿,注意了,我要抓这个信号!」
举个例子。你在调试一个SPI通信,想看看片选信号CS拉低之后,时钟和数据是怎么传输的。如果没有触发,分析仪只会傻乎乎地从头录到尾,你得像大海捞针一样去找那段数据。
有了触发就不一样了。你设置「CS下降沿」为触发条件,分析仪就会一直等待这个条件。一旦CS拉低,它立刻开始记录——就像守株待兔,但这次兔子真的会来。
核心要点:触发条件 = 你关心的信号事件。它告诉分析仪「什么时候开始认真记录」。
我在项目中遇到过最典型的例子:调试I2C总线时,设备偶尔会无响应。我设置触发条件为「SCL时钟连续9个周期后SDA仍为高」,一下子就抓到了那个异常时序。如果没有触发,可能得录几个小时的数据才能找到一次异常。
1.2 触发位置:预触发与后触发
很多人以为触发就是「从触发点开始记录」。其实不是。逻辑分析仪可以记录触发点之前和之后的数据。
这就引出了两个概念:预触发(Pre-trigger)和后触发(Post-trigger)。
| 参数 | 预触发(Pre-trigger) | 后触发(Post-trigger) |
|---|---|---|
| 记录内容 | 触发条件发生之前的数据 | 触发条件发生之后的数据 |
| 典型用途 | 查看导致触发的原因 | 查看触发后的行为 |
| 存储占比 | 通常占10%~50% | 通常占50%~90% |
预触发:我个人习惯把预触发设到25%左右。为什么?因为我想知道「触发之前发生了什么」。比如调试一个中断信号,我想看看中断来之前,CPU在做什么操作。预触发就能帮我看到「前因」。
后触发:这个好理解,就是触发之后的数据。比如你设置「收到错误帧」为触发条件,后触发就能看到设备是怎么处理这个错误的。
我的经验:调试协议时序时,预触发设30%,后触发设70%。这样既能看清触发原因,又能看到后续响应。如果是抓异常,我会把预触发调到50%——因为异常往往发生在触发条件之前。
嗯,这里要注意:预触发不是无限长的。它受限于分析仪的存储深度。比如你的分析仪有1M采样点,预触发设25%,那就是250K个采样点留给触发前的数据。别贪多,够用就行。
1.3 触发模式:立即、自动与正常
触发模式决定了分析仪「等不到触发条件时怎么办」。三种模式各有各的脾气。
1.3.1 立即模式(Immediate)
这个最简单。你一点「开始」,它立马就录。不管有没有触发条件,录完就停。
什么时候用?我一般只在两种情况下用:一是快速看看信号有没有,二是信号太简单不需要触发。比如检查电源上电时序,直接录一段看看谁先谁后就行。
注意:立即模式没有「等待触发」的过程。如果你要抓一个偶尔出现的异常,千万别用这个模式——录到的全是正常数据,浪费时间。
1.3.2 自动模式(Auto)
这个模式有点「智能」。它会先等触发条件,如果等了一段时间还没等到,它就自动开始记录。
我个人觉得自动模式是最常用的。为什么?因为调试的时候,你经常不确定信号会不会出现。比如你设置了一个复杂的触发条件,但电路可能根本没产生那个信号。自动模式会给你一个「保底」——至少能看到当前信号是什么样子的。
我曾经调试一个UART通信,怎么都触发不了。换成自动模式一看,原来是波特率设错了,数据根本对不上。要是用正常模式,我可能还在傻等。
1.3.3 正常模式(Normal)
这个模式最严格。它只会在触发条件满足时才开始记录。等不到?那就一直等下去。
正常模式适合抓那些「确定会发生」的事件。比如你按下一个按键,GPIO会产生一个下降沿。用正常模式,按下按键的瞬间,分析仪就触发记录。
但要注意:如果触发条件永远不会发生,分析仪就会一直处于「等待触发」状态。我见过新手用正常模式抓一个不存在的信号,等了半小时还以为分析仪坏了。
| 模式 | 触发条件满足时 | 触发条件不满足时 | 推荐场景 |
|---|---|---|---|
| 立即 | 立即记录(忽略触发) | 立即记录(忽略触发) | 快速查看信号有无 |
| 自动 | 等待触发后记录 | 超时后自动记录 | 日常调试、不确定信号 |
| 正常 | 等待触发后记录 | 一直等待 | 抓确定事件、异常 |
1.4 实战中的选择建议
说了这么多,到底怎么选?我给大家一个简单的决策流程:
- 先确认信号是否存在:用立即模式或自动模式,看看能不能抓到数据。
- 确认触发条件是否正确:用自动模式,如果触发没发生,至少能看到实际信号长什么样。
- 抓特定事件:用正常模式,配合合适的预触发比例。
避坑指南:我曾经犯过一个低级错误——用正常模式抓一个每100ms才出现一次的信号,但分析仪的采样深度只够录50ms。结果每次触发后只录到一半数据。后来我把采样率调低,或者增加存储深度,才解决问题。
最后说一句:触发系统不是摆设。花10分钟设置好触发,可能帮你省下10小时的调试时间。我见过太多工程师拿着分析仪一通乱录,然后对着海量数据发呆。别学他们。
下一章咱们聊聊高级触发——条件触发、序列触发和协议触发。这些才是真正能让你「指哪打哪」的利器。