DSLogic 逻辑分析仪的使用,协议分析GD32串口为例

一、官网

  逻辑分析仪是专门针对数字信号的调试工具,可长时间采集,无波形死区,支持复杂触发定位以及全面的协议内容解析。逻辑分析仪只采集高低电平,更擅长于分析数字通讯过程和复杂的协议解析。
  示波器适合观察周期信号的电压变化及噪声。
  DSLogic是一款基于USB的逻辑分析仪,支持最大采样率高达1GHz,stream模式下最大采样深度16G。CNC一体成型铝金属外壳,精致外观,同时屏蔽噪声干扰。配合屏蔽飞线使用,可以采集高达250MHz的数字信号。

网址:
https://dreamsourcelab.cn/
https://dreamsourcelab.cn/product/dslogic-series/
在这里插入图片描述

在这里插入图片描述
官方知识学堂
https://dreamsourcelab.cn/learn/
在这里插入图片描述
在这里插入图片描述

二、介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

DSLogic通过以下整体设计保证高频性能
在这里插入图片描述
在这里插入图片描述
支持开源协议库的近百种协议,支持协议解析内容导出文本文件,支持特定协议内容搜索。
基础协议
I²C, UART, SPI, CAN, I²S, JTAG, 1-Wire link layer, DMX512, PWM, Parallel, SWD, USB PD, USB signalling, SWIM, SD card (SD mode), PS/2, MDIO, Stepper motor, Timing, Z80, AC ’97, Counter, IR NEC, IR RC-5, AM230x, AUD, AVR PDI, CEC, DALI, DCF77, DSI, EM4100, EM4305, GPIB, Gray code, Guess bitrate, Jitter, LPC, Maple bus, MCS-48, Microwire, Miller, Morse, OOK, Qi, RC encode, RGB LED (WS281x), SDA2506, S/PDIF, ST7735, T55xx, TI TLC5620, Wiegand…

高层协议
LIN, 24xx EEPROM, 93xx EEPROM, USB request, USB packet, 1-Wire network layer, AVR ISP, nRF24L01(+), RGB LED (SPI), SD card (SPI mode), SPI flash/EEPROM, Modbus, MIDI, I²C demux, I²C filter, ARM ETMv3, ARM ITM, ARM TPIU, ATSHA204A, DS1307, EDID, LM75, MLX90614, MXC6225XU, Nunchuk, RTC-8564, TI TCA6408A, XFP, JTAG / EJTAG, JTAG / STM32, CFP, DS243x, DS28EA00, Oregon, OOK visualisation, ADE77xx, ADF435x, ADNS-5020, MAX7219, MRF24J40, RFM12, SSI32, PAN1321…

三、使用和分析 UART 协议

DSView 软件下载地址:
https://dreamsourcelab.cn/download/
在这里插入图片描述

安装,并打开,如下:
在这里插入图片描述

3.1 UART通讯协议

由于UART协议层的输入是逻辑0/1信号,而逻辑0/1信号在物理层可以通过不同的电平标准来区分。针对不同的通讯需求,便可以使用不同的物理层实现。例如简单的板内通讯,或者常见的设备调试场景,使用简单的LVTTL/TTL电平即可在两个设备间进行UART协议通。
在这里插入图片描述
TTL的UART通讯:当没有数据传输时,UART信号会一直保持在高电平(具体信号幅度由I/O的供电电压决定),数据传输时信号发生跳变,传输完成后信号重新回到空闲的高电平状态。
在这里插入图片描述
RS232的UART通讯:RS232波形在空闲时为负电压,当有数据传输时,信号开始在正负电压之间跳变,传输完成后重新回到空闲的负电压状态。
在这里插入图片描述
RS485的UART通讯:A/B端的波形为互补关系。A端波形为正向逻辑(空闲时为正电压),B端波形为反向逻辑(空闲时为负电压)
在这里插入图片描述
UART帧结构:
在这里插入图片描述
当两个设备需要通过UART协议进行通讯时,它们需要同时约定好以下内容:
1.每一位信号的时间长度T(波特率 = 1/T)
2.帧结构中每一项的具体位数
3.是否有校验位,以及校验位的机制(奇/偶/…)

字符‘D‘的波形为例:
在这里插入图片描述

波特率:波特率是UART协议,或者说所有异步串行协议,非常重要的一个概念,即单位时间内(1秒)可表示的bit位个数,或者也可以表述为bit位宽的倒数例如一个波特率为115200的UART波形表示1秒可容纳115200个bit位,也就是说每一位bit数据占大约8.68uS的时长
在这里插入图片描述
UART等异步串行协议,为了简化信号物理连接,降低通讯成本,一般只有一根信号线,无法同时传输数据和时钟信号。收/发设备为了正确解析波形就需要在相同的波特率设置下。而相同的波形使用不同的波特率获取的信息可能会完全不同。对于接收设备来讲,只有起始位可以作为一帧数据的同步点,其它数据都是通过波特率来确定具体的取样位置。

还是以字符‘D’的波形为例:
在这里插入图片描述
空闲位: 设备之间不传输数据时以持续的高电平表示空闲。空闲位持续时间越长,两个数据帧间隔也越长,单位时间传输的数据就越少。
在这里插入图片描述
起始位UART接收端会一直检测信号线上的电平变化,开始传输数据时,发送端将信号线从高电平拉到低电平结束空闲状态,并保持一个bit位的时长。接收器检测到高低电平转换时,开始接收信号
在这里插入图片描述
数据位:数据位包含传输的实际数据,如果使用了奇偶校验,那么数据位长为5 ~ 8 bits,如果没有使用奇偶校验,则位长为5 ~ 9 bits。在一般情况下,数据位为 8 bits,数据首先从最低有效位开始发送,高位在后。
在这里插入图片描述
校验位:校验位可以用来提高传输的可靠性。如果信号在传输过程中因为干扰而导致某些位置的电平产生错误,通过计算接收的数据和校验位是否匹配即可判断数据是否有传输错误,从而给应用层提供有效信息来决定接受/丢弃对应的数据。
在这里插入图片描述
停止位:停止位表示一帧数据的结束,实际信号是一段时间的高电平。停止位的时间长短可以设置为1、1.5或者2bits的停止位。大部分情况使用1bit的停止位。
因为UART是一个异步协议,每一帧的开头可以用跳变沿来同步,但是停止位只能通过波特率来计算相对位置,如果在停止位的位置识别到一个低电平,则会产生帧错误。在通讯过程中,为了减少波特率的误差导致的问题,可以设置不同的停止位长度来适配。
在这里插入图片描述

3.2 连接方式

TTL电平的UART信号,除了连接参考地之外,只需要连接需要测试的信号(TX或者RX)分别接入逻辑分析仪对应的通道输入即可。
在这里插入图片描述 对于RS232总线信号,我们既可以直接测量电平转换之后的总线信号(DSLogic在排线输入端的耐压范围为±30V,RS232的±15V的信号范围可以直接接入),也可以测量电平转换之前的内部数字信号。其接线的方式和TTL信号一致,唯一需要注意的是RS232信号对电平进行了翻转(空闲时为负电压,即低电平)在进行UART协议解码时,我们可以在DSView的解码设置窗口进行对应的信号电平翻转(Invert Signal选项设置为yes)
在这里插入图片描述
RS485总线使用的是差分信号,当我们用逻辑分析仪进行信号采集时,需要特别注意被测信号的连接方式。首先,逻辑分析仪的参考地需要连接到对应的被测设备RS485收发器的参考地,这样才可以保证逻辑分析仪有正确的电平参考平面;其次,对于差分信号,逻辑分析仪只需要采集到与内部信号同极性的高低电平即可从数字信号的角度来讲,差分的方式只是提高信号传输的可靠性,不增加额外的信息量。使用逻辑分析仪测试485总线信号时,连接对应设备收发器的参考地,以及差分总线上的的A+信号即可
当然,如果只能采集到B-信号,我们也可以在DSView进行解码时,设置UART解码器进行信号翻转的方式来得到正确的协议解析结果
在这里插入图片描述

3.3 阈值设置

逻辑分析仪的阈值为高低电平的判决电压,也就是说当输入信号电压高于阈值电压时,采集到的便是高电平;当输入信号电压低于阈值电压时,采集到的便是低电平。
针对UART协议,我们之前已经介绍了其有不同的物理层实现,不同的物理层实现有不同的电平标准。我们只需要选择一个对应的阈值可以区分不同情况下的高低电平即可。
在这里插入图片描述
在某些情况下,因为配置或者调试的需要,RS485总线的差分信号幅度可能在比较大的范围变动。因为RS485的规范规定只要A-B之间的差分电压大于200mV既可以认为是高电平。此时我们可以借助璞石示波器,观察实际的信号电平幅度,再来决定合适的阈值设置。只需要确保设置的阈值电压可以合理的分辨出高低电平即可。

3.4 软件使用

采集时长和采样率:
在这里插入图片描述
模式和开始:
在这里插入图片描述
测量:
在这里插入图片描述
解码:
在这里插入图片描述
搜索:
在这里插入图片描述
数据类型:
在这里插入图片描述

触发设置:
在这里插入图片描述

四、实际使用-GD32串口误码分析

波特率 9600 一会正常,一会不能正常通讯:
在这里插入图片描述
在这里插入图片描述

波特率为 9600 的图像,标准下一个bit时间是104.17us (1s/9600约等于104.17us),会发现这个起始位低电平只有94 us,根据文章 《GD32F450的USART接收数据错误问题》 博主问FAE可知道,GD32是连续采集16个点全为0,作为起始位。如果是这样,当16倍过采样,采样间隔是 104.17us/16 = 6.51us 。而 104.17us-94us>6.51,(采样15 次的时间6.51 * 15 = 97.65 > 94 )因此这16个采样至少有一次是不正常的,因此起始位数据就会识别错误,导致通讯失败。

波特率 2400 正常通讯:
在这里插入图片描述
在这里插入图片描述

波特率为2400的图像,标准下一个bit时间是416.67us (1s/2400约等于416.67us),起始位低电平为 407us,GD32是连续采集16个点全为0,作为起始位。如果是这样,当16倍过采样,采样间隔是 416.67us/16 = 26.04us 。而 416.67us-407us < 26.04 us .(采样15 次的时间26.04 * 15 = 390.6 < 407)因此起始位数据可以正常识别,正常通讯。

GD32串口误码解决方法,详见公众号文章!

参考:
https://blog.csdn.net/Zhichao_Zhang/article/details/128046411

  • 24
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值