【干货】示波器扒串口数据

描述

原文来自:24c01硬件电子

有时候没有逻辑分析仪,恰恰示波器也没买串口解析的功能,那么如何扒串口数据呢?(以下文章也适用于RS485,因为基本差不多)

首先介绍一下串口数据帧的组成:起始位1bit(低电平),数据位8bit,奇偶校验位(一般不加),停止位1bit(高电平)。

所以我选择的数据帧格式为: 1bit起始位+8bit数据位+1bit停止位(大多数都是这样)  首先看一个示波器抓取的串口波形,如下图:

串口

首先看第一位低电平,是起始位,通过读格子,大概可以看出是100us一个bit位,那么反推回去1s/100us≈9600波特率(实际上我设置的也就是9600波特率),9600波特率下的1bit时间为1/9600≈104us。 所以按照串口数据帧的格式,可以将数据大概扒出来,如下图:

串口

然后串口数据格式一般是LSB,即低位在前高位在后,所以去掉起始位和停止位后,这两帧数据分别为: 0011 0101 和 0111 0100 然后再根据8421BCD码的编码方式,反推回去就是: 2+1 4+1 和 4+2+1 4 即数据是35 74 那么这也正和我用串口发送给示波器的一样:

串口

那么奇校验和偶校验是什么意思呢?1、奇校验数据帧格式为:1bit起始位+8bit数据位+1bit奇偶校验位+1bit停止位数据位和奇偶校验位内的1的总数为奇数比如数据位为 0011 0101 (35)总共有4个1,那么奇偶校验位就应该为1,这样才可以保证总共1的个数为奇数。 比如数据位为 0111 0101(75)总共有5个1,那么奇偶校验位就应该为0,这样才可以保证总共1的个数为奇数。2、偶校验数据帧格式为:1bit起始位+8bit数据位+1bit奇偶校验位+1bit停止位数据位和奇偶校验位内的总共1的总数为偶数那么,这次不发送3574了,我使用串口发送3575,然后调到奇校验:

串口

然后抓取示波器波形,可以看到和之前举的例子一样,第一帧8bit的数据位里有4个1,为了保证有奇数个1,所以校验位为1,这样8bit数据位+1bit校验位的1的总数就为5,是奇数了;第二帧数据里8bit数据里有5个1,所以校验位为0,也是保证最后有奇数个1:(偶校验类似,不在举例)

串口

感谢您的耐心观看,希望对您的学习有所帮助。  原文来自:24c01硬件电子

如果看到这里,请点赞、收藏、分享三连!

限时免费扫码进群,交流更多行业技术

串口

审核编辑 黄宇

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分