您现在的位置是:首页 >学无止境 >基于树莓派RP2040的逻辑分析仪使用手册网站首页学无止境
基于树莓派RP2040的逻辑分析仪使用手册
简介
现在提到测量,首先我们想到的是示波器,尤其是一些老工程师,他们对示波器的认知度非常高。而逻辑分析仪是一种新型测量工具,是随着单片机技术发展而发展起来的,非常适合单片机这类数字系统的测量分析,而通信方面的分析中,比示波器要更加方便和强大。
在数字信号测量中,使用示波器进行信号捕获后,查看数字信号的变化以确认协议逻辑设计的正确性,这点一般需要凭借个人丰富的经验和对协议的充分理解才能保证测试顺利。可谓是“人脑解码器”,效率低下且很容易出错,在这种使用场景下,逻辑分析仪的辅助解码功能就显得尤为重要。
逻辑分析仪一般用于较专业的数字逻辑分析,一般在如下四种场合较多:
(1)调试并检验数字系统的运行;
(2)同时跟踪并使多个数字信号相关联;
(3)检验并分析总线中违反时限的操作以及瞬变状态;
(4)跟踪嵌入软件的执行情况。
逻辑分析仪和示波器的区别
从电压等级显示来看,逻辑分析仪只能观察信号的高低电平(逻辑电平),而示波器能观察到信号的具体电压大小;
从输入通道数来看,逻辑分析仪可轻易实现多通道(16个或更多)同时测量,方便对并行信号进行分析。而示波器最多也就实现4通道同时测量;
相对来说,逻辑分析仪的应用更偏向于数字电路的时序逻辑分析,并不关注信号本身的波形结构;而示波器虽能测量整个信号的波形,从中分析出信号的异常和干扰,但无法长时间、多通道记录信号的时序逻辑,在分析时序逻辑方面能力较弱。
逻辑分析仪中,需要关注的参数有:通道数量、采样数量(存储深度)、采样频率。
这三个参数的上限很大程度决定了逻辑分析仪整体的性能和价格。
通道数量
通道数量决定了最多能够同时并行捕获多少路信号,如测量三相无刷电机的PWM并观察其死区时,就需要六路通道同时进行捕获:
采样数量
采样数量也称为储存深度,一般由逻辑分析仪内存决定,内存越大,单次采样数量越高,在恒定采样通道数量、恒定采样频率的情况下,采样数量越高,单次捕获的采样时间也就越长。
值得注意的是,在总体采样数量不变的情况下增加采样通道的话,每个通道分配到的采样数量就会减少,所以在某些通道不使用的情况下一定要失能,节省存储资源。
采样频率
采样频率也决定了采样精度,一般情况下,被使能的通道越少,采样频率的上限越高。通常,采样频率要大于被测量信号的通信频率才能准确被测量,此频率可由示波器测量而定。
但根据以往经验而言,实际使用时,采样频率并非越高越好,在恒定通道数量和采样数量下,采样频率越高意味着单次采样的时长越短,采样时间过短的话,有可能无法捕获到想要的完整的一段信号。
且过高的采样频率有时可能会采集到一些意想不到的高频噪声,对上位机的信号解码的影响非常大,有可能会得到错误的解码信息,通常采样频率比通信频率高出2至10倍最佳。
RP2040逻辑分析仪介绍
逻辑分析仪根据其硬件设备的功能和复杂程度,主要分为独立式(单机型)逻辑分析仪和基于电脑(PC-Base)的虚拟逻辑分析仪两大类。
- 独立式逻辑分析仪是将所有的软件,硬件整合在一台仪器中,使用方便,但价格高昂。
- 虚拟逻辑分析仪则需要结合电脑使用,利用PC强大的计算和显示功能,完成数据处理、解码及显示等工作,由于其硬件结构简单,性价比也很高。
硬件概况
本文中采用基于立创开源项目24通道 100M逻辑分析仪 - 嘉立创EDA开源硬件平台而制作的虚拟逻辑分析仪。
其器件成本大约20元左右,主控芯片采用树莓派RP2040,具有24路采样通道,其TYPE-C接口作为连接电脑的数据端口以及逻辑分析仪的供电端口:
上层的小板为每一路提供钳位保护电路,24路通道中前21路为逻辑分析通道,后3路为低速示波器通道:
固件烧写
其固件对应下文的pulseview上位机使用,固件下载:
链接:https://pan.baidu.com/s/1ldPBY1aPDAZ8N3V-RZsp0w?pwd=root 提取码:root
下载得到一个“pico_sdk_sigrok.uf2”文件,不要改文件名。
- 按住逻辑分析仪上的BOOT键不放,插上TYPE-C数据线连接电脑:
- 待电脑识别出新磁盘,既可松开BOOT按键:
- 将“pico_sdk_sigrok.uf2”固件文件拷贝至新磁盘内,树莓派识别到此固件将会自动烧录:
- 鼠标右键点击左下角win开始按钮,打开设备管理器:
- 可以在设备管理器中看到此设备,说明固件烧写成功,但未安装驱动,下文在介绍上位机安装时将介绍如何安装驱动:
pulseview上位机介绍
本文采用基于QT的开源上位机pulseview,此上位机支持众多开源的虚拟逻辑分析仪,拥有庞大的数字协议解码器库,常用的I2C、SPI、UART、CAN、SD协议都支持,甚至自己DIY解码协议,功能非常强大。
软件安装
上位机下载:
链接:https://pan.baidu.com/s/1-yG2uPX-qoB59G1DLP9geg?pwd=root 提取码:root
下载完成后双击安装包,按照正常软件安装步骤正常安装即可,安装过程非常简单。如下图所示就是安装按成了:
安装完成后不会生成快捷方式,在“开始”菜单栏中找到如下图所示的sigrok文件夹中pulseview打开,或自行到安装目录下复制添加快捷方式到桌面即可:
软件界面,如下:
驱动安装
安装驱动前电脑是无法识别此逻辑分析仪的,需要借助Zadig工具手动安装驱动。
- 通过TYPE-C连接电脑,连接不需要按任何按键,连接后在设备管理器看到,如下设备:
- 在软件安装目录下,找到“zadig.exe”软件,双击打开:
- 选择在设备管理器看到的设备名称“Reset”,驱动选CDC,然后点击“Install Driver”:
- 等待安装完成后,可以看到设备管理器多出一个串口就是逻辑分析仪,本例是COM21口:
界面说明
选择软件自带的示例Demo设备:
可以看到有很通道出现,菜单栏也多出了几个图标和选项:
界面新增的按钮如下:
基本使用示例
示例Demo
为了熟悉上位机的操作,作者贴心准备了示例Demo,方便在没有逻辑分析仪硬件,或不具备测试条件的情况下熟悉软件界面。
- 选择Demo设备:
- 可以看到下方通道界面有A0-A4五路模拟通道(有些逻辑分析仪是带模拟通道的),D0-D7八路数字
- 点击通道前的标签就可以对通道进行配置:
点击模拟通道:
点击数字通道(注意,当多个通道被设置触发方式时,会在优先满足条件的通道上开始触发):
- 如果不需要使用这么多通道,可以将通道失能,以节省资源换取更长的捕获时间或更高的捕获精度:
这些选择勾勾上就是使能,去掉就是失能,也可以,在下方批量使能失能:
- 至于采样数和采样频率的选择方式在后面章节进行讲解,demo无需关心,点击运行,就可以看到各个通道的波形输出,采集一小会后,手动点击停止输出:
- 可以看到输出非常密集,无法辨析波形,将鼠标移动到要缩放的地方,滚轮缩放,左键拖拽上下左右平移:
- 在模拟通道上,移动鼠标的时候右侧会有数值变化,其表示当前时刻上的电压值与显示电压分辨率:
为了方便演示,这里将通道宽度调大:
中间灰色线表示0电压基准点:
20 V/div表示当前通道为20V一格(这里只有一格,所以20V也是他的量程,但量程是由硬件本身决定的,软件上是无法设置的,请注意实际使用的逻辑分析仪时测量电压的量程值,切勿超量程测量):
通道上方有时间尺标,尺标上的刻度就是从触发开始测量至此的时间。
将光标放在模拟通道上就会显示当前时刻下的电压值:
- 继续滚轮放大就可以清晰看到采样点,采样点越密集(采样频率越高),采样精度才会越高:
从下方数字通道中可以看出,此高电平持续时间为五个采样周期:
一个采样周期的时长就是采样频率的倒数,在触发捕获时采样频率为200kHz,所以采样周期T=1/200kHz=0.000005s=5μs
高电平持续时间就是5*50=25μs
当然,实际使用时不需要手动计算,可以使用光标计算。
- 光标有两种,标签式光标:
在需要测量的位置点击右键,选择“Create marker here”创建一个标签:
就会出现一个标签,这个标签的字母是根据上次创建的标签延续下来的,也可以左键点击标签进行修改
标签可以用鼠标左键左右拖拽。
用同样的方法在下一个需要测量的位置创建标签:
把鼠标移到某个标签上,就可以看到其他标签与该标签的相对时间距离:
此方法可以创建多个标签,查看多段时间长度:
如果想取消光标,就右键光标选Delete:
- 滑动式光标:
这种光标只能测量一段时间的长度,但用起来比标签式光标方便,还能顺便计算频率。
点击光标工具:
拖拽光标两端,使其对准需要测量的两个位置,可以看到高电平时长就是25μs:
- 协议解析(解码)功能是逻辑分析仪最强大的功能,但在Demo上无法使用,此功能将在后续章节介绍。
- 新版本上位机还带有函数绘图功能,方便用户做波形对比:
点击此按钮,下方就会生成一个新的通道:
点击通道进入配置菜单,此处可以输入函数图的表达式:
函数绘制具体用法可以自行研究,这里不过多赘述。
上位机连接逻辑分析仪
- 将逻辑分析仪连接好PC,逻辑分析仪电源灯亮起:
- 之前章节已经安装好驱动,在设备管理器中可以看到串口设备:
- 在pulseview上位机中,点击此处,选择新增设备:
- 按顺序操作,添加设备:
- 可以看到二十一路数字通道和三路模拟通道:
不知道为什么通道别名是从D2开始算的,D2是通道1,所以逻辑分析仪上的通道号=通道别名-1,如果不适应可以手动修改别名,而模拟通道A0就是对应通道22,A1对应通道23,A2对应通道24。
捕获解析I2C信号
本例以触摸屏I2C为例。
- 连接好屏幕,但不要上电:
- 查看原理图:
- 根据原理图,使用测试钩针连接SCL、SDA,INT是中断线,触摸会触发中断,也可以连接:
注意一定要在断电状态下连接,防止连接过程中碰到隔壁引脚短路。
通道1连接SDA,通道2连接SCL,通道3连接INT,逻辑分析仪地线与I2C共地:
吐槽一下,这一盒几个钩针比这个逻辑分析仪还贵。
在确认连接无误就可以上电了。
- 回到上位机软件,将没有用到的通道关闭,只保留通道1、通道2、通道3:
为了方便演示,这里将通道别名修改成信号线对应名称:
- 采样频率的确定:
采样频率的确定方式有很多种,首先必须知道I2C的通信频率,可以在软件上确定I2C频率,可以点击屏幕使用示波器测量SCL线的频率,也可以点击屏幕用逻辑分析仪的模拟通道连接SCL先测得频率。
还有一种较为简单的方法就是,开始先选一个较大的频率测量,然后知道实际通信频率后再适当减小。
由于I2C的通信频率不高,可以先选一个较大的频率,这里选10MHz,采样频率并不是越高越好的,采样率太高会导致容易采集到无用的干扰信号,而且最大采样时长也会相对变少,通常采样频率比通信频率高出2至10倍最佳。
采样点数同样10M,采样一秒:
- 触发方式的确定:
测量I2C起始信号一般是从SDA下降沿开始测量,也可以用中断INT下降沿测量。
- 点击RUN,触发不会马上开始,直到INT下降沿到来才会触发:
- 点击触摸屏,使其发出一个中断下降沿。
触发后大约一秒,捕获自动停止。
其实是不足一秒的,因为有10%的采样点会早于触发点提前捕获,这个提前量可以在这里设置:
- 这里一口气采集了很多帧I2C通信,而且信号比较密集,可以滚轮放大,便于观察:
再放大,观察第一帧信号:
- 用光标测量一下通信频率,I2C数据位是从SCL上升沿处读取的,所以应该测量两个上升沿之间的间隔:
通信频率为357.1kHz,设置10MHz的采样频率是绰绰有余,设置1MHz就差不多够了,毕竟我们最终目的是为了解析数据,不是时间。
- 信号解码
点击解码图标,在侧边协议库选择对应通信协议:
如果找不到可以尝试搜索:
- 找到后点击选择协议,会多出一个解码通道,并在上面提示未选择通道:
- 设置解码通道:
选择线信号对应的通道:
这里选择解码地址是否算上读写位(是否偏移):
- 这里还有一个非常厉害的功能,可以二次解码特定常用器件的指令:
- 设置完成后,就可以看到解码通道的解码信息:
数据在下一帧:
下一帧还是数据:
再次起始位,这次就开始读取:
后面有很多数据位:
最后是停止位:
由于解码库并没有此触摸芯片,要搞清楚这段通信的实际意义还是要查看芯片手册,但其实已经非常直观的将一段完整的I2C数据解析,并且可以确定I2C的通信在电气连接上是正常的,因为已经可以完整观察到相互应答和读写。
解码红外信号
仪器的用法可以千奇百怪,就像有些有经验的老师傅会用普通指针万用表测量电解电容的容值,逻辑分析仪也不例外,曾经笔者也试过在没有示波器和其他可编程设备的情况下,使用逻辑分析仪测量微型物体快速穿过光电门所需的时间。本节所举例子也算是一种个人感觉逻辑分析仪较为怪异的用法。
当需要编写红外遥控驱动,适配新的红外遥控器时,就需要对红外信号进行解码。
- hs0038(38kHz)红外接收探头电路:
- 手工搭建一个红外测量电路,逻辑分析仪对红外探头供电3.3V,OUT信号输出连接通道1,GND连接逻辑分析仪GND。
- 只使能第一通道(笔者在软件首选项中换成黑夜模式了):
选择NEC解码,其他非NEC遥控器可以尝试其他解码:
选择解码通道:
使用下降沿捕获:
红外探头是38kHz的,这里设置采样频率500kHz也可以,采样数500k,采样时间约1秒:
点击Run,接着使用遥控器对着红外探头按下某个按键:
按下遥控器按键后,可以看到上位机捕获到一帧按键数据并正确解析,证明此遥控器为NEC协议的遥控器:
可以看到,已经解码出引导码、用户码、用户反码、数据码、数据反码。
这里用户码为0x00和0xBF,没有使用反码:
按下的按键是power按钮,对应键值就是0x00:
解码其他协议如SPI、UART等都是类似的,甚至温湿度传感器的单总线通信,RGB彩色LED单总线通信,都可以在这里解码,解码库也在随着软件升级而不断更新,支持的器件也越来越多,甚至可以DIY自己的解码库,总而言之,这个上位机解码能力是真的非常强大。