Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >树莓派基础实验38:逻辑分析仪分析PWM、UART信号

树莓派基础实验38:逻辑分析仪分析PWM、UART信号

作者头像
张国平
发布于 2020-09-27 02:45:48
发布于 2020-09-27 02:45:48
3.2K00
代码可运行
举报
运行总次数:0
代码可运行

一、介绍

  逻辑分析仪是专门针对数字信号的调试工具,可长时间采集,无波形死区,支持复杂触发定位以及全面的协议内容解析。

  逻辑分析仪的作用是利用便于观察的形式显示出数字系统的运行情况,对数字系统进行分析和故障判断。

  相对于示波器适合观察周期信号的电压变化及噪声,逻辑分析仪只采集高低电平,更擅长于分析数字通讯过程和复杂的协议解析。

  在树莓派基础实验35:USB TO TTL模块实验中学习了通过串口对树莓派进行控制台控制,让串口作为控制终端调试口即 serial console。

  在树莓派基础实验36:通用串口通信实验中学习了设置树莓派的串口为通用串口与PC电脑的串口调试工具进行通信。

  在树莓派基础实验37:pyserial模块通信实验中学习了Python的pyserial模块,通过串口与PC电脑的串口调试工具进行通信。

  本实验中学习树莓派中使用逻辑分析仪,对树莓派的PWM信号和UART信号进行分析。我们后面将会学到的航模无线电遥控系统中的接收机,在输出端也是输出PWM信号,控制舵机,每路通道一路PWM信号。而还有一种更节省物理接口数量的输出模式就是SBUS信号,它也是一种串口通信协议,是接收机的串行总线输出,通过这根总线,可以获得遥控器上所有通道的数据。

二、组件

★Raspberry Pi 3 B+主板*1

★树莓派电源*1

★USB TO TTL模块*1

★国产梦源DSLogic Plus逻辑分析仪*1

★面包板*1(可选)

★40P软排线*1

★跳线若干

三、实验原理

(一)逻辑分析仪

逻辑分析仪的工作过程就是数据采集、存储、触发、显示的过程,由于它采用数字存储技术,可将数据采集工作和显示工作分开进行(buffer模式),也可同时进行(stream模式),必要时,对存储的数据可以反复进行显示,以利于对问题的分析和研究。

逻辑分析仪是分析数字系统逻辑关系的仪器。逻辑分析仪是属于数据域测试仪器中的一种总线分析仪,即以总线(多线)概念为基础,同时对多条数据线上的数据流进行观察和测试的仪器,这种仪器对复杂的数字系统的测试和分析十分有效。逻辑分析仪是利用时钟从测试设备上采集和显示数字信号的仪器,最主要作用在于时序判定。由于逻辑分析仪不像示波器那样有许多电压等级,通常只显示两个电压(逻辑1和0),因此设定了参考电压后,逻辑分析仪将被测信号通过比较器进行判定,高于参考电压者为High,低于参考电压者为Low,在High与 Low之间形成数字波形

例如:一个待测信号使用200Hz采样率的逻辑分析仪,当参考电压设定为1.5V时,在测量时逻辑分析仪就会平均每5ms采取一个点,超过1.5V者为High(逻辑1),低于1.5V者为Low(逻辑0),而后的逻辑1和0可连接成一个简单波形,工程师便可在此连续波形中找出异常错误(bug)之处。整体而言,逻辑分析仪测量被测信号时,并不会显示出电压值,只是High跟Low的差别;如果要测量电压就一定需要使用示波器。除了电压值的显示不同外,逻辑分析仪与示波器的另一个差别在于通道数量。一般的示波器只有2个通道或4个通道,而逻辑分析仪可以拥有从16个通道、32个通道、64个通道和上百个通道数不等,因此逻辑分析仪具备同时进行多通道测试的优势。

大多数开发人员通过逻辑分析仪等测试工具的协议分析功能可以很轻松的发现错误、调试硬件、加快开发进度,为高速度、高质量完成工程提供保障。

协议解码是协议分析的基础,只有解码正确的协议分析才能够被别人接受,只有正确的解码才能提供更多的错误信息。

协议触发能够充分利用有限的触发深度和存储空间,同时提供更多更可靠的触发,为快速发现和定位错误提供了一种高效的工具。

错误识别是逻辑分析仪的主要作用,它建立在协议解码和协议触发之上的,只有协议触发功能强大才能采集到错误,只有协议解码正确才能发现错误。

信息提示能够充分利用颜色与视图等资源,有效表达协议解码的结果,使得用户能够快速找到需要的信息。当然信息提示也能够合理调节处理资源,节省用户时间。

国产DSLogic Plus的官网可以查阅:

https://dreamsourcelab.cn/product/dslogic-series/

国产DSLogic Plus

(二)PWM信号

PWM(Pulse width modulation),脉冲宽度调制,是一种模拟控制方式,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

在前面的实验中多次用到,最简单的树莓派基础实验1:双色LED灯实验,控制LED灯的亮度;复杂点的树莓派基础实验34:L298N模块驱动直流电机实验,控制电动机的转速。

PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。

对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。

而树莓派的PWM信号是不怎么标准和稳定的,下面的实验中我们将实际分析一下。

(三)UART信号

在前面的课程中有详细学习,这里不再介绍:

树莓派基础实验35:USB TO TTL模块实验中学习了通过串口对树莓派进行控制台控制,让串口作为控制终端调试口即 serial console。

  在树莓派基础实验36:通用串口通信实验中学习了设置树莓派的串口为通用串口与PC电脑的串口调试工具进行通信。

  在树莓派基础实验37:pyserial模块通信实验中学习了Python的pyserial模块,通过串口与PC电脑的串口调试工具进行通信。

四、实验步骤

(一) 分析树莓派PWM信号
  1. 通过USB 数据线,将逻辑分析仪连接至PC 的USB 端口,并确认硬件指示灯被点亮。
  2. 打开DSView 软件(windows 系统首次使用时系统需要搜索驱动程序,请耐心等待),确认硬件指示灯变为绿色,同时DSView 正确识别设备,并在设备列表框显示正确的设备名称。
  1. 连接排线至逻辑分析仪的采样端口,下图显示了排线和通道的对应关系。对于增强版设备,每个通道为屏蔽线,末端分为信号和地两个端口;对于基础版设备,每4 个通道配一个地线(黑色),彩色线顺序对应0-15 这16 个通道。除此之外,排线还有CK,TI 和TO 信号,一般情况都不需要连接。其中CK 通道为状态采样的时钟输入,可以把外部时钟作为采样时钟,TI 为外部触发信号的输入,TO 为触发信号的输出,会在采样过程中触发条件满足时输出脉冲。

DSlogic逻辑分析仪排线和通道的对应关系

  1. 根据测量需求,连接通道至被测信号。对于低频信号(<5MHz),可以仅连接被测信号和一个公共地信号,本实验仅将通道0的地线与树莓派的GND相连。对于高频信号,建议每个通道单独接地,以获得最佳的信号完整性。

树莓派(name)

T型转接板(BCM)

DSlogic逻辑分析仪

GPIO1

G18

Channel 0(SIG)

GPIO24

G19

Channel 1(SIG)

GPIO28

G20

Channel 2(SIG)

GPIO29

G21

Channel 3(SIG)

GPIO3

G22

Channel 4(SIG)

GPIO4

G23

Channel 5(SIG)

GND

GND

Channel 0(GND)

下图中的左端的Type-C接口连接到笔记本电脑USB上哈,为方便拍照就没拍电脑。连线很简单,电路图就没画了。

逻辑分析仪接线图

  1. 编写树莓派的PWM信号输出程序。每个通道的PWM信号频率依次增大,查看实际的信号质量如何。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT) 
GPIO.setup(19, GPIO.OUT)
GPIO.setup(20, GPIO.OUT)
GPIO.setup(21, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)

p_0 = GPIO.PWM(18, 50) # 0通道,50HZ,占空比30%
p_0.start(30)

p_1 = GPIO.PWM(19, 100)
p_1.start(30)

p_2 = GPIO.PWM(20, 200)
p_2.start(30)

p_3 = GPIO.PWM(21, 500)
p_3.start(30)

p_4 = GPIO.PWM(22, 1000)
p_4.start(30)

p_5 = GPIO.PWM(23, 10000)
p_5.start(30)

def loop():
    while True:
        pass

def destroy():
    p_0.stop()
    p_1.stop()
    p_2.stop()
    p_3.stop()
    p_4.stop()
    p_5.stop()
    GPIO.cleanup()
    
if __name__ == "__main__":
    try:
        
        loop()
    except KeyboardInterrupt:
        destroy()
  1. 树莓派上运行Python程序,设置好逻辑分析仪的参数。在选项里主要设置Stream模式,阈值电压由于我们的信号高电平是3.3V,这里设置为1V即可。

采集时间为1s,采集频率为50MHZ(通常情况下,采样频率需要设置为被测信号最高的4x -10x倍),点击开始按钮:

得到所有通道的模型图,从中可以简单看出,越靠下的高频率通道,波形越不稳定,0通道的50HZ频率是最标准和稳定的。

  1. 分析得到的具体PWM信号。 0通道,50HZ:

pwm50HZ

1通道,100HZ:

pwm100HZ

2通道,200HZ:

pwm200HZ

3通道,500HZ:

pwm500HZ

4通道,1000HZ:

pwm1000HZ

5通道,10000HZ:

pwm10000HZ

要求的PWM信号频率

测量到的频率

要求的占空比

测量到的占空比

50HZ

49.7HZ

30

30.1

100HZ

99.2HZ

30

30.3

200HZ

197.4HZ

30

30.2

500HZ

484.1HZ

30

29.6

1000HZ

893.2HZ

30

31.9

10000HZ

4580HZ

30

40.9

综上,随着频率的上升,其稳定性会逐渐降低,这就意味着这个树莓派PWM功能无法适用于音频,但是对于控制LED亮度或电机转速来说已经足够了。

(二) 分析树莓派UART信号
  1. 连接电路。与树莓派基础实验36:通用串口通信实验一样设置树莓派的串口为通用串口,通过 USB TO TTL模块与PC上的串口调试工具通信。

T型转接板(BCM)

USB TO TTL模块

DSlogic逻辑分析仪

RXI

TXD

Channel 0(SIG)

TXO

RXD

Channel 1(SIG)

GND

GND

Channel 0(GND)

分析树莓派UART信号接线图

  1. 我们要检测到特定信号,就需要设定触发条件。如果被测信号的波形不满足设定条件,采样过程会一直等待,直到满足设定条件后,才可完成当前采样。触发可以帮助我们捕获想要观察的特定时刻信号, 是逻辑分析仪最重要的特性之一。我们这里设置任意边沿为触发条件。
  2. 树莓派上运行向串口发送简单数据的程序。PC串口调试工具上将收到字符串“Hello”。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import serial

ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=0.5)
ser.write('Hello'.encode("gbk"))
  1. 为信号添加解码器,这里使用的是UART协议,波特率为9600,数据位8,Data format为ascii。

解码器设置

  1. PC串口调试工具接收到信号“Hello”的同时,逻辑分析仪也接收到了信号。

hello信号

  1. 运行下面的Python代码,PC串口调试工具向树莓派发送数字“0123456789”,树莓派然后又发回PC串口调试工具。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
import serial
from time import sleep
 
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=0.5) 
 
print ser.port
print ser.baudrate
 
def recv(serial):  
  while True:  
    data =serial.read(20)  #手动设置读取字符的数量为20
    if data == '':  
      continue
    else:
      break
    sleep(0.02) 
  return data 
 
while True:  
  data =recv(ser) 
  if data != '': 
    print data
    ser.write(data)

0号通道先接收到信号,然后1号通道接收到同样的数字“0123456789”信号。

0号通道信号

1号通道信号

从中可以看出每1位数据,高电平为1,低电平为0,且时长为104.18us,每8位数据的开始信号(S)为1位低电平,结束信号(T)为1位高电平。

每1位的情况

有了逻辑分析仪,分析信号时序就太方便了,将虚无的信号想象,变成看得见的图像,非常利于学习,而且国货越来越强大了!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
树莓派基础实验39:解析无线电接收机PWM、SBUS信号
  虽然如今或者将来,5G网络的建设带来人工智能和工业自动化的全面升级,生产活动中劳动力的需求大大减少,大量的劳动力将向内容生产行业和服务行业转移。教育、医疗、娱乐、公共管理等诸多领域,乃至整个社会都将迎来巨大变革。可参阅我的一篇读书笔记5G社会:万物互联新时代。
张国平
2020/09/27
5.4K0
树莓派综合项目2:智能小车(三)无线电遥控
《智能小车(一)四轮驱动》中,实现了代码输入对四个电机的简单控制。《智能小车(二)tkinter图形界面控制》中,实现了本地图形界面控制小车的前进后退、转向和原地转圈。
张国平
2020/11/04
2K1
树莓派综合项目2:智能小车(三)无线电遥控
树莓派基础实验37:pyserial模块通信实验
  串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口是计算机上一种非常通用的设备通信协议,pyserial模块封装了python对串口的访问,为多平台的使用提供了统一的接口。
张国平
2020/09/27
3.2K0
Python+树莓派制作IoT(物联网)门控设备
因为考虑需要在户外使用这套物联网门控设备,所以利用树莓派完成这个设备有两个问题需要解决, 第一是需要解决树莓派和相关模块的供电问题。 第二就是需要户外没有宽带网络情况下的信号传输问题。 只要解决这两个问题那么剩下来的问题就是编程方面的了,针对以上两个问题,这里我们采用比较大众化的方式解决,设备的供电问题我们使用太阳能配合蓄电池进行实现7X24小时供电,信号的传输问题我们使用一块叫做SIM868的通讯模块来实现。下面来介绍一下设备制作的材料准备、制作过程以及程序的编写和调试。
緣來
2020/01/02
3.4K0
Python+树莓派制作IoT(物联网)门控设备
树莓派基础实验22:红外遥控传感器实验
   红外接收头的主要功能为IC化的一种受光元件,其内部是将光电二极管(俗称接收管)和集成IC共同组合封装而成,其IC设计主要以类比式控制,一般主要接收38KHZ的频率的红外线,而对其他频率段的红外信号不敏感。这样,遥控器发出载波在38KHZ的频率,接收管接受遥控器发送过来的信息,从而构成通讯。
张国平
2020/09/27
2.5K0
树莓派基础实验2:RGB-LED实验
   RGB LED模块可以发出各种颜色的光。红色,绿色和蓝色的三个LED被封装到透明或半透明塑料外壳中,并带有四个引脚。红色,绿色和蓝色三原色可以按照亮度混合并组合各种颜色,因此可以通过控制电路使RGB LED发出彩色光。
张国平
2020/09/28
3K0
树莓派基础实验2:RGB-LED实验
树莓派基础实验36:通用串口通信实验
  对于树莓派 3B+来说,他的UART功能有三种: 1、内部蓝牙使用; 2、控制终端使用; 3、与其他设备进行串口通信。
张国平
2020/09/27
4.5K0
树莓派基础实验9:蜂鸣器实验
   蜂鸣器是音频信号装置,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器直接接上额定电源就可以连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能周期性地振动发声。
张国平
2020/09/27
4K0
树莓派基础实验1:双色LED灯实验
   双色发光二极管(LED)能够发出红色和绿色,两种不同颜色的光。正电压指向LED端子之一,使LED发出相应的颜色的光,一次只能有一个引脚接受电压,常用着各种设备的指示灯。
张国平
2020/09/28
3.9K0
树莓派基础实验1:双色LED灯实验
树莓派基础实验34:L298N模块驱动直流电机实验
  直流电机是一种将直流电能转换为机械能的电动机,因其良好的调速性能而在电力拖动中得到广泛应用,用于驱动各种设备,如电风扇、遥控小车、电动车窗等,也非常适合作为机器人的行走机构。
张国平
2020/09/27
4K0
树莓派综合项目2:智能小车(一)四轮驱动
树莓派的小项目中,我首选了智能小车这个项目作为我探索的第一个目标,因为和很多小朋友一样,对遥控小汽车有种喜欢,特别是有过小时候欲求而不得的经历的大人们哈。
张国平
2020/09/27
3.7K0
树莓派综合项目2:智能小车(一)四轮驱动
树莓派综合项目1:智能温度测量系统实验
  我们可以在编程时通过操纵杆PS2调整下限和上限值。操纵杆PS2有五个操作方向:向上、向下、向左、向右和向下按压。在这个项目中,我们将使用左右方向来控制上限值,上下方向来控制下限值。如果按一下操纵杆,系统将退出。
张国平
2020/09/27
1.4K1
STM32和树莓派串口透传
1、树莓派UART端口的位置:TXD位于HEAD-8;RXD位于HEAD-10;GND位于HEAD-6(可选其他GND)。
不脱发的程序猿
2021/01/20
2.2K0
树莓派基础实验7:倾斜开关实验
  在倾斜开关中球以不同的倾斜角度移动,以制造触发电路。倾斜开关模块使用双向传导的球形倾斜开关。当它向一侧倾斜时,只要倾斜度和力满足条件开关就会通电,从而输出低电平信号。
张国平
2020/09/27
1.4K0
树莓派基础实验16:霍尔传感器实验
   霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。
张国平
2020/09/27
1.6K0
树莓派基础实验8:振动开关实验
   振动开关也称为弹簧开关或振动传感器,是一种电子开关。它会产生振动力,并将结果传送给电路装置,从而触发其工作。它包含以下部分:导电振动弹簧,开关主体,触发销和包装壳。
张国平
2020/09/27
2K0
树莓派基础实验23:触摸开关传感器实验
   金属触摸传感器是一种仅在,被带电体触摸时,才操作的开关。它有一个接受电子信号时通电的,高频晶体管。
张国平
2020/09/27
1.7K0
打造机器人:为遥控小车加一个树莓派
2. 你已经对树莓派已有了相当的了解,并已 SD卡上烧制了 Raspbian/Wheezy系统
博文视点Broadview
2020/06/12
1.7K0
打造机器人:为遥控小车加一个树莓派
树莓派基础实验4:继电器实验
   继电器是一种用于响应施加的输入信号,而在两个或多个点或设备之间提供连接的设备。换句话说,继电器提供了控制器和设备之间的隔离,因为我们知道设备可以在AC和DC上工作,但是他们从微控制器接收信号,因此,我们需要一个继电器来弥补差距。当需要用小电信号控制大量电流或电压时,继电器非常有用。
张国平
2020/09/28
3.1K0
树莓派基础实验4:继电器实验
树莓派基础实验10:干簧管传感器实验
   磁簧开关(Reed Switch)也称之为干簧管,它是一个通过所施加的磁场操作的电开关。基本型式是将两片磁簧片密封在玻璃管内,两片虽重叠,但中间间隔有一小空隙。当外来磁场时将使两片磁簧片接触,进而导通。 一旦磁体被拉到远离开关,磁簧开关将返回到其原来的位置。可以用来计数或限制位置。
张国平
2020/09/27
1.5K0
推荐阅读
相关推荐
树莓派基础实验39:解析无线电接收机PWM、SBUS信号
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档