百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

树莓派遇见逻辑分析仪,看看树莓派PWM信号和UART信号

toyiye 2024-09-03 22:37 4 浏览 0 评论

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

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

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

??本实验中学习树莓派中使用逻辑分析仪,对树莓派的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 正确识别设备,并在设备列表框显示正确的设备名称。

3) 连接排线至逻辑分析仪的采样端口,下图显示了排线和通道的对应关系。对于增强版设备,每个通道为屏蔽线,末端分为信号和地两个端口;对于基础版设备,每4 个通道配一个地线(黑色),彩色线顺序对应0-15 这16 个通道。除此之外,排线还有CK,TI 和TO 信号,一般情况都不需要连接。其中CK 通道为状态采样的时钟输入,可以把外部时钟作为采样时钟,TI 为外部触发信号的输入,TO 为触发信号的输出,会在采样过程中触发条件满足时输出脉冲。


4) 根据测量需求,连接通道至被测信号。对于低频信号(<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上哈,为方便拍照就没拍电脑。连线很简单,电路图就没画了。

5) 编写树莓派的PWM信号输出程序。每个通道的PWM信号频率依次增大,查看实际的信号质量如何。

#!/usr/bin/env pythonimport RPi.GPIO as GPIOimport timeGPIO.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:        passdef 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()

6) 树莓派上运行Python程序,设置好逻辑分析仪的参数。在选项里主要设置Stream模式,阈值电压由于我们的信号高电平是3.3V,这里设置为1V即可。

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

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

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

1通道,100HZ:

2通道,200HZ:

3通道,500HZ:

4通道,1000HZ:

5通道,10000HZ:

要求的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)

2) 我们要检测到特定信号,就需要设定触发条件。如果被测信号的波形不满足设定条件,采样过程会一直等待,直到满足设定条件后,才可完成当前采样。触发可以帮助我们捕获想要观察的特定时刻信号, 是逻辑分析仪最重要的特性之一。我们这里设置任意边沿为触发条件。

3) 树莓派上运行向串口发送简单数据的程序。PC串口调试工具上将收到字符串“Hello”。

import serialser = serial.Serial('/dev/ttyAMA0', 9600, timeout=0.5)ser.write('Hello'.encode("gbk"))

4) 为信号添加解码器,这里使用的是UART协议,波特率为9600,数据位8,Data format为ascii。

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

6) 运行下面的Python代码,PC串口调试工具向树莓派发送数字“0123456789”,树莓派然后又发回PC串口调试工具。

#!/usr/bin/pythonimport serialfrom time import sleepser = serial.Serial('/dev/ttyAMA0', 9600, timeout=0.5) print ser.portprint ser.baudratedef 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”信号。

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

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

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码