电子知识大全:串行通信波特率的自动识别

最新更新时间:2012-01-14来源: 单片机及嵌入式系统应用关键字:串行通信  波特率  自动识别 手机看文章 扫描二维码
随时随地手机看文章
    对于异步串行通信,只有在通信双方波特率相同时,才能实现数据的正确传输与接收;而一些系统总是希望能实现对各种波特率的兼容。通常的实现方法是,要求对方首先发出规定的字符或数据,系统收到该字符或数据后,计算对方的波特率.以适应对方的波特率进行工作,例如某些无线收发模块、GSM通信模块等。然而对于检测、测试等领域,是不能要求被测系统发送某个固定的字符或数据的,那么对于这类通信系统,如何实现波特率的可靠识别呢?本文创新性地提出了在码元宽度捕捉的基础上求最大公约数的方法。该方法不对待测系统发送的数据进行特殊要求即可实现波特率识别,且保证了波特率识别的有效性和可靠性。下面对该方法进行详细说明。

    1 波特率自动识别的传统方法及基本原理

    串行通信的数据是按位顺序传输的,而异步串行通信由于没有位定时时钟,因此各个数据位之问需要严格的定时,才能保证正确的通信。也就是说,只有在通信双方波特率相同时,才能实现数据的正确传输与接收。传统的波特率自动识别的方法主要有两种:
    ①标准波特率穷举法。标准波特率穷举法适用于主机侧的波特率必须在有限的几个固定数值之间变化,如300~19200之间的标准值;且从机侧的工作振荡频率已知且稳定。从机启动通信程序后,逐个尝试以不同的波特率接收主机发出的特定字符,直到能正确接收为止,因此,该方法的运用有一定的局限性。
    ②码元宽度实时检测法。该方法要求主机按照约定发送某一数据,从机通过单片机的定时器测量RXD引脚上输入数据的码元宽度,而后计算出待测系统通信的波特率。该方法目前应用比较广泛。例如,某GSM模块在设计时为了适应各种通信波特率,要求其通信的系统首先发送08H,之后发送指令,它就是依靠数据08H的码元宽度计算出对方波特率的。

2 最大公约数法的原理及其实现
   
传统的方法对待测系统发送的数据都有一定的限制或要求才能够实现波特率的识别,但有些时候是无法约束待测系统首先发送特定字符的。这里,根据不同的应用需求,提出更为通用的波特率识别方法——最大公约数法。
    为了便于说明问题,设主机的波特率为BPS,位传输时间为t1bit,测试系统测得的波特率为BAUD,位传输时间为txbit。以l位起始位、8位数据位、1位停止位、无奇偶校验位为例,通信数据格式如图l所示。除了起始位始终为0,停止位始终为1外,8位数据位的电平高低是由传输的数据决定的,要测得待测系统的波特率,根据波特率的实际意义BPS=l/t1bit,只要检测出待测系统通信数据的位传输时间t1bit即可。

    位传输时间t1bit对应的就是单位码元宽度时间,只要知道单位码元宽度时间,系统波特率就很容易计算出来了。由于不能要求待测系统按照规定发出特定的数据或字符,因此这里使用码元宽度捕捉的方法来查找码元宽度时间,要将单片机挂入待测系统的通信线路,采用对待测系统TXD(或RXD)引脚的高、低电平脉冲持续时间不断采集的方式,来捕捉单位码元宽度时间t1bit,显然单片机直接采集到的单个高、低电平脉冲持续时间可能是nt1bit,其中1≤n≤9。如何从采集到的nt1bit找出t1bit,成为波特率识别的关键。
    经过对串行通信数据格式的特点进行分析,本文提出了码元宽度最大公约数法来从捕捉到的码元宽度时间中计算单位码元宽度时间,也就是位传输时间t1bit。具体实现方法如下:在待测系统正常工作后,将测试单片机挂入其通信线路;首先对正、负脉冲宽度都进行计时,分别采集n次,剔除正脉冲溢出的部分后,把所有不相等的有效脉冲宽度时间从小到大排序(△t<5μs就认为两个时间相等,这一点在后面将有说明),假设依次为t1,t2,t3,…,tm(1≤m≤9);由于采集到的时间一定是t1bit的整数倍,计算出t1,t2,t3,…,tm的最大公约数为txbit,那么txbit就可以作为系统的最小脉冲宽度来计算波特率。这里计算得到的txbit可能等于t1bit,也可能不等于t1bit。下面分类讨论其作为位传输时间t1bit来计算波特率的可靠性及依据。
    第1种情况,txbit=t1bit:待测系统通信过程中出现最窄正脉冲或最窄负脉冲,得到的txbit等于t1bit,那么使用txbit计算波特率是可靠的;待测系统通信过程中未出现最窄正脉冲或最窄负脉冲,但系统通信过程中出现的脉冲宽度的最大公约数为最窄脉冲宽度,如待测系统处出现了2t1bit、3t1bit脉冲时间或者待测系统出现了4t1bit,7t1bit、8t1bit脉冲时间,此时最大公约数txbit仍等于t1bit,这种情况下波特率是可以可靠识别的。
    第2种情况,txbit≠t1bit,即txbit=N’t1bit(2≤N’≤9):若系统通信过程中出现的脉冲宽度时间都是N’t1bit的整数倍,以N’=2为例,待测系统通信过程中可能只出现类似图2(a)所示的数据,求得的最大公约数txbit=2t1bit,BAUD=BPS/2,实际测得的波特率是被测系统波特率的1/2。但我们注意到,测得的数据如图2(b)所示,依次为FFH、FEH、FDH、FCH、FBH、FAH、F9H、F8H,尽管测得的波特率并不是被测系统波特率,但是并不会导致信息丢失,所有的数据都可以正确还原,因此这种情况下使用最大公约数法计算波特率也是完全可靠的。

    求最大公约数需要注意的问题:
    ①近似相等。前面提到,检测到的串行通信某两个脉冲宽度时间差△t<5μs就认为两个时间近似相等,这是由串行通信的特点决定的。假设采集系统设计指标要求系统能够识别波特率在300~38 400 bps,那么计算可得位传输时间t1bit为26μs≤t1bit≤3400μs;而检测到的脉冲时间可以表达为nt1bit,其中n为自然数日1≤n≤9,那么任意两个脉冲宽度的时间差△t=(n-1)t1bit。显然两个脉冲的时间差△t,要么为t1bit的整数倍,要么为O,而26μs≤t1bit≤3400μs,因此如果检测到待测系统的某两个脉冲宽度时间差△t小于5μs,那么就可以认为两个时间近似相等(实验结果表明,任意两个脉冲宽度时间差都小于等于2μs,之所以有时不等于0,是由串行通信时脉冲上升沿和下降沿时间及单片机启动计时与结束计时带来的误差)。
    ②近似等于0。位传输时间t1bit为26μs≤t1bit≤3400μs,所以检测到的脉冲宽度一定≥26μs。如果检测到待测系统的脉冲宽度小于5μs,就可以认为其近似等于O。实际上经过大量的实验,直接检测到某脉冲宽度时间小于5μs的结果是不会出现的。其意义在于:在计算最大公约数时,要用采集到的有效脉冲时间t1,t2,t3,…,tm分别除以最小时间t1,设余数由小到大依次为A2,A3,…,Am,此时除了与t1近似相等的余数外,还有一部分余数小于5μs,那么此时就认为余数近似等于0,剩下的部分余数既不近似等于t1也不近似等于O。近似相等的余数只保留一个,设这些余数从小到大依次为Ax、Ay、Az(最多有3个),那么就认为Ax、Ay、Az是计算得到的更小的脉冲宽度时间。然后用前面采集到的时间t1,t2,t3,…,tm和Ay、Az,分别除以Ax。假设余数分别为B1,B2,B3,…,Bk,如果不存在余数符合在区间(5,Ax-5),那么Ax可以作为t1bit来计算波特率;如果存在Bx满足条件,那么Bx就可以作为t1bit来计算被测系统波特率(不需要继续求余,其依据不再赘述)。


3 实验结果及结论
   
由于波特率在±3%的偏移范围内仍然可以正确识别和通信,因此笔者判断不同波特率的位传输时间的参考区间如表1所列。经过大量的实验与测试,这里也给出了不同波特率时采集到的位传输时间典型值与波特率的对应关系,采集到的其他样本值与典型值的最大偏差均小于1%,因此该方法实现波特率识别是可行、可靠的。

    本文提出的码元宽度最大公约数法实现波特率识别,使用C5l系列单片机及汇编语言即可实现;其算法简单,程序空间需求小,速度快,效率高。在需要实时检测与数据处理的应用设计中,可以使用按键中断的方式启动波特率识别程序,识别完成后检测系统设置自身的波特率与待测系统一致后中断返回,进入主程序进行通信和数据处理。经过大量测试和实验,证明该方法实现波特率识别是可行且可靠的,可以在不同的应用领域推广,尤其在检测和测试领域有着很大的潜力。

关键字:串行通信  波特率  自动识别 编辑:探路者 引用地址:电子知识大全:串行通信波特率的自动识别

上一篇:皮秒激光器的原理及其应用
下一篇:一种电子引信抗电磁干扰封装技术

推荐阅读最新更新时间:2023-10-18 16:21

串口通信工作方式1波特率的计算
本文只讨论串口通信工作方式1的波特率。 公式:波特率=(2^SMOD/32)*(T1溢出率) 其中,当SMOD=0,波特率正常 当SMOD=1,波特率加倍. T1溢出率就是T1定时器溢出的频率,只要算出T1定时器每溢出一次所需的时间T,就可以算出溢出率1/T.单位为Hz。 T1定时器使用工作方式2(TMOD=0X20),即8位初值自动重装的定时器。其工作过程是,在TLX和THX中装好相同的初值,在时钟的作用下TLX加一计数,当TLX加满溢出后,CPU会自动将THX的值装入TLX中......如此循环。 每计一个数的时间为一个机器周期,一个机器周期为12个时钟周期。如采用11.0592MH
[单片机]
基于Lab Windows/CVI的PC与 DSP的串行通信
  0 引言   随着数字信号处理理论及微电子技术的高速发展,数字信号处理器(DSP)已广泛应用于各个控制领域。而在控制系统中,通常会利用PC机与DSP之间的通信来对系统各个状态/参数进行监控。这种方法既利用了DSP功耗低、价格相对便宜、功能强大、抗干扰能力强、适宜于分布现场等优点,同时又结合了PC机的软硬件资源丰富、管理功能强大、人机界面友好、操控平台稳定可靠、数据通信方便快捷等系统功能优势。为此,本文拟通过使用比较广泛的RS-232-C接口标准来研究PC与TMS320F2812 DSP之间的异步串行通信。   1 硬件设计   这里采用最简单的三线连接方法,即PC机与DSP的发送、接收端彼此交叉连接,地线对应连
[单片机]
基于Lab Windows/CVI的PC与 DSP的<font color='red'>串行通信</font>
实验七 串行通信(80C51单片机汇编语言编程)
主机:每隔1秒读一次P1口并将读数发给从机,同时接收从机的信号,若与所发数相同,则P3.2的灯亮,若不同或不回答则P3.3的灯亮。 从机:将接收的数据从P1口推出,并回发此数据 波特率自定,编写主机程序和从机程序。 主机: ORG 0000H AJMP MAIN ORG 000BH AJMP CT0 ORG 0023H AJMP RT ORG 0030H MAIN:MOV TMOD,#21H MOV TL1,#0FAH MOV TH1,#0FAH MOV R7,#0AH
[单片机]
串行通信可以分为两种类型:同步通信、异步通信
串行通信可以分为两种类型:同步通信、异步通信   1.异步通信的特点及信息帧格式:    以起止式异步协议为例,下图显示的是起止式一帧数据的格式: 起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以 起始位 开始,以 停止位 结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平,逻辑值),字符本身由5-7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿。   从图中可看出,这种格式是靠
[单片机]
PIC单片机与触摸屏串行通信的MODBUS协议实现
摘要:介绍一种在PIC单片机与触摸屏之间采用Modbus协议实现异步串行通信的方法。简单介绍了Modbus通信协议,给出了硬件电路连接图、程序流程图以及用PIC单片机C语言编写的部分通信程序。实际使用证明该方法数据传输稳定可靠,并提供了良好的人机交互环境。 关键词:触摸屏 PIC单片机 Modbus协议 通信 工控中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国M
[单片机]
基于单片机应用系统的串行通信设计
  1 引 言   在红外成像技术的电力设备状态检测系统中,基于AT89C51单片机的应用系统,采用美国雷态公司的型号为3iLRL3的非接触式红外测温仪。该测温仪采用的是RS232C串行通信标准接口,该接口在很多通信设备中通用,目前与PC机的直接串行通信也是RS 232C接口。尽管RS232C性能指标并非很好,但还是有广泛的市场支持。就可以方便的在2个数字设备之间进行信息的交换,实现全双工的传送数据,硬件成本低。而且通用性好。   2 串行通信的硬件设计   串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机
[单片机]
基于单片机应用系统的<font color='red'>串行通信</font>设计
基于68HC908MR16单片机的光伏正弦波逆变电源
摘要:介绍了一种基于MOTOROLA公司生产的68HC908MR16单片机的光伏正弦波逆变电源。该系统应用SPWM技术将经太阳电池阵列充电后的蓄电池电压,逆变为标准的正弦单相220V、50Hz交流电压,同时采用新型的数字式PI调节器实现稳压控制,并通过与外界键盘监控系统进行串行通信实现参数调节和系统监控。 关键词:光伏逆变;MR16单片机;PI调节器;串行通信   1 引言 随着能源危机的日益加剧和人类环保意识的提高,新能源的开发利用越来越受到人们的重视。而太阳能作为取之不尽用之不竭的高效无污染的能源近来更受人们的青睐。本文介绍的光伏正弦逆变电源系统正是一种适于户用的、特别适于无电少电的西部边远地区
[单片机]
基于68HC908MR16单片机的光伏正弦波逆变电源
在STM32F103C8微控制器中使用RS-485串行通信
  通信协议是数字电子和嵌入式系统的组成部分。只要有多个微控制器和外围设备的接口,就必须使用通信协议来交换大量数据。有多种类型的串行通信协议可用。RS485 是串行通信协议之一,用于工业项目和重型机械。   本教程是关于在 STM32F103C8 微控制器中使用RS-485 串行通信。   在本教程中,Master STM32F103C8 具有三个按钮,用于通过使用 RS-485 串行通信来控制 Slave Arduino Uno 上的三个 LED 的状态。   RS-485 串行通讯   RS-485 是一种不需要时钟的异步串行通信协议。它使用一种称为差分信号的技术将二进制数据从一个设备传输到另一个设备。   那么这种差
[单片机]
在STM32F103C8微控制器中使用RS-485<font color='red'>串行通信</font>
小广播
最新电源管理文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved