2、逻辑分析仪基础:工作原理、通道数与采样深度、触发条件设置

好,咱们接着聊。示波器看模拟信号,逻辑分析仪看数字信号,这俩是调试时的左膀右臂。今天我就把逻辑分析仪的几个核心概念掰开揉碎讲清楚。

2.1 逻辑分析仪的工作原理

说白了,逻辑分析仪就是个“数字信号记录仪”。它不关心电压具体是多少,只关心信号是“高”还是“低”。

它的内部有个比较器,设定一个阈值电压。比如你设2.5V,那信号高于2.5V就算逻辑“1”,低于2.5V就算逻辑“0”。就这么简单粗暴。

我刚开始用的时候犯过一个低级错误:测3.3V的SPI总线,阈值设成了1.8V。结果信号线上的噪声全被当成有效电平,抓出来的波形乱七八糟。嗯,这里要注意:阈值一定要根据信号电平来设。

逻辑分析仪的核心工作流程是:

  • 采样:以固定频率对输入信号进行电平判断
  • 存储:把判断结果(0或1)存入内存
  • 触发:满足设定条件时开始或停止记录
  • 显示:把存储的数据还原成时序图

你想想看,它其实就是一个高速的“数字录像机”。

2.2 通道数与采样深度

这两个参数直接决定了你能抓什么、能抓多久。

通道数

通道数就是能同时测量的信号数量。常见的逻辑分析仪有8通道、16通道、32通道,甚至更多。

我个人习惯:调试SPI(4线)至少用8通道,调试并行总线至少16通道起步。为什么?因为除了数据线,你还要留几个通道给控制信号、时钟、复位这些。

我在项目中遇到过一件事:用8通道分析一个16位并行ADC的输出,结果发现控制信号没地方接了。最后只能分两次抓,效率低得让人抓狂。所以选通道数时,建议留出30%的余量。

场景 推荐通道数 说明
UART/I2C调试 4-8 信号少,但建议留余量
SPI调试 8-16 MOSI/MISO/CS/CLK,再加控制信号
并行总线 16-32 数据线+地址线+控制线
复杂SoC调试 32以上 多总线同时监控

采样深度

采样深度就是逻辑分析仪能存多少数据。单位是“样本点数”,比如1M、4M、16M。

采样深度 = 采样率 × 采样时间。这个公式要记住。

举个例子:你用100MHz采样率抓一个SPI信号,采样深度是1M点,那最多能抓10ms的数据。够不够?看情况。如果SPI时钟是10MHz,10ms能传10万个字节,一般够用。但如果要分析系统启动过程,可能就需要更大的深度。

关键点:采样深度和采样率是矛盾的。采样率越高,能抓的时间越短。所以要根据实际需求权衡。

我曾经调试一个I2C设备,设备启动后要等500ms才响应。我用1M深度的逻辑分析仪,采样率设成1MHz,刚好能抓1秒的数据。如果采样率设成10MHz,就只能抓100ms,根本看不到响应。所以,抓长时序时,适当降低采样率。

2.3 触发条件设置

触发是逻辑分析仪最强大的功能之一。没有触发,你就是在数据海洋里捞针。

触发条件告诉逻辑分析仪:“嘿,从这儿开始记录!”

常见的触发类型

  • 边沿触发:上升沿或下降沿触发。最简单,但最常用。
  • 电平触发:信号为高或低时触发。适合检测异常状态。
  • 码型触发:多个信号组合成特定码型时触发。比如“CS为低且SCK有上升沿”。
  • 序列触发:按顺序满足多个条件。比如“先出现A,再出现B,然后触发”。
  • 协议触发:针对特定协议(I2C、SPI、UART等)的触发。比如“I2C地址匹配”。

我个人最常用的是码型触发和协议触发。码型触发适合调试硬件问题,协议触发适合调试通信问题。

小技巧:调试时可以先设一个简单的边沿触发,确认信号存在。然后再逐步增加触发条件,定位具体问题。

触发位置

触发位置决定了触发点在存储数据中的位置。一般有三种:

  • 预触发:触发点之前的数据也保存。适合看触发前发生了什么。
  • 中心触发:触发点在数据中间。前后数据各占一半。
  • 后触发:触发点之后的数据才保存。适合看触发后的行为。

我曾经调试一个SPI通信异常,设备偶尔会发错数据。我设了码型触发(数据错误码),然后用预触发模式,抓到了触发前100个时钟周期的数据。一看,原来是CS信号在数据传输过程中被意外拉高了。如果没有预触发,根本找不到原因。

注意:触发条件不要设得太严格。我见过有人设了5个条件的序列触发,结果一整天都没触发一次。先放宽条件,确认信号正常,再逐步收紧。

实际设置步骤

以调试I2C通信为例,我的设置流程是:

  1. 先设边沿触发(SCL上升沿),确认有信号
  2. 再设协议触发(I2C起始条件),确认总线有通信
  3. 最后设地址匹配触发(设备地址0x50),定位到具体设备

这样一步步来,不会漏掉问题。

好了,逻辑分析仪的基础就这些。记住:通道数决定你能看多少信号,采样深度决定你能看多久,触发条件决定你能看到什么。这三个参数选对了,调试效率能翻倍。