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通信为例,我的设置流程是:
- 先设边沿触发(SCL上升沿),确认有信号
- 再设协议触发(I2C起始条件),确认总线有通信
- 最后设地址匹配触发(设备地址0x50),定位到具体设备
这样一步步来,不会漏掉问题。
好了,逻辑分析仪的基础就这些。记住:通道数决定你能看多少信号,采样深度决定你能看多久,触发条件决定你能看到什么。这三个参数选对了,调试效率能翻倍。