[发明专利]基于单片机输入捕获功能的波特率自适应方法有效
申请号: | 201110221090.3 | 申请日: | 2011-08-03 |
公开(公告)号: | CN102306136A | 公开(公告)日: | 2012-01-04 |
发明(设计)人: | 郑坚江;霍斌斌 | 申请(专利权)人: | 宁波三星电气股份有限公司 |
主分类号: | G06F13/42 | 分类号: | G06F13/42 |
代理公司: | 宁波市鄞州甬致专利代理事务所 33228 | 代理人: | 代忠炯 |
地址: | 315191 浙江省宁*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 单片机 输入 捕获 功能 波特率 自适应 方法 | ||
技术领域
本发明涉及串行通信领域,特别涉及一种基于单片机输入捕获功能的波特率自适应方法。
背景技术
RS485通信与串口通信一样,是按位(bit)发送和接收字节数据。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。这之间没有同步的时钟线,这就要求发送和接收两方必须保证通信的速率相同,否则出现错码。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配。而实现波特率自适应就是判别上行的波特率,以调整自己的通信波特率,来实现通信速率的匹配。
一般情况下波特率自适应现在采用的方式是标准波特率穷举法。这种方法要求主机的波特率必须在有限的几个固定数值之间变化,如300b/s~9.6 kb/s之间的标准值,且从机的工作振荡频率已知并稳定。从机启动通信程序后,逐个尝试以不同的波特率接收主机发出的特定字符,直到能正确接收为止。因此,该方法的运用具有一定的局限性,握手时间太慢。还有一种是通过计时RXD引脚上一个上升沿和一个下降沿之间的计时宽度来完成波特率的自适应。这种方式对波特率波形要求比较高,必须是标准的UART波形,如果串口的波形不规整,则无法完成自适应,对硬件的环境要求比较高,适用性不高。
发明内容
本发明所要解决的技术问题是:提供一种握手时间快、适用范围广,同时在串口的波形不规整的情况下也可以完成自适应的基于单片机输入捕获功能的波特率自适应方法。
本发明解决上述问题所采用的技术方案为:提供如下一种基于单片机输入捕获功能的波特率自适应方法,其特征在于:通过使用单片机通用GPIO口的下降沿触发中断功能和定时器计数功能,捕获所接收数据产生的两个下降沿,计时这两个下降沿之间的时间来求出其最小码元宽度,并根据求出的最小码元宽度来确定主机的波特率;
具体实现方法包括以下步骤:
步骤101:对一个定时器的一个输入捕获通道进行初始化,同时开启所述输入捕获通道的通用GPIO下降沿输入中断,并禁止所述输入捕获通道的下降沿输入捕获中断;
步骤102:对最小码元宽度及与输入捕获相关的各个状态量、标志进行初始化,初始全局捕获结果标志为没有捕获到两个下降沿,捕获状态机为等待捕获第一个下降沿输入;
步骤103:等待中断产生,如果产生GPIO下降沿输入中断则进入步骤104,如果产生输入捕获通道的下降沿输入捕获中断则进入步骤201;
步骤104:所述输入捕获通道上的GPIO下降沿输入中断触发;
步骤105:判断所述输入捕获通道下降沿输入捕获中断是否完成两个下降沿捕获,若是,进入步骤109,不是,则进入步骤106;
步骤106:判断所述输入捕获通道的捕获状态机是否只捕获到了第一个下降沿,若是,回到步骤103,不是,则进入步骤107;
步骤107:由于所述输入捕获通道第一个下降沿也没有捕获到,判断所述输入捕获通道的下降沿输入捕获中断是否开启,若是,回到步骤103,不是,则进入步骤108;
步骤108:开启所述输入捕获通道的下降沿输入捕获中断并回到步骤103;
步骤109:判断捕获的最小码元宽度是否是相关波特率的最小码元宽度,若是,进入步骤110,不是,则回到步骤102;
步骤110:判断捕获的最小码元宽度是否可以确定所接收数据的波特率,若是,进入步骤111,不是,则回到步骤102;
步骤111:对自身波特率进行调整处理;
步骤112:完成一次自适应处理,并禁止所述输入捕获通道的下降沿输入捕获中断,通用GPIO下降沿输入中断继续开启并回到步骤102,等待下一次UART通信的起始位下降沿触发GPIO下降沿输入中断,
步骤201:所述输入捕获通道的下降沿输入捕获中断触发;
步骤202:判断捕获状态机是否是正在等待捕获第一个下降沿输入,若是,进入步骤203,不是,则进入步骤204;
步骤203:读取所述定时器的第一次计数值T1,并保存计数值,初始自己的捕获状态机为等待捕获第二个下降沿输入中断并进入步骤210;
步骤204:读取所述定时器的第二次计数值T2,并判断所述计时器的计数是否溢出,若是,进入步骤205,不是,则进入步骤206;
步骤205:对计数值T1、T2清零并进入步骤209;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于宁波三星电气股份有限公司,未经宁波三星电气股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110221090.3/2.html,转载请声明来源钻瓜专利网。