自动检测串口通讯波特率

自动检测串口通讯波特率

ID:36544973

大小:175.44 KB

页数:4页

时间:2019-05-11

自动检测串口通讯波特率_第1页
自动检测串口通讯波特率_第2页
自动检测串口通讯波特率_第3页
自动检测串口通讯波特率_第4页
资源描述:

《自动检测串口通讯波特率》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、广州周立功单片机发展有限公司Tel:(020)3873097638730977Fax:38730925Http://www.zlgmcu.com自动检测80C51串行通讯中的波特率本文介绍一种在80C51串行通讯应用中自动检测波特率的方法。按照经验,程序起动后所接收到的第1个字符用于测量波特率。这种方法可以不用设定难于记忆的开关,还可以免去在有关应用中使用多种不同波特率的烦恼。人们可以设想:一种可靠地实现自动波特检测的方法是可能的,它无须严格限制可被确认的字符。问题是:在各种的条件下,如何可以在大量允许出现的字符中找出波特率的定时间隔。显然,最快捷的方法是检测一个单独位时间(sin

2、glebittime),以确定接收波特率应该是多少。可是,在RS-232模式下,许多ASCII字符并不能测量出一个单独位时间。对于大多数字符来说,只要波特率存在合理波动(这里的波特率是指标准波特率),从起始位到最后一位“可见”位的数据传输周期就会在一定范围内发生变化。此外,许多系统采用8位数据、无奇偶校验的格式传输ASCII字符。在这种格式里,普通ASCII字节不会有MSB设定,并且,UART总是先发送数据低位(LSB),后发送数据高位(MSB),我们总会看见数据的停止位。在下面的波特率检测程序中,先等待串行通讯输入管脚的起始信号(下降沿),然后起动定时器T0。在其后的串行数据的每

3、一个上升沿,将定时器T0的数值捕获并保存。当定时器T0溢出时,其最后一次捕获的数值即为从串行数据起始位到最后一个上升沿(我们假设是停止位)过程所持续的时间。CmpTable表格列出了每一波特率的最大测量时间。这些数据是经过选择的,所以,4个数据位时间(加上起始位时间)仍可产生正确的波特率。使用这种方法时,必须遵守一个假设:这种技术仅取决于所接收到的一个字符,接收这个字符的波特率必须大于最低波特率。本质上来说,这意味着这个字符必须来自正常敲击键盘时所产生的字符。在PC上,我们不可能快速、连续地敲击两个字符,以欺骗程序。但是,PC的功能键具有一个问题,因为它会连续发送两个紧挨着的字符,

4、使程序检测得到错误的波特率。在为12MHz时钟频率而设计的的例子程序中,其总采样时间大约为65mS,大约可以在RS-232通讯中以300bps的速度发送两个字符。假如使用了奇偶校验,当4个MSB以及所接收字节的奇偶校验位均这同一值时,就可能会发生错误。这类错误的发生取决于系统是使用了奇校验或偶校验,可能发生于小写的字母“p”到“z”,还有花括号({})、垂直条(

5、)、波纹线(~),以及删除键“delete”。值得注意的是,惯常的提示符按键(如,空格键、回车键、及返回键),是没有这些限制的(奇数还是偶数的限制?)。在以此方式运行程序时,如第一个字节已经过去,但串行口(UART)的波特

6、率未能正确设置,那将造成用于检测波特率的第一个字符丢失。同样,如果在正常通讯中检测到串行口的通讯“帧”错误,绝大部分“实时”程序必须重复这一检测波特率的过程。如需采用另外设定的晶体振荡频率、波特率,请使用下列公式计算CmpTable的表项目:振荡频率(MHz)5表项目=×波特率12记住,表项目是两个字节的数值,所以上述公式的结果一定要分成高位字节及低位字节(如果采用十六进制,则容易得出高位、低位字节)。当然,也可以用汇编程序来完成所有的运算。上述的公式是由以下得来的:最小认可时间最大定时数值(表项目)=机器周期-1-广州周立功单片机发展有限公司Tel:(020)3873097638

7、730977Fax:38730925Http://www.zlgmcu.com最小认可位数(bits_of_recognize)最小认可时间=×字节时间“可见”位数(#_of_bits)备注:在8-N-1格式的数据通讯中,‘#-of-bits’(“可见”位数)是9,以及‘bits-to-recognize’(最小认可位数)是5。1字节时间=ד可见”位数(#_of_bits)波特率振荡频率机器周期=12;*****************************************************************************;自动的波特率检测程序;*

8、****************************************************************************$Title(AutomaticBaudRateDetectionTest)$Date(12–16–91)$MOD552;*****************************************************************************;Definitions;*********

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。