首页/文章/ 详情

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

10月前浏览6305

原文来自: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硬件电子


来源:工程师看海
电源电子更多行业
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-01-20
最近编辑:10月前
工程师看海
硕士 签名征集中
获赞 131粉丝 40文章 251课程 2
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈