关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 计算机多设备接口波特率不匹配的研究

计算机多设备接口波特率不匹配的研究

作者:时间:2010-07-06来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/202529.htm

  根据1 ≤ MulVal ≤ 15和0 ≤ DivAddVal ≤ 15的限制,由于系数接近1,因而DivAddVal取尽可能小的整数。多次试验取值得到12 / (1 + 12) = 0.9231与期望的系数0.9216最接近,能够使误差最小,因而最后确定MulVal = 12, DivAddVal = 1。
显然,按照这种方法是无法完成程序自动化的,必须在每次编程之前根据来人工推算出MulVal和DivAddVal的值,并且还需要大量的误差对比和反复试验,导致工作效率的降低。

(2) 获取MulVal和DivAddVal整数值的新方法

  我们的问题在于寻找一个分数,它能够尽可能地接近校准系数。那么可以使用这样一种多位小数的分数逼近法,该算法认为:任何一个多位小数,无论是无理数还是有理数,均可以用一个分数来近似表示它,并可用一定的程序使其误差越来越小,直至达到所需的精确度。

  根据该算法,可以通过程序来实现获取这两个参数的自动计算,该程序流程如图1所示。

按此在新窗口浏览图片
图1 程序流程

  初始化时要求找到A和B的值,使其满足B

  利用1 ≤ MulVal ≤ 15和0 ≤ DivAddVal ≤ 15的限制作为迭代退出条件,当A的分母超过16时,B就是最优解,B1即为MulVal,而DivAddVal则等于B2-B1;同理,当B的分母超过16时,MulVal=A1,DivAddVal=A2-A1。

  本例中程序计算出来MulVal=12,DivAddVal=1,与人工计算结果完全相同,所以使用这种算法,可以利用程序自动高效计算得出MulVal和DivAddVal整数值,不仅节省人力,而且更加科学可靠。

结语

  系统中的各种所要求的频率往往不同,当只配备一个晶振时,有一些频率完全匹配而另外一些则可能无法完全匹配。作者通过对使用12 MHz晶振的LPC214xCPU进行串口通信时产生的误差研究发现,当期望在57 600 bps以下时,实际波特率与其误差较小,可以正常通信;而当期望波特率为115 200 bps时,实际波特率为125 000 bps,在这样大的误差下如果不修正实际波特率根本无法进行正确的通信;而当通过设置使用小数波特率发生器校准非标准频率晶振所引起的波特率误差时,可以让期望波特率高达115 200 bps的实际波特率为115 384 bps,误差仅为184,通信完全正常。另外,在计算小数分频寄存器中的设置值时首次引入了科学的数学算法,摒弃了传统工程师使用经验技巧和反复试验获取MulVal和DivAddVal值的人工方法,实现了由程序自动、正确、快速地获取设置寄存器参数值的目的,不仅提高了工作效率,更重要的是完全实现了自动化,无需再人工干预。

参考文献

[1] 周立功,等.ARM控制器基础与实战[M].北京:北京航空航天大学出版社,2005.

[2] 周立功,等.深入浅出ARM7――LPC214x[M].北京:北京航空航天大学出版社,2005.

[3] 周立功,等.深入浅出ARM7――LPC213x[M].北京:北京航空航天大学出版社,2005.

[4] 周立功,等.ARM嵌入式系统实验教程(一)[M].北京:北京航空航天大学出版社,2004.

[5] 阿里.8051微控制器和嵌入式系统[M].北京:机械工业出版社,2007.

[6] 陈其翔.多位小数的分数逼近法[J].北京联合大学学报,1997,29(3).


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭