一种全双工异步串行通信方法

文档序号:7776679阅读:1061来源:国知局
一种全双工异步串行通信方法
【专利摘要】本发明涉及通信领域,尤其涉及一种全双工异步串行通信方法,所述方法包括以下步骤,步骤1:对两个微处理器进行预通信,进行第一次时钟检测;步骤2:串行通信时,初始化两个微处理器;把两个微处理器发送和接收的数据存储到数据存储器中,发送和接收数据与McBSP的发送寄存器DXR和接收寄存器DDR之间的数据传输通过DMA通道完成;步骤3:发送数据,在发送数据时,待发字符被打包成适于串行通信接收的数据格式;步骤4:接收数据,对接收的数据流进行过采样和纠错,并进行第二次时钟检测。本发明在不增加硬件成本的前提下,提高CPU的工作效率,减小信号之间的时钟偏移,使串行通信更加稳定,高效,成本低廉,简单且容易实现。
【专利说明】一种全双工异步串行通信方法
【技术领域】
[0001]本发明涉及电通信【技术领域】,尤其涉及一种全双工异步串行通信方法。
【背景技术】
[0002]随着多微机系统的广泛应用和计算机网络技术的普及,微处理器器之间的通信显 的愈来愈重要,通信有并行通信和串行通信两种方式,在多微机系统以及现代测控系统中 信息的交换多采用串行通信方式。
[0003]目前,两个不同微处理器器实现串行通信的方法一般有两种,一是两个微处理器 器通过各自的CPU以及异步串行口进行异步串行通信;另一种是采用外接串行通信芯片, 这种方法编程相对简单,但增加了硬件成本和设计成本,所以第一种简单的通信方式还是 得到了很大的应用,但是随着微处理器处理的任务越来越多,速度越来越快,这种简单的异 步串行口通信由于每个字节的处理都需要CPU的处理,严重影响了微处理器的效率,而且 现在的微处理器时钟都为高速时钟,晶振或多或少都有误差,加上其他一些物理因素,比如 信号线的延迟以及画版等问题,经过分频或者倍频后都无法保证串行通信的精确同步,容 易造成串行通信中的信号偏移,时钟偏移具有累计效应,后果是使采样混乱,更严重的会造 成系统死机。

【发明内容】

[0004]针对现有技术中存在的缺陷或不足,本发明所要解决的技术问题是:提供一种稳 定的全双工异步串行通信方法,实现高速微处理器之间的准确通信。
[0005]本发明采取的技术方案为提供一种所述方法包括以下步骤,
步骤1:对两个微处理器进行预通信,进行第一次时钟检测;检测数据是否正确,确定 采样时钟的快慢,还需统计出开始接收数据到数据接收错误所需要的时间;
步骤2:串行通信时,初始化两个微处理器;把两个微处理器发送和接收的数据存储到 CPU的数据存储器中;
步骤3:发送数据,在发送数据时将待发字符被打包成适于串行通信接收的数据格式; 然后通过DMA通道传输到多通道缓冲串行口(McBSP)的发送寄存器DXR中;
步骤4:接收数据,对接收的数据流进行过采样和纠错,并进行第二次时钟检测;然后 通过DMA通道传输到多通道缓冲串行口(McBSP)的接收寄存器DDR中。
[0006]作为本发明的进一步改进,第一次时钟检测包括以下步骤:
步骤11:每隔一定的周期,对接收的数据进行检测;
步骤12:比较起始字符和停止字符或者其它检测方法,判断是否为预先设置的字符; 步骤13:当接收的数据不为预先设置的字符时,统计出这段时间,这段时间就是时钟 偏移造成数据不稳定的时间;
步骤14:每隔这段时间提前或者延后采样时钟。
[0007]作为本发明的进一步改进,第二次时钟检测为通过检测奇偶校验位或者其它检测方法确保数据的正确性,再次提前或者延后采样时钟。
[0008]作为本发明的进一步改进,初始化两个微处理器包括以下步骤,
步骤21:配置锁相环,设置中断向量表;
步骤22:清中断,设置McBSP,配置DMA ;
步骤23:打包待发送数据,打开启动DMA ;
步骤24:启动McBSP发送和接受模式,启动同步;
步骤25:响应中断,处理接收数据。
[0009]作为本发明的进一步改进,所述两个微处理器电压不同,需进行电平转换。
[0010]作为本发明的进一步改进,所述微处理器包括CPU、DMA控制器和串行端口。
[0011]作为本发明的进一步改进,所述DMA控制器包括发送数据缓冲区、接收数据缓冲 区、发送通道和接收通道。
[0012]作为本发明的进一步改进,所述过采样采用16倍过采样。
[0013]本发明的有益效果是:本发明设计一种全双工异步通信方法,在不增加硬件成本 的如提下,提闻CPU的工作效率,减小"[目号之间的时钟偏移,使串行通彳目更加稳定,闻效,成 本低廉,方法简单且容易实现。
【专利附图】

【附图说明】
[0014]图1是本发明全双工异步通信方法串行通信程序设计流程图;
图2是本发明全双工异步通信方法理想串口时钟信号边沿与数据位边沿精确对应示 意图;
图3是本发明全双工异步通信方法实际情况下产生的时钟偏移示意图;
图4是运用本发明全双工异步通信方法的系统示意图。
【具体实施方式】
[0015]下面结合【专利附图】
附图
【附图说明】及【具体实施方式】对本发明进一步说明。
[0016]如图1所示,本发明是这样实现的,一种高效稳定的全双工异步串行通信方法:简 单来说就是利用McBSP (多通道缓冲串行口)和DMA (直接存储器访问)直接实现异步串行 通信,然后对接收的数据流进行过采样,并使时钟偏移限制在一定范围之内,从而使串行通 信更加稳定,CPU效率更高。
[0017]串行通信时,首先初始化两个微处理器,微处理器发送和接受的数据存储在数据 存储器中,为了实现高速处理,减少CPU响应McBSP数据寄存器中断的次数。发送和接收数 据与McBSP发送和接收寄存器DXR和DDR之间的数据传输通过DMA通道完成。
[0018]如以DMA通道I作为数据接收通道,DMA通道2作为数据发送通道。将通道I和2 的同步事件分别设置为McBSP串口接收事件和串口发送事件,DMA通道I的源地址为McBSP 的接收寄存器DRR地址,目的地址为数据存储器中存放接收数据变量地址;
以DMA通道2的源地址为数据存储器中待发的数据,目的地址为McBSP的DXR寄存器 地址。每当McBSP接收到数据时,会触发DMA通道I将接收到的数据拷贝到微处理器数据 存储器的相应位置,同时目的地址指针自动加1,发送数据时,DMA通道2将待发送数据拷贝 到DXR,将数据依次发出。[0019]发送数据时,待发字符被打包成适于串行通信接收的数据格式,如起始字符、数据包、停止字符、校验位。首先发送起始位,然后是数据位最低位,最后发送停止位。
[0020]接收数据时,进行16倍过采样,取过采样到每个16位二进制数据字的中间五位,若中间四位中I的个数不小于4,则表示收到当前的数据位为I ;若中间四位中O的个数不少于4,则表示收到的串行通信数据位为0,否则认为数据传输出错。
[0021]由于时钟偏移具有累计效应,可以采取过采样,但这并不能彻底的遏制时钟偏移带来的危害,特别是微处理器的时钟频率越来越高,很小的时钟偏移就可能带来不可估量的伤害一使数据收发不稳定,严重情况下会使微处理器死机等。所以要彻底减小时钟偏移带来的危害,使串行通信更加稳定,就必须保证时钟偏移始终在预定的安全范围之内。所以在正式进行串行通信之前我们可以使两个微处理器进行预通信,在预通信中,我们可以通过检测数据的正确与否来确定采样时钟的快慢。通过预通信,还要统计出开始接收数据到数据接收错误所需要的时间,这样在正式通信时,我们可以通过预通信的实验结果每隔特定的时钟周期对采样时钟进行提前或者延后,使采样时钟的偏移始终处在安全范围之内。这样就可以有效地、高速的、稳定的实现串行通信。
[0022]由于时钟偏移具有累计效应,我们预先实验已经获知采样时钟是偏快还是偏慢,并且知道了使数据失效的时间,所以在进行串行通信时,每隔特定的时钟周期,提前或者延迟采样时钟。这样时钟偏移就始终处在安全范围之内。通过以上方法串行通信将会一直稳定的收发数据。但任何系统都会有意外情况,所以在最后还要加一个时钟检测部分,通过检测奇偶校验位或者其它检测方法确保数据的正确性,一旦数据出错,可以延迟或者提前采样时钟,将采样时钟的时钟偏移减小到安全范围之内。第一处时钟检测可以确保时钟偏移始终处在安全范围之内,第二处时钟检测可以遏制意外情况的发生。
[0023]如图2所示,为理想串口时钟信号边沿与数据位边沿精确对应。
[0024]如图3所示,为实际情况中存在的偏差,这说明串行通信存在时钟偏移的情况,这样容易使采样混乱,有时候还会使系统死机,一种有效的办法就是对接收数据进行过采样,如进行16倍过采样,取过采样到每个16位二进制数据字的中间五位,若中间四位中I的个数不小于4,则表示收到当前的数据位为I ;若中间四位中O的个数不少于4,则表示收到的串行通信数据位为0,否则认为数据传输出错。为进一步减小时钟偏差,可以通过预先实验获知采样时钟是偏快还是偏慢,每隔一定的周期,对接收的数据进行检测,通过比较起始字符和停止字符或者其它检测方法,判断是否为预先设置的字符,当接收的数据不为预先设置的字符时,统计出这段时间,这段时间就是时钟偏移造成数据不稳定的时间,在以后的串行通信中,我们可以每隔这段时间提前或者延后采样时钟,确保时钟偏移始终在安全范围之内。
[0025]如图4所示,一种本发明方法的全双工异步通信系统,包括微处理器A和微处理器B,所述微处理器A包括第一 CPU和串行端口 A,所述微处理器B包括第二 CPU、串行端口 B及DMA,所述微处理器A与所述串行端口 A进行互通信,所述串行端口 A与所述串行端口 B进行互通信,所述串行端口 B与所述DMA进行互通信,所述DMA与所述微处理器B进行互通信;如果两个微处理器电压不同,还需要进行电平转换,在所述串行端口 A与所述串行端口B还设置有电压转换电路,所述串行端口 A与所述电压转换电路进行互通信,所述串行端口B与所述电压转换电路进行互通信。[0026]这两个微处理器A和B之间有数据要进行通信,他们之间通过数据线来传输数据。 微处理器A和B可以只一边采用DMA进行通信,另一边采用传统串行通信方法,当然,两边 也可以同时采用本发明所示的方法。
[0027]微处理器B主要包括CPU、DMA控制器和串行端口,DMA控制器包括发送数据缓冲 区、接收数据缓冲区、发送通道和接收通道。
[0028]以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定 本发明的具体实施只局限于这些说明。对于本发明所属【技术领域】的普通技术人员来说,在 不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的 保护范围。
【权利要求】
1.一种全双工异步串行通信方法,其特征在于:所述方法包括以下步骤, 步骤1:对两个微处理器进行预通信,进行第一次时钟检测; 步骤2:串行通信时,初始化两个微处理器;把两个微处理器发送和接收的数据存储到CPU的数据存储器中; 步骤3:发送数据,在发送数据时将待发字符被打包成适于串行通信接收的数据格式;然后通过DMA通道传输到多通道缓冲串行口(McBSP)的发送寄存器DXR中; 步骤4:接收数据,对接收的数据流进行过采样和纠错,并进行第二次时钟检测;然后通过DMA通道传输到多通道缓冲串行口(McBSP)的接收寄存器DDR中。
2.根据权利要求1所述全双工异步串行通信方法,其特征在于:第一次时钟检测包括以下步骤: 步骤11:每隔一定的周期,对接收的数据进行检测; 步骤12:比较起始字符和停止字符或者其它检测方法,判断是否为预先设置的字符;步骤13:当接收的数据不为预先设置的字符时,统计出这段时间,这段时间就是时钟偏移造成数据不稳定的时间; 步骤14:每隔这段时间提前或者延后采样时钟。
3.根据权利要求1所述全双工异步串行通信方法,其特征在于:第二次时钟检测为通过检测奇偶校验位或者其它检测方法确保数据的正确性,再次提前或者延后采样时钟。
4.根据权利要求1所述全双工异步串行通信方法,其特征在于:初始化两个微处理器包括以下步骤, 步骤21:配置锁相环,设置中断向量表; 步骤22:清中断,设置McBSP,配置DMA ; 步骤23:打包待发送数据,打开启动DMA ; 步骤24:启动McBSP发送和接受模式,启动同步; 步骤25:响应中断,处理接收数据。
5.根据权利要求1所述全双工异步串行通信方法,其特征在于:所述两个微处理器电压不同,需进行电平转换。
6.根据权利要求1所述全双工异步串行通信方法,其特征在于:所述微处理器包括CPU、DMA控制器和串行端口。
7.根据权利要求6所述全双工异步串行通信方法,其特征在于:所述DMA控制器包括发送数据缓冲区、接收数据缓冲区、发送通道和接收通道。
8.根据权利要求1所述全双工异步串行通信方法,其特征在于:所述过采样采用16倍过采样。
【文档编号】H04L5/14GK103577378SQ201310574696
【公开日】2014年2月12日 申请日期:2013年11月15日 优先权日:2013年11月15日
【发明者】杨军超, 周中华, 张驹鹏, 林镇葵, 王明江 申请人:哈尔滨工业大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1