当前位置:资讯 > 工业以太网 > 正文

串行通信波特率的自动识别

发布时间:2008-02-24           

bit、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;而检测到的脉冲时间可以表达为nt1bitCONTROL ENGINEERING China版权所有,其中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所列。经过大量的实验与测试CONTROL ENGINEERING China版权所有,这里也给出了不同波特率时采集到的位传输时间典型值与波特率的对应关系,采集到的其他样本值与典型值的最大偏差均小于1%,因此该方法实现波特率识别是可行、可靠的。

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


 


标签:串行通信波特率,
版权声明:版权归中国控制工程网所有,转载请注明出处!
  • 相关文章