SaleaeLogic 16 逻辑分析仪的安装及使用【对 I2C、SPI、串口的信号进行测量】

文章内容

  1. 安装 SaleaeLogic 16 逻辑分析仪
  2. 用示波器和逻辑分析仪对 I2C、SPI、串口的信号进行测量,深入了解这些协议原理;并对照前两篇文章:【STM32 基于 I2C 通信协议的温湿度采集并串口显示】、【基于 SPI 协议用 0.96 寸 OLED 显示汉字及温湿度数据】,其中的代码进行分析。

1 安装 Saleae Logic 16 逻辑分析仪

1.1 下载安装包

点击下面链接,下载安装包。
SALEAELOGIC16_(逻辑分析仪软件与说明书-可安装最新版软件,但须先看旧版软件目录下中文指南中的串口分析案例):https://pan.baidu.com/s/1LXJIvDVQwKM71V82eapegw
提取码:luha

1.2 安装

  • 根据自己的电脑操作系统选择对应的版本安装。
  • 这里我用的操作系统是 win10 ,所以我安装了 Logic+Setup+1.1.34.exe 这个安装文件。
  • 之后一直回车,安装比较简单,这里不再啰嗦。
  • 安装完毕后,即可开启软件,显示出如下界面:
    在这里插入图片描述
    在安装软件的同时,驱动程序已经被注册到系统了了,当插入 SALEAE 16 逻辑分析仪后就可以自动安装安装驱动。

1.3 软件界面介绍

  • 打开界面如下图,软件界面基本是左中右的布局,左边主要是采集和显示设置,右边是分析和解析设置,中间是波形显示区域。
    在这里插入图片描述 无逻辑分析仪的时候显示 Disconnected,左边是8个通道,使用的时候根据硬件连接选择对应通过进行配置,中间部分是显示我们逻辑波形的区域,右边是添加一些协议数据格式,数据分析区域。

  • Start Simulation,可以在波形区域模拟显示出一些软件生成的数据,如果您设置了解析(解析设置方法在下面讲),可以根据所设置的协议,生成一些符合协议解析要求的模拟数值。

  • 由于默认的演示模式是 8 通道的,我们可以设置成 16 通道的。
    点击左上角的符号,之后弹出选择演示的设备:
    我们选择 LOGIC16 ,之后界面会出现一些 SALEAE16 的设置。
    在这里插入图片描述

  • 每个通道的设置
    第一项是波形幅值比例,可以通到进行修改不同的比例。
    在这里插入图片描述

  • 触发方式选择
    上升沿、下降沿、双边沿,主要跟协议信号有关系,比如串口接收数据,起始位是低电平,配置为下降沿触发就可以。
    在这里插入图片描述

  • Annotations 选项
    可以增加测量电平时间的组数,此处测量两组,类似示波器测量时间的标线。
    在这里插入图片描述

  • Analyzers 选项
    里面包含了很多协议,常用的串口、SPI、IIC、CAN 等等,都可以进行测量。
    在这里插入图片描述

这里就先简单介绍这么多,软件的详细使用介绍,可以在上面下载的安装包里新版本包的 SALEAE16最新软件的使用说明.pdf 里了解。
使用 Saleae Logic 16 逻辑分析仪对串口分析的案例可以在上面下载的安装包里老版本包的 上手指南——中文 里了解。

2 测量 I2C、SPI、串口的信号

2.1 I2C 数据解析并结合通信协议分析

2.1.1 I2C 数据解析

  • 选择信号观测
    Analyzers 选项里面包含了很多协议,常用的串口、SPI、IIC、CAN 等等,都可以进行测量。
    点击选择需要观测的 I2C 通道:
    在这里插入图片描述
  • 配置通道 0 是 SCL 信号,通道 1 是 SDA 信号
    在这里插入图片描述
  • 逻辑仪连接
逻辑分析仪 开发板
CH0 SCL(PB6)
CH1 SDA(PB7)
GND GND
  • 点击左上角 START ,采集数据后观测:
    在这里插入图片描述
  • 数据分析
    首先是开始信号,接下来是发送器件地址,接收到 ACK 信号,写器件地址,接收到从机 ACK 数据,发送要写入的数据,接收到从机 ACK 数据,停止信号,这就是一个完整的通讯周期。
    在这里插入图片描述

2.1.2 结合 I2C 通信协议分析

  • IIC 两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。
    I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。
    开始信号:SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。
    结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。
    应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号, CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
  • 单字节通讯流程为:
    1、发送起始信号
    2、发送设备地址,高位在前
    3、ACK 信号,该信号由从机发出,主机接收
    4、发送要操作的 eeprom 地址,即是要写数据到的地址
    5、发送要写入的数据
    6、接收从机应答信号
    7、发送 stop 信号,通信结束

对比之前的结果分析,可以发现与我们分析的一致。

2.2 串口数据解析并结合串口通信协议进行分析

2.2.1 串口数据解析

  • 选择信号观测
    Analyzers 选项里面,点击选择需要观测的输出:
    在这里插入图片描述

  • USART1 串口通道:
    在这里插入图片描述

  • 逻辑仪连接

逻辑分析仪 开发板
CH0 PA9(TXD)
GND GND
  • 点击左上角 START ,采集数据后观测:
    在这里插入图片描述
  • 数据解析
    USART1 串口输出时的具体数据如下图:
    在这里插入图片描述

2.2.2 结合串口通信协议分析

  • UART 使用的是异步串行通信。
    异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。

  • 串口通信协议数据传送时,每一个字符为 10 位1 个起始位,7 个数据位,1 个校验位,1 个结束位):
    起始位—先发出一个逻辑“ 0 ”信号,表示传输字符的开始;
    数据位—可以是 5~8 位逻辑“ 0 ”或“ 1 ”;
    校验位—数据位加上这一位后,使得“ 1 ”的位数应为偶数(偶校验)或奇数(奇校验);
    停止位—它是一个字符数据的结束标志。可以是 1 位、1.5 位、2 位的高电平;
    空闲位—处于逻辑“ 1 ”状态,表示当前线路上没有资料传送。
    从逻辑分析仪的波形可以看到,每一个字符为 10 位,有一个逻辑“ 0 ”的起始位,7 位数据位,1 为奇偶校验位,1 位高电平停止位,1 为处于逻辑“ 1 ”的空闲位。其中的数据位:1101000 即十六进制数 0x68。
    串口波形符合串口通信的数据传输格式。
    在这里插入图片描述

  • 串口通信协议数据传送速率用波特率来表示,即每秒钟传送的二进制位数。
    数据的波特率为 1s 传送的码元符号的个数。
    从逻辑分析仪的波形可以看到,实际传输一个比特时间为 8.75 us,而之前设置的波特率为 115200,即理论上传输一个比特时间为 1/115200=8.68 us,可见串口通信的实际传输速率与理论相近,只存在一点点误差,可能是设备问题造成的。
    在这里插入图片描述

3 总结

本篇文章先介绍了 Saleae Logic 16 逻辑分析仪的安装,再简单介绍了 Saleae Logic 16 逻辑分析仪的界面使用,做的比较简陋。并对 I2C 和串口通信做了主要分析。
文章有不足之处,敬请大家指教。

4 参考资料

  1. SALEAELOGIC16_(逻辑分析仪软件与说明书-可安装最新版软件,但须先看旧版软件目录下中文指南中的串口分析案例)
    链接:https://pan.baidu.com/s/1LXJIvDVQwKM71V82eapegw
    提取码:luha
  2. 逻辑分析仪的简单使用介绍(附带i2c、串口、spi数据分析)

版权声明:本文为CSDN博主「L -GRAZY」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_58892312/article/details/121411070

生成海报
点赞 0

L -GRAZY

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

趣聊51之串口通信(概念篇)

对于刚刚接触单片机的同学们来说,串口通信似乎是一个神秘感十足的东西,笔者在刚刚开始学习51单片机时,读的是郭天祥先生的那本著名的《新概念51单片机教程》,贼厚的一本书,但是等

ESP32 micropython 应用填坑(一):数据协议

前言 21国赛中的K210就用了这一套代码,当时在用micropython时发现它的串口只能发送字符串型的数字,但是实际上很不方便,就比如TI的MSP432系列,它的串口接收会把数据强制转