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

最新更新时间:2013-06-26来源: 与非网关键字:计算机  设备接口  波特率 手机看文章 扫描二维码
随时随地手机看文章

引言

  不同设备接口在传输数据时所要求的频率往往不同,而在一些仅使用一个晶振的系统上,如果一个接口的频率完全匹配,那么其他接口所使用的频率往往就不完全符合要求。例如,为了实现USB总线的48 MHz的传输频率,一般可以用12 MHz的晶振来倍频得到,而12 MHz的晶振在进行串口通信时由于与标准波特率不成倍数关系,因而期望波特率和实际波特率往往不同。

       在波特率较低时,这种误差影响不大。例如,期望波特率为57 600 bps时,实际波特率为57 692 bps,传输正常;而当期望波特率高达115 200 bps时,则实际波特率为125 000 bps,误差较大。实验结果表明,此时如不对其进行修正,则无法进行正确传输。

  笔者通过实验研究证明,通过使用小数波特率发生器,完全可以像低波特率时一样正确地传输,实现了多位小数的分数逼近法的算法,避免了人工计算过程,彻底实现了波特率计算和修正的自动化。

1 小数波特率发生器工作原理

  当外部晶振或者VPB时钟值不是标准波特率的整数倍时,波特率的设定往往会出现偏差。通过小数波特率发生器则可减小或者消除这种偏差。

  下面以LPC214x处理器的串口UART1为例阐述小数波特率发生器的工作原理。要使用小数波特率发生器,需要设置小数分频寄存器(U1FDR),该寄存器控制产生波特率的时钟分频器。

  预分频器接收VPB时钟,并经过指定的小数要求产生一个输出时钟,小数由该寄存器的值决定。

  在不使用小数波特率发生器时,UART1波特率由下式计算:

UART1baudrate = PCLK/(16×(256×U1DLM+U1DLL))

  当使用小数波特率发生器时,则由下式计算:

UART1baudrate = [PCLK/(16 ×(256 × U1DLM + U1DLL))] ×(MulVal / (MulVal + DivAddVal)

  其中PCLK为VPB总线时钟,U1DLM和U1DLL为标准的UART1波特率除数寄存器。可以看出,MulVal / (MulVal + DivAddVal)就是用来修正波特率的小数值,被称作校准系数。它由两个参数构成:DivAddVal(波特率生成欲分频除数值)和MulVal(波特率预分频乘数值)。DivAddVal和MulVal都必须为整数,且满足:

1 ≤ MulVal≤ 15,0 ≤ DivAddVal ≤ 15。

  根据以上公式很容易计算串口波特率,但是实际应用中,更多的是在使用非标准晶振时确定波特率校准系数,即设定U1FDR寄存器DivAddVal和MulVal的值。确定波特率校准系数可以分如下3步进行:

① 确定除数锁存器的值: 根据需要的波特率bps,按照没有校准系数的波特率计算公式确定除数锁存器的值(DLM,DLL)。由于采用非标准晶振,得到的结果通常为小数。无论小数值大小,均舍弃小数部分的值,对结果进行取整操作(不是四舍五入),得到除数锁存器的值。
② 确定校准前的波特率: 将①得到的除数值(DLM,DLL)代入不带校准系数的串口波特率计算公式,得到未经过校准的波特率BPS。
③ 确定校准系数p: p=bps/BPS=MulVal/(MulVal+DivAddVal)
根据限制条件1≤MulVal≤15和0≤DivAddVal≤15,寻找合适的值,使得到误差尽可能小的校准系数。

2 多位小数的分数逼近算法

(1) 传统获取MulVal和DivAddVal整数值的方法

  假设系统晶振为12 MHz,拟设定波特率bps为115 200 bps,根据前面所述校准系数的确定过程,12 000 000/(16×115 200)=6.51,取6为除数值,那么BPS=12 000 000/[16×(256×0+6)]=125 000 bps,所以p=bps/BPS=0.921 6。

  传统获取MulVal和DivAddVal整数值的方法大多依靠经验技巧或者反复试验。如参考文献2《深入浅出ARM7LPC214x下》中,第77页描述的那样:

       根据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值的人工方法,实现了由程序自动、正确、快速地获取设置寄存器参数值的目的,不仅提高了工作效率,更重要的是完全实现了自动化,无需再人工干预。

 

关键字:计算机  设备接口  波特率 编辑:探路者 引用地址:计算机多设备接口波特率不匹配的研究

上一篇:AC-DC医疗电源的选用标准与典型应用方案
下一篇:基于单片无操作系统的 USB 主机控制器接口

推荐阅读最新更新时间:2023-10-17 15:46

计算机串行通信的环路实现方案
    对于用户要求接口具有远距离( 1km)高速度(最高19200bps)通信能力,及工业现场的强抗干扰能力和噪声抑制能力,对于普通的RS232接口,采用点对点单线共地连接(Singleended),电平驱动方式,最大通信距离为15.25m,显然不能满足要求。因此考虑20mA电流环路驱动方式。电流环路与电平方式相比具有以一优点:     电平方式 20mA电流环方式     信号易衰减 信号不易衰减     易受干扰 抗干扰能力强     远距离,离频率 适合远距离高     传输性能低下 速通信     在本设计中,选用Motorola公司的光电耦合器TIL117进行信号变换和光电隔离。这
[网络通信]
计算机的并行接口
因为个人计算机(PC机)占有计算机市场的绝大部分份额,一般人能接触到的和认知中的计算机基本就是IBM PC计算机及兼容机,这种计算机使用INTEL X86硬件平台和MICROSOFT WINDOWS操作系统(早期为MS-DOS操作系统)的软件平台,并配有多种外部设备和输入输出接口,成为事实上的工业标准。并行接口就是其中常见的一种I/O接口。 并行接口一般称为Centronics接口,现在也称IEEE1284,最早由Centronics Da ta Computer Corporation公司在60年代中期制定。Centronics公司当初是为点阵行式打印机设计的并行接口,1981年被IBM公司采用,后来成为IBM PC计算机的标
[嵌入式]
DSP28035_波特率的设置
SciaRegs.SCIHBAUD =0x0000; SciaRegs.SCILBAUD =0xc2; //设置为9600 //BRR = 15000000/8/9600 -1 = 194.3125 为什么是15M? 下面这个文件中有系统时钟设置,60M #include DSP2803x_Examples.h // DSP2803x Examples Include File 15M的设置在下面这个文件
[单片机]
DSP28035_<font color='red'>波特率</font>的设置
秒杀超算,量子计算机都有哪些应用?
量子物理学听起来玄而又玄。在微观领域,粒子所呈现出的异于经典理论的量子现象至今仍困扰着物理学家。与此同时,各个领域的科学家们也正在合作,尝试着利用量子世界中的一些特点建造出能力远超电子 计算机 的 量子计算 机。人类对于量子计算的研究起步较晚,想要取得任何进展更是不易,需要在多个领域之间相互配合进行系统工程研究,但量子计算目前所展现的潜力已经使这个领域的研究成为人类科技发展的焦点之一。   为什么全世界都会研究量子计算?     电子计算机早已成为人们日常生活的必备电器。在各种各样的功能之下,电子计算机是通过由半导体材料制成的各种逻辑器件作为最基础的计算单元,现实世界中的一切信息都被转换为电子计算机中的“0”和“1”两种信号进
[嵌入式]
安森美半导体高能效计算机电源方案概览
  安森美半导体身为应用于高能效电子产品的高性能硅方案供应商,在高能效计算机电源方案方面拥有强势的市场地位,是全球领先的台式机电源方案供应商,在笔记本和上网本AC-DC适配器电源方案领域的市场份额也高居第一。安森美半导体的计算机电源方案提供高性能、高能效、高集成度等重要特性,应用于台式机、笔记本及上网本的各个主要子系统,如中央处理器(CPU)供电、热管理、电源及适配器电源转换、高速接口开关及保护等。新推出的CPU电源管理和高速接口方案经过了优化,配合英特尔最新发布的Sandy Bridge处理器。本文将着重探讨安森美半导体新近推出的计算机电源方案,帮助工程师选择适合的新产品。   用于80 PLUS金级/白金级能效ATX电源设
[电源管理]
安森美半导体高能效<font color='red'>计算机</font>电源方案概览
贸易战影响后,三季度笔记本计算机出货增长12%
研调机构TrendForce最新笔记型计算机出货报告显示,第2季因为对贸易战的担忧反而刺激品牌预期性的提前备货,加上AMD CPU替代效应发酵,以及Chromebook标案需求提升,全球笔记本计算机出货量达4150万台,季成长12.1%,表现优于预期。 展望第3季,在旺季加持下,预估出货量将达4300万台,季增率约3.6%。 TrendForce指出,由于全球有三分之一的NB需求来自北美市场,为了应对中美贸易战扩大的冲击,品牌厂在6月提前备货,其中龙头品牌惠普6月出货来到440万台,是继2018年6月后,再次达到单月出货高峰,也推升第2季出货量达到1030万台,季成长11%。 联想第2季出货量约900万台,季成长34.
[嵌入式]
8051单片机波特率计算公式(配套C语言例程)
8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod /32)×(定时器T1溢出率),其中smod是PCON 7 ,表示是否波特率加倍,Fsoc是系统的晶振大小。 波特率公式中:T1溢出率=溢出周期的倒数;溢出周期=(256-TH1)×12/Fosc; 最终公式: 波特率:Baud=(2smod × Fsoc)/(32 ×12×(256-TH1)) 我们一般不太关注波特率的计算,而是关心选用的传输速度(波特率)去反算定时器1(自动重装模式)的初值(TH1),所以将上面的公式导一下,得到TH1的公式: TH1=256-(Fsoc×2smod)/(12×32×Baud) 下面针对串口发送程序,水寒
[单片机]
电视机厂商也需关注计算机显示器能效标准
尽管于2008年11月1日实施的GB21520-2008《计算机显示器能效限定值及能效等级》(以下简称计算机显示器能效标准)只是计算机显示器的能效标准,与家电产品似乎并没有什么关系。但是,2008年10月14日,《电器》记者在由全国能源基础与管理标准化技术委员会及中国标准化研究院能效标识管理中心主办的“计算机显示器能效标准标识宣贯会暨绿色显示器技术论坛”上获悉,由于近年来的3C融合,计算机显示器与电视机在性能、功能等方面也越来越接近,计算机显示器能效标准也可能会涉及到部分电视机厂商生产的产品。   计算机显示器能效标准将可能包括哪些电视机产品,这些产品应该如何应对该能效标准呢?   适用范围理解不一
[家用电子]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved