原文来自: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硬件电子
如果看到这里,请点赞、收藏、分享三连!
限时免费扫码进群,交流更多行业技术
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !