微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 电子知识大全:串行通信波特率的自动识别

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

时间:01-14 来源:互联网 点击:

求最大公约数需要注意的问题:
①近似相等。前面提到,检测到的串行通信某两个脉冲宽度时间差△t5μ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系列单片机及汇编语言即可实现;其算法简单,程序空间需求小,速度快,效率高。在需要实时检测与数据处理的应用设计中,可以使用按键中断的方式启动波特率识别程序,识别完成后检测系统设置自身的波特率与待测系统一致后中断返回,进入主程序进行通信和数据处理。经过大量测试和实验,证明该方法实现波特率识别是可行且可靠的,可以在不同的应用领域推广,尤其在检测和测试领域有着很大的潜力。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top