历史上的今天
返回首页

历史上的今天

今天是:2025年01月30日(星期四)

2020年01月30日 | 如何用示波器进行UART串口数据分析

2020-01-30 来源:elecfans

嵌入式里面说的串口,一般是指UART口, 但是我们经常搞不清楚它和COM口的区别, 以及RS232, TTL等关系, 实际上UART,COM指的物理接口形式(硬件), 而TTL、RS-232是指的电平标准(电信号)

UART的特征

一般uart控制器在嵌入式系统里面都做在cpu一起,像飞思卡尔的IMX6芯片就是这样,有多个uart控制器。

引脚介绍(COM口比较多pin,但是常用的也是这几个):

VCC:供电pin,一般是3.3v,在我们的板子上没有过电保护,这个pin一般不接更安全

GND:接地pin,有的时候rx接受数据有问题,就要接上这个pin,一般也可不接

RX:接收数据pin

TX:发送数据pin,我之前碰到串口只能收数据,不能发数据问题,经baidu,原来是设置了流控制,取消就可以了,适用于putty,SecureCRT

在调试的时候, 多数情况下我们只引出rx,tx即可。 比如调试gps模块, IC数据直接通过uart上报,我就直接用了两个线连出了rx,tx,连上串口转USB小板, 电脑从串口直接获取数据,这样跳过了开发板,测试了gps的数据有没有问题。

示波器调试UARE

一、串行数据的格式

异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1位,数据位可以是5、6、7、8位,停止位可以是1、1.5、2位。

起始位是一个值为0的位,所以对于正逻辑的TTL电平,起始位是一位时间的低电平;停止位是值为1的位,所以对于正逻辑的TTL电平,停止位是高电平。对于负逻辑(如RS-232电平)则相反。


例如,对于16进制数据55aaH,当采用8位数据位、1位停止位传输时。


二、根据波形图计算波特率

在示波器中的显示示意,其中灰色线是示波器的时间分度线,此时假设是200ms/格。

可以看了,第一个字节的10位(1位起始位,8位数据位和1位停止位)共占约1.05ms,这样可计算出其波特率约为:10bit / 1.05ms X 1000 ≈ 9600 bit/s

如果时间轴是100ms/格,同样可以计算出波特率应是19200bit/s。

当通讯不正常,又能观察到波形时,就可根据上述方法,从波形图计算一下波特率是否正确。


三、根据波形图判断RS-485收发数据的正确与否

RS-485是一种半双工的串行通讯方式,485电平芯片所以要正确接收和发送数据,必需保证控制信号和数据的同步,否则要么发送数据丢失,要么接收数据可能丢失。


发送控制信号的宽度基本与数据信号的宽度一致,所以能保证发送数据的正确和发送后及时转为接收。


由于控制信号关闭过早,则第二个字节的后两位将发送错误;在图6中,由于控制信号关闭过迟,使485芯片在发送数据后,不能及时转到接收状态,此时总线若有数据过来,则本单元将不能正确接收。

示波器分析UART串口数据

如何用示波器进行UART串口数据分析

这个是示波器一段的图 上面的数据(原文件)就是这段的

如何用示波器进行UART串口数据分析

Y的坐标单位是 电压值 V

X的单位是 时间 S 都是几十uS的 从这个可以分析出来 是多大波特率的

UART的格式 可以通过程序设置 有些会在停止位之前有一个奇偶校验之类的 停止位也不一定只是一个单位大小 可以设置为1、1.5、2等

中间的数据位长度也可以设置位 6 7 8 位等

还有数据的传输顺序 我这个是LSB先出的 所以可以看出

第一个数据 01010101 反过来就是10101010 =0xAA

第二个10101010 反过来01010101 0x55

第三个11001011 反过来 11010011 0xD3

第三个 11010000 反过来 00001011 0x0B


对着示波器 分析一遍之后 没错就是这样的 就是传的这些 也就是 数据和实际传输的信号 很好的对应上了


这个信号 是TXD 与 GND 之间的电压信号 此时 RXD与GND之间 一直为高电平电压值

这就是 UART : Universal Asynchronous Receiver/Transmitter,通用异步接收/发送 异步 没有时钟 接受端得有相应的采样时钟 否则会乱的


对于波特率的问题 这份数据有记录时间(具体精确的时间要看数据表) 好像记得在通信里面有码元这个概念 这里就是1bit 波特率=1/(1bit的时长) 这份数据1bit的时长≈8.6*10^(-6)s 也就是8.6us 1/8.6us =116279.06976744Hz 也就是115200的波特率了 因为那个8.6us的时间是估计的 而常用的波特率有这么些:看图片吧

如何用示波器进行UART串口数据分析

也就是1200 1800 2400 4800 7200 9600 14400 19200 38400 57600 115200 128000 还有一些


115200 原来以为速度还挺快的 用示波器看了之后 我再运行了一段代码 输出两个引脚信号 来看时间 发现当运行一段不短的代码之后串口才发完3、4个码元(不是byte哦) 天哪 算一算 如果发16byte的数据 总共16*10(1bit起始位+8bit数据位+1bit的结束位)=160个码元的时间 160*1/115200=0.0013888888888889 也就是1.38ms 有时候中断都不知道发生多少次了 肯定 这也是相对的

UART里面还有一个经常提到的 RS232 这是一种标准(协议 ) 就像说市电一样的 就知道是220V RS-232 就是把TTL(0~5V) 转换到10+V的电压 提要电压 可以增强抗干扰的能力 增加传输距离


一般用芯片来实现 MAX232 很典型 工作电压5V 输出有12V左右 和输出的负载有关吧 例如TTL的逻辑1 232对应的就是 负10几V 0对应的就是10+V 就是一个变换 变换后一般用9针的接口线 工程应用上就是这样的 用到3根线 2、3、5 收发地

推荐阅读

史海拾趣

Amaze Electronics Pte Ltd公司的发展小趣事

为了支撑公司的持续发展,Amaze Electronics高度重视人才培养。公司建立了完善的培训体系,为员工提供丰富的培训资源和学习机会。同时,公司还积极引进优秀人才,为研发团队注入新的活力。这些举措使得公司的研发团队不断壮大,为公司的技术创新和业务发展提供了有力保障。

Amphenol Aerospace公司的发展小趣事

为了支撑公司的持续发展,Amaze Electronics高度重视人才培养。公司建立了完善的培训体系,为员工提供丰富的培训资源和学习机会。同时,公司还积极引进优秀人才,为研发团队注入新的活力。这些举措使得公司的研发团队不断壮大,为公司的技术创新和业务发展提供了有力保障。

AUREL公司的发展小趣事

AUREL公司早期在电子行业中并不显眼,直到它成功研发出一款具有革命性的半导体芯片。这款芯片在功耗、性能和稳定性上都达到了前所未有的水平,立刻引起了市场的广泛关注。公司通过积极的市场推广和技术合作,逐渐打开了国内外市场,奠定了在电子行业中的技术领先地位。

Astro Tool Corp公司的发展小趣事

Astro Tool Corp公司深知产品质量是企业生存和发展的关键。因此,公司始终将质量管理放在首位,建立了完善的质量管理体系和检测机制。通过严格把控原材料采购、生产过程和成品检测等各个环节,公司确保了产品的稳定性和可靠性。同时,公司还注重品牌建设,通过提升产品附加值和服务质量,不断增强客户对公司的信任度和忠诚度。

艾谱科(Epticore)公司的发展小趣事

艾谱科公司始终将产品质量放在首位。公司建立了严格的质量管理体系,从原材料采购到生产制造的每一个环节都进行严格的质量控制。同时,艾谱科还注重售后服务,为客户提供全方位的技术支持和解决方案。这种对品质的执着追求,赢得了客户的信任和好评,也为公司的长期发展提供了有力保障。

DINTEK公司的发展小趣事

艾谱科公司始终将产品质量放在首位。公司建立了严格的质量管理体系,从原材料采购到生产制造的每一个环节都进行严格的质量控制。同时,艾谱科还注重售后服务,为客户提供全方位的技术支持和解决方案。这种对品质的执着追求,赢得了客户的信任和好评,也为公司的长期发展提供了有力保障。

问答坊 | AI 解惑

发个qtopia编程的要点

最近在做linux+qte 在arm平台上的界面显示,由于周围 几乎没有做 这块的,qt学习起来相当吃力, 这个是qtopia部分一些精华 要点 分析,看后很受启发…

查看全部问答>

DSP破解行业难题

在电子行业中,DSP高速运算适合做图像以及音频压缩以及编解码,但是不适合跑界面,ARM又弥补了这个空缺,因此,在现在的消费和行业用户中,利用DSP压缩以及传输audio以及图片,利用ARM跑界面相互配合是一个很大的方向,有朋友出来讨论下双核的ARM&d ...…

查看全部问答>

现在DSPC2000系列的开发板大概在多少钱一块啊

现在DSPC2000系列的开发板大概在多少钱一块啊,最好本身带USB接口的仿真器。…

查看全部问答>

windows CE 7部署虚拟机出现 TFTP超时

windows CE 7部署虚拟机出现  TFTP超时怎么办?…

查看全部问答>

2440BSP包中LCD驱动sources如何得来

大家好! 断断续续接触CE,今天有遇到一个问题 我用三星原来的BSP自己用PB有生成了一个新的BSP,为什么两个BSP下的LCD驱动中sources这个文件内容不一样呢 (不排除我修改过其他文件,我记不清了),我只是想知道他们为什么不一样了 比如 我自己新生成 ...…

查看全部问答>

PPC2003用的操作系统是ce5还是6啊?

想安装ce5,谁能给个能下的地址?…

查看全部问答>

数据丢失怎么办?

    相信做嵌入式开发的都知道数据的非易失性保存,通常就是Flash,但是通常会有数据的丢失,但是,我一直在考虑到底是什么导致了数据的丢失。在Flash的相关操作,主要是写和擦处,应该说读的时候造成数据丢失的概率要小些,而写和擦处的 ...…

查看全部问答>

请解惑:为何Upgrade没成功

正在学习USB的几个实验,其中的DFU遇到了困难。将DFU程序烧写到开发板,然后使用DFUSe Demonstration将STM32F10xUSBLibUSBLibdemosDevice_Firmware_Upgradeimages 中的joystickmouse.dfu去upgrade CPU,重启运行,正常。但问题 ...…

查看全部问答>

关于28035的SPI

SPI的初始化要做哪些工作?…

查看全部问答>