3. 脉宽触发:正脉宽、负脉宽、条件设置

脉宽触发,说白了就是个“定时炸弹”。

边沿触发只能告诉你“信号跳了”,但跳了之后持续了多久,它不管。而脉宽触发,就是专门盯着脉冲的宽度做文章的。它能帮你抓到那些“太窄”或“太宽”的异常脉冲——这在调试串行总线、时钟抖动、毛刺或者电源上电时序时,简直是救命稻草。

3.1 为什么要用脉宽触发?

我刚开始用示波器那会儿,觉得边沿触发就够用了。直到有一次,一块板子的I²C总线偶尔死锁,我盯着屏幕看了半天,所有的Start和Stop条件看起来都对。后来用脉宽触发设定“SCL低电平时间超过1ms就触发”,嘿,等了大概两分钟就抓到了一个异常——某个从机把时钟拉低了足足5ms。这种偶发问题,别说边沿了,你就是用A组合逻辑也很难稳稳抓住。

脉宽触发的核心价值就是:按照信号的时域“形状”来筛选事件。不管你是看正脉冲宽度,还是负脉冲宽度,只要设好时间窗口,示波器就能自动把你的注意力锁定在“形状异常”的波形上。

适用场景速查: 时钟占空比异常、SPI时钟毛刺、复位信号过短、UART起始位畸变、电源纹波尖刺捕捉、异步信号异步脉冲宽度检查。

3.2 正脉宽触发 vs 负脉宽触发

这里区分其实很简单:正脉宽就是高电平持续的时间,负脉宽就是低电平持续的时间。但实际设置的时候,容易搞混——我见过好几个同事把“负脉宽”设成了“低于多少伏特”。

咱们把两者的定义和设置要点放在一张表里,你看完就清楚了:

类型 定义 典型触发条件 常见用途
正脉宽触发 测量高电平从上升到下降的时间 T > X, T < X, X < T < Y 捕捉窄的高电平毛刺、检查时钟高电平时间异常
负脉宽触发 测量低电平从下降到上升的时间 T > X, T < X, X < T < Y 捕捉低的低电平毛刺、捕获复位/使能信号异常过低或过长

你可能会想:“设个时间窗口就行了吗?有那么简单?”

嗯,参数上是简单,但真正难的是判断“这个脉冲宽度为什么不正常”。举个例子,你设定正脉宽大于5us触发,结果示波器频频触发——别急着高兴,很可能是因为基准时钟本身就有抖动,而不是真有什么严重故障。

我个人的一个小习惯: 先不设上限,只用“大于X”把最可疑的事件抓出来。等抓到第一个样本后再调出测量参数,看它实际脉宽是多少,然后针对性地设窗口。别一上来就设XX < T < Y,那样可能把想抓的异常也滤掉了。

3.3 条件设置的三种模式

大部分中高端示波器(比如Keysight 3000T系列、Tektronix MSO系列)的脉宽触发条件都支持三种模式。咱们把它拆开来看:

  1. 大于(>)模式: 脉冲宽度大于设定值就触发。最适合抓窄毛刺或宽脉冲异常。
  2. 小于(<)模式: 脉冲宽度小于设定值就触发。适合抓“短得离谱”的脉冲。
  3. 在范围内(在XX与YY之间)模式: 脉宽落在窗口内触发。适合检查信号是否满足时序规范。

另外,部分示波器还支持“不在范围内”模式,也就是排除某个脉宽段。这个功能我偶尔会用——比如调试一个已知会在300ns-500ns之间频繁出现正常波形的情况,我就设一个“排除300ns-500ns”,让示波器只捕捉那个范围之外的波形。

我曾经踩过的一个坑: 在调试一个SPI Flash读取时序时,我设了“负脉宽小于100ns”触发,想抓串行时钟上的毛刺。结果一直没触发——后来才发现,那款示波器的最低脉宽检测极限是200ps,而我设的100ns远大于它,应该能触发啊。排查了半天,原来是触发电平设得太高,低电平没完全落到阈值以下。所以记住:脉宽触发的“宽度”是从信号穿越触发电平的时刻开始算的。触发电平没设对,一切白搭。

3.4 调试时的几个检查点

在实际调试中,我总结了四个必须确认的点,你可以照着清单过一遍:

  • 触发电平对了没? 比如测3.3V的LVTTL信号,触发电平建议设在1.65V左右。设得太高或太低,测出来的脉宽都是假的。
  • 时间单位设置合理吗? 假如信号周期是1us,你去设“正脉宽大于100ms”触发,那等于没触发。最好设在工作周期附近再加一点余量。
  • 脉冲极性分清了吗? 我见过有人明明想抓低电平毛刺,却设了“正脉宽小于10ns”,结果一直不触发。其实是极性搞反了。
  • 耦合方式有影响吗? DC耦合测量脉宽最准。如果你用AC耦合,信号会漂移,脉宽会变窄或变宽——尤其在低频段,误差很大。

3.5 正负脉宽触发核心逻辑

下面这张图,把正脉宽和负脉宽触发的判断逻辑串了一下。方便你快速回忆设置流程:

正负脉宽触发核心逻辑 正负脉宽触发核心逻辑流程 触发输入信号 边沿检测 & 计时器启动 正脉宽检测 测量高电平时间 T_high 负脉宽检测 测量低电平时间 T_low 条件判断 T_high > X? < X? 在范围内? 条件判断 T_low > X? < X? 在范围内? 触发输出 注意:实际测量中,触发电平必须准确,否则计时起点偏移会导致脉宽误判 建议先在“Auto”模式下查看原始波形,确认脉冲大致宽度后再设条件

3.6 一个实战中的设置示例

假设你正在调试一个UART通信,怀疑接收端偶尔因为起始位太窄而漏数据。

  • 信号特性: 正常波特率115200,每个bit约8.7us。起始位是低电平,持续一个bit时间。
  • 你想抓什么: 低于7us的起始位(也就是负脉宽)。
  • 设置步骤:
    1. 通道1设为1V/div,垂直偏移调好,触发电平设在1.65V左右(假设是3.3V逻辑)。
    2. 触发类型选“脉宽触发”,极性选“负脉宽”。
    3. 条件设为“小于7us”。
    4. 时基设为20us/div,以便能看到至少两个字节的波形。
    5. 打开协议解码同时分析。

一旦触发,你会看到一个起始位明显偏窄的波形出现在屏幕中央。这时候,你再配合分析仪看它后面的数据是不是出了乱码——嗯,一下子就把根因锁定了。

我的一点点经验: 实际调试时,别只依赖一次触发的截图。我习惯每种条件抓20次样本,然后用统计看异常脉宽的平均值和标准差。如果标准差很大,说明问题可能来自多个源头——不一定是发送器,也可能是电源噪声干扰了阈值。多想想,别急着下结论。

3.7 小结

脉宽触发,真的不复杂,但用好它需要一点手感。记住那几个关键检查点,再配合协议分析仪的数据包解码,很多看似“随机”的故障都能被精准捕获。