首页 基于未知上位机串行通信波特率检测

基于未知上位机串行通信波特率检测

举报
开通vip

基于未知上位机串行通信波特率检测基于未知上位机串行通信波特率检测 2010-09-14 18:45:55 随着计算机应用的日益普及,与计算机进行信息交互的终端也越来越多,其中串行通信是终端与计算机之间的主要通信方式。通常情况下,接收方必须知道发送方的发送速率,帧结构,并采用相同的速率及帧结构进行接收,才能保证接收到正确的信息。帧结构信息包括起始位、停止位、数据位的个数,及是否有校验位,若有,是以何种形式校验,这样才能在接收到正确信息的基础上进行校验,并把起始位、停止位、校验位剔除掉,将有用信息识别出来。在不知道发送速率的情况下,下位机无法采用...

基于未知上位机串行通信波特率检测
基于未知上位机串行通信波特率检测 2010-09-14 18:45:55 随着计算机应用的日益普及,与计算机进行信息交互的终端也越来越多,其中串行通信是终端与计算机之间的主要通信方式。通常情况下,接收方必须知道发送方的发送速率,帧结构,并采用相同的速率及帧结构进行接收,才能保证接收到正确的信息。帧结构信息包括起始位、停止位、数据位的个数,及是否有校验位,若有,是以何种形式校验,这样才能在接收到正确信息的基础上进行校验,并把起始位、停止位、校验位剔除掉,将有用信息识别出来。在不知道发送速率的情况下,下位机无法采用传统的方法进行通信信号的正确接收和数据提取。很多情况下,终端设备通信时都没有使用校验位。本文提供了一种没有校验位的情况下波特率的检测算法。此方法适用于黑匣子终端波特率的检测,尤其间断串口通讯的情况(如果是连续发送,只对最后一个字节使用两个波特率接收)。 1 串口通信 串口通信是以帧为单位。帧由4部分组成:起始位,停止位,数据位及校验位。其校验位可有可无,通常终端设置为无。如回车符的发送,回车符的ASC II值为0x0D。串行通信时附加一个起始位和终止位,位的传输顺序一般是先传低位再传高位。此时回车符的二进制表示方式如图1所示。 利用单片机的串口或串口调试工具接收数据时,如果帧 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 不正确,通常只会将此帧数据丢弃,不 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 出错,并且不允许单片机做其他的工作,同样,不能同时用不同的波特率接收数据。若在电平跳变时采样,则采样其前一时刻的电平,当停止位是0时,等待一个其1,2波特率是电平应持续的时间后再判断起始位。本方案基于此方法利用软件实现普通管脚的串口使用。 串行通信是终端和主机之间的主要通信方式,通信波特率一般选择110 b,s,300×2n(n=0,…,7)b,s,利用串口 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 及接收数据的特点,采用高速接收的方法进行波特率的自动识别与检测。 2 基于波特率串口通讯分析 串行通信中一个二进制位的传输时间T取决于通信的波特率,如9 600 b,s时一个二进制位的传输时间是19 200 b,s时一个二进制位传输时间的两倍,即2×T19200=T9600。在串行通信中,若主机设定接收波特率为9 600 b,s,终端只能以9 600 b,s发送数据,只有这样才能保证主机正确地接收数据。表1中列举不同发送、接收波特率情况下接收的数据。 以n b,s发送序列m:Ox1x2x3x4x5x6x7x81,则2n b,s接收到的序列mm:00 x1x1x2x2x3x3x4x4x5x5x6x6x7x7x8x811。若n b,s接到的数是oxf0,oxf8的字节, 即序列m是0x1x2x3x411111, 则mm是00x1x1x2x2x3x3x4x1111111111。 以n/2 b/s发送序列m:0x1x2x3x4x5x6x7x81,n b/s接到的序列mm:00 x1x1x2x2x3x3x4x4x5x5x6x6x7x7x8x811,2π b/s接到韵第一个字符序列:x2x1x1x1x1000,欲使帧结构正确,x2须是1。同样欲使x4x4 x3x3x2x2 x1x1 0不小于oxf0且帧结构正确,x4,x3,x2必须是1时收到的数才不大于oxf8。假设x5,x6,x7,x8有一个是0,则还能接收数据,例如x6是0,则还能收到一个字节,此字节是11x8x8x7x7x6x60,在保证接收到的数据不小于oxf0的情况下,必须使x8x7是1,此数据大于oxf8。若x5是1,x6是0,收到的第二个字节是1111x8x8 x7x70,若使其不小于oxf0,则x8须是1,测试仍大于oxf8。若x5,x6是1,x7是0,此时收到的字符是11111x8x80,不大于oxf8。若x5,x6,x7是1,x8是0,收到的字符是11111110,是oxfe。 以同样的分析方法,可以得出n,3 b,s,n,4 b,s,3n b,s发送序列情况下,所接收的序列及数据。 3 算法设计 由上面分析可设计出检测算法:首先,从高的波特率逐个尝试,判 断波特率是不是发送的波特率,若不是尝试其二分之一的波特率,重复上面的过程。其次57 600 b,s与38 400 b,s不是相差一倍,需要单独测试。最后,115 200 b,s与57 600 b,s单独测试,若均被排除,从38 400 b,s开始新一轮的测试。若57 600 b,s不能被排除,多次则比较是57 600 b,s与38 400 b,s,以确定其中一个。若能排除57 600 b,s,从38 400 b,s开始测试。若均被排除,从19 200 b,s开始测试。检测算法示意图如图2所示。 若接收波特率是发送波特率的16倍或16倍以上,因起始位是0,将会接到10个以上的连续0,帧格式不正确,只需接收一个字符就可 否定当前波特率。若接收波特率是发送波特率的8倍,若想使其发送的波特率的4倍与8倍波特接收的字符合法,不能有两个或两个以上的连续的0出现,且最低位为1又要使4倍波特接收的数不小于f0,可能发送的字节只有DB BB 7B B7 776F FB F7 EF DF BF 7F FF这13种。即接收一个字节不能排除当前波特率的概率约为5,。接收波特率分别是发送波特率的2倍与4倍时,若使2倍波特接收的字节不小于f8,则发送的格式须为0x111,故有13种情况,与上轮相同。若接收波特率分别为发送的2倍与相同时,符合条件的字符有F8 F9 FA FB FC FD FE FF8种,接收一个字符不抛弃2倍波特率的概率为1,32。若是38 400 b,s,接收一个字符就可排除57 600 b,s的概率:(ff-eo),256<0.125。故通常情况下,很快就可锁定波特率。对于相差一倍的情况,只要发送一个小于80的字符就可确定了,即接收一个字符就可确定波特率的概率是50,。若是57 600 b,s,接收到flag_count合法的字符后就可认为是57 600 b,s,理论上flagcount越大越可靠。
本文档为【基于未知上位机串行通信波特率检测】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_477730
暂无简介~
格式:doc
大小:62KB
软件:Word
页数:0
分类:互联网
上传时间:2017-12-11
浏览量:8