一种串口的软件自适应波特率方法

文档序号:10724842阅读:873来源:国知局
一种串口的软件自适应波特率方法
【专利摘要】本发明公开了一种串口的软件自适应波特率方法,发送方先在一个波特率上间隔重复发送预定的数据,若接收方在一段时间内没有收到预定的数据,则接收方切换一个波特率,继续在所述一段时间内等待接收预定的数据,直至接收方在所述一段时间内收到预定的数据后,回复握手信号完成自适应波特率的同步,之后双方使用固定的同步后的波特率进行通信。
【专利说明】
一种串口的软件自适应波特率方法
技术领域
[0001]本发明涉及一种串口自适应波特率的方法,属于数据传输领域。【背景技术】
[0002]波特率是对信号传输速率的一种度量,通常以“波特”(baud)为单位,由于不同的设备各自的波特率不同,因此在信号传输过程中需要对传输双方进行波特率的同步。
[0003]目前的波特率同步方法包括:1、通过硬件计算法来实现,其缺陷在于波特率局限于低速的9600、19200、38400、57600、115200bps,且对硬件平台资源依赖较大;2、采用计算脉冲宽度的算法,其缺陷在于稳定性和适应性不足,在一些硬件环境下无法实现同步。另夕卜,这种波特率的同步方法需要进行重新配置才能更改波特率,使用较为不便。
【发明内容】

[0004]针对现有技术存在的上述问题,本发明的目的是提供一种串口的软件自适应波特率方法。
[0005]为实现上述目的,本发明采用的技术方案如下:
[0006]—种串口的软件自适应波特率方法,发送方先在一个波特率上间隔重复发送预定的数据,若接收方在一段时间内没有收到预定的数据,则接收方切换一个波特率,继续在所述一段时间内等待接收预定的数据,直至接收方在所述一段时间内收到预定的数据后,回复握手信号完成自适应波特率的同步,之后双方使用固定的同步后的波特率进行通信。
[0007]作为一种实施方式,使用串口的接收引脚电平跳变中断作为触发条件,在中断触发后,启动一个定时器,在定时器到期前如果收到了事先约定好的数据则认为同步上波特率;如果在定时器到期时没有收到事先约定好的数据,则停止定时器,并切换到下一波特率,再次等待电平中断并接受数据。
[0008]作为一种实施方式,所述定时器为50ms。
[0009]作为一种实施方式,所述波特率包括9600,19200,38400,57600以及115200bps。
[0010]作为一种实施方式,所述预定的数据为一个或者几个字符。
[0011]相较于现有技术,本发明的有益技术效果在于:
[0012]本发明提供的串口的软件自适应波特率方法的优点在于:1、采用软件轮训机制, 可同步的波特率,不受限于9600、19200、38400、57600、115200bps,可以扩展到更高的波特率;2、接收方接收到任意数据的第一时间肯定会有电平跳变,采用电平跳变作为触发条件, 可以确保无论任何硬件环境都可以同步上,相对于一些采用计算脉冲宽度之类算法有较好的稳定性和适应性;3、采用中断配合软件轮训切换波特率的机制,可以自定义任意的同步字,包括同步字长度,有很好的扩展性。【附图说明】
[0013]图1是本发明提供的一种串口的软件自适应波特率方法的工作流程图。【具体实施方式】
[0014]以下结合附图对本发明的技术方案做进一步详细描述。
[0015]本发明提供的一种串口的软件自适应波特率方法是基于发送方先在某一波特率上间隔重复发送某一个或者某几个事先约定好的字符,接收方收到事先约定好的字符后, 然后回复握手信号完成自适应波特率的同步,之后双方使用固定的同步上的波特率进行通信,串口自适应波特率可以针对同一产品,满足多种不同速率的设备进行对接,而使用者无需切换波特率就可以进行数据收发,大大提高产品适用性。
[0016]本方案中使用串口接收引脚(RX引脚)电平跳变中断作为触发条件,在中断触发后,启动一个定时器,在定时器到期前如果收到了事先约定好的字符则进行同步波特率;如果在定时器到来时没有收到事先约定好的字符或者没有收到任何字符,则停止定时器,并切换到下一波特率,再次等待接收引脚中断并接收数据;如此循环直到收到事先约定好的字符或者字符串为止。[〇〇17]如图1所示,该方法流程图如下:
[0018]步骤1:设备开机,先固定波特率9600 (9600,19200,38400,57600,115200bps ),并打开串口电平跳变中断。
[0019]步骤2:等待串口上接收引脚电平跳变中断,如果中断到来则启动定时器T1 (50ms)〇
[0020]步骤3:串口收到指定的数据,则同步上串口回复指定的数据跳到步骤5。如果串口没有收到数据或者收到的数据不是约定好的数据那么等待T1超时,如果T1超时则回到步骤4〇[〇〇21]步骤4:重新初始化串口,并且波特率切换到下一波特率19200,并重新开启接收引脚中断,回到步骤2。
[0022]步骤5:停止T1,记录当前同步的波特率,即为同步上的波特率,回复握手信号完成自适应波特率同步。
[0023]本方案中有两个对象,一个对象记为模块A,另一模块记为模块B,模块A开机后处于自适应波特率状态等待模块B同步,具体实施步骤如下:[〇〇24]1)模块A上电开机,模块B上电开机。
[0025]2)模块A先设置固定波特率9600,并打开接收引脚的中断功能。
[0026]3)模块A等待串口接收引脚中断到来。[〇〇27]4)模块B开机后开始固定以100MS间隔发送指定的同步字符或者字符串。
[0028]5)模块A由于接收引脚上有数据过来那么会引发中断,进而触发中断,启动定时器 Tl〇
[0029]6)定时器T1到期前收到指定字符串,模块A记录当前使用的波特率为同步波特率并回复握手信息给模块B,开始正常工作。进入步骤8。
[0030]7 )T1超时,模块A切换到另一个波特率,并使能接收引脚的输入中断回到步骤3。[0031 ]8)模块B收到指定字符,完成自适应的同步,至此流程结束。
[0032]最后有必要在此指出的是:以上所述仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
【主权项】
1.一种串口的软件自适应波特率方法,其特征在于:发送方先在一个波特率上间隔重 复发送预定的数据,若接收方在一段时间内没有收到预定的数据,则接收方切换一个波特 率,继续在所述一段时间内等待接收预定的数据,直至接收方在所述一段时间内收到预定 的数据后,回复握手信号完成自适应波特率的同步,之后双方使用固定的同步后的波特率 进行通{目。2.根据权利要求1所述的串口的软件自适应波特率方法,其特征在于:使用串口的接收 引脚电平跳变中断作为触发条件,在中断触发后,启动一个定时器,在定时器到期前如果收 到了事先约定好的数据则认为同步上波特率;如果在定时器到期时没有收到事先约定好的 数据,则停止定时器,并切换到下一波特率,再次等待电平中断并接受数据。3.根据权利要求2所述的串口的软件自适应波特率方法,其特征在于:所述定时器为 50ms 〇4.根据权利要求1所述的串口的软件自适应波特率方法,其特征在于:所述波特率包括 9600,19200,38400,57600 以及 115200bps。5.根据权利要求1所述的串口的软件自适应波特率方法,其特征在于:所述预定的数据 为一个或者几个字符。
【文档编号】G06F13/42GK106095712SQ201610375092
【公开日】2016年11月9日
【申请日】2016年5月31日
【发明人】白园飞, 高飞, 韦钰
【申请人】上海工程技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1