业余无线电测量:I2C总线信号分析



正如我在出版物中反复提到的那样,业余项目是由家庭预算供资的,业余无线电爱好者通常无力购买昂贵的测量设备。 我们必须满足于已有的东西。 或者可以利用“一段时间”这一事实。 有时由于绝望,业余无线电广播员不得不“用锯子钻,用小环锯子锯”。

最近,我感到有必要找出我正在I2C总线上开发的设备中实际传输的内容。 那是您可以负担得起“用锯锯锯”的快乐时刻。

您可以在此处找到如何使用I2C协议设备之间交换数据。 要分析I2C总线上的信号,可以同时使用带存储器的数字两通道示波器和逻辑分析仪。

带存储器的数字双通道示波器


使用电子设备时,示波器是最通用的工具。 现代数字示波器具有许多有用的特性,这些特性使得分析I2C总线信号成为可能。

在这种情况下,我得到了带有Rigol DS1102存储器的“一会儿”数字两通道示波器(制造商网站上的价格为461美元)。 该设备具有两个测量通道,带宽高达100 MHz,信号采样频率为1 GSa / s。

CH1连接到SCL信号。 CH2连接到SDA信号。 对于两个通道,均设置为1.00 V / div。 扫描范围-10 us / div 为了清楚起见,第一个通道的光束移动到屏幕的上半部分,第二个通道的光束移动到屏幕的下半部分。

在“触发”菜单中,将示波器设置为单次测量,触发在到达CH1通道的1.00 V电平的上升沿时触发:



打开被测设备后,按下红色的大“运行/停止”按钮。 示波器进入待机模式,然后启动。 几秒钟后,手动停止了录制。

逐个屏幕将获得的波形记录在外部介质屏幕上:



让我们分析记录的信号。 在第一个屏幕上,我们看到设备设置的显示以及SCL(上部)和SDA(屏幕下部)信号的波形图,从左至右依次读取:

  • START信号 :主机首先在SDA总线上设置低电平,然后在SCL总线上设置低电平;
  • 7位地址 :沿SCL的前端在SDA总线上读取0x60(1100000);
  • 记录模式的信号 :我们在SDA总线的SCL的下一个前沿读取低电平;
  • ACK信号 :传输完字节后,主设备通过SDA总线切换为接收,SDA设置为高电平,从设备在SCL的下降沿设置低电平(实际上是ACK信号),主设备在SCL的上升沿读取该电平;
  • STOP信号 :主机在SCL总线上然后在SDA总线上设置为高电平

同样,您可以缓慢但确实地手动解密其余记录。

数字信号逻辑分析仪


该协议可以使用逻辑分析仪和适当的软件以更简单的方法解密。

对于用作逻辑分析仪,我是由Saleae Logic 8的同事提供的(制造商网站上的价格为399美元)。 使用的软件是从官方网站获取的Saleae Logic 1.2.18演示。 在安装此软件时,我接受了以下条件的许可协议 ,其中包括,不得与第三方设备一起使用此软件。

该程序包括一个I2C协议分析器。 CH0被分配给SCL,CH1被分配给SDA。 信号采样率24 MSa / s。



启动已配置在CH0的“领先”前端。 选择了十六进制格式以显示数据。



打开被测设备后,按下绿色的大“开始”按钮,几秒钟后屏幕上出现一个图表:



我看到使用逻辑分析器的最大好处是程序本身会对接收到的数据进行解密。 解密结果逐行输入到“解码协议”窗口中。 当您在窗口中选择一条数据线时,程序将在图表上显示此数据的位置。

数字示波器与逻辑分析仪


为了比较这些选项,我在图形编辑器中“粘合”了示波器屏幕的四个屏幕截图和逻辑分析仪图的一部分:



开始用绿色圆圈表示,停止用红色圆圈表示。 该图首先检查总线上是否存在地址为0x60的设备,然后将0x80写入该设备的0xB7寄存器。

如果我们比较“带偏置”选项的比较,我们可以看到在逻辑分析仪图(采样频率为24 MSa / s)上,SCL信号存在“抖动”,因此在示波器上,采样频率为1 GSa / s的信号就不存在。 图片的其余部分相同,并且逻辑分析器还以自动模式正确解密了数据。

在示波器的情况下,在“干残渣”中选择“或”时,我们拥有一种昂贵的通用设备,它不像逻辑分析仪那样方便地分析总线,但价格却与之相当。 在这种情况下,作为“老派”的工程师,我个人将购买一台数字示波器。

但是,如果有带有许可协议的软件允许使用流行的逻辑分析仪的廉价克隆,例如Saleae Logic 8或DSLogic Plus ...

这样的软件存在


sigrok项目开源软件支持流行的逻辑分析仪的廉价克隆,而不仅仅是它们。

工作场所已收集:



然后开始“手鼓跳舞”。 在Windows 10上,仅启动了32位版本的PulseView。 她没有确定系统中是否存在廉价的中国克隆Saleae Logic(卖方网站上的价格为7美元)。

之后,在Zadig中为Logic设备安装了WinUSB驱动程序,并在重新扫描后在Zadig中将其定义为fx2latw设备:



之后,再次为Zadig中的fx2latw设备安装了WinUSB驱动程序,只有在PulseView看到列表中的Saleae Logic设备之后,该驱动程序才被安装。 设备已连接。

连接设备后,进行了以下程序设置(从工具栏的左到右,以“ Saleae Logic”题词开头):

  • 触发前捕获率= 2%通过使用按键和螺丝刀按下按钮来设置;
  • 按下带有红色探针的按钮可禁用额外的输入;
  • 设置10万个样本的记录量;
  • 将采样频率设置为24 MHz;
  • 按下带有黄绿色图标的按钮可以打开I2C协议分析器。

进一步在通道左侧的面板中:

  • 为通道分配与信号相对应的文本标签;
  • 触发条件分配给SDA信号的上升沿;
  • I2C信号被分配了相应的通道。

打开被测设备后,按下运行按钮。 结果已经很熟悉:



似乎“手鼓跳舞”是值得的!

UPD :在USB 逻辑设备的设备管理器中手动安装libusb-win32驱动程序后,PulseView程序开始稳定地确定Saleae Logic系统的存在,而无需操作Zadig。

简要结论:


本文介绍了使用带有存储器的数字示波器和带有应用程序软件包的逻辑分析仪来分析I2C总线信号的方法。

一种通用的信号分析方法是使用带有存储器的数字示波器,但又便宜又慢。

一种快速且经济的信号分析方法,但连接设备的任务并不轻松,是将廉价的逻辑分析仪克隆与PulseView结合使用。

如果我的出版物有助于节省读者的时间和金钱,我将感到很高兴。

在下一个出版物中,我将告诉您如何在没有频率计的情况下,在频率合成器中测量石英谐振器启动的频率。 但这是另一个故事...

Source: https://habr.com/ru/post/zh-CN438732/


All Articles