CN103577378A - 一种全双工异步串行通信方法 - Google Patents
一种全双工异步串行通信方法 Download PDFInfo
- Publication number
- CN103577378A CN103577378A CN201310574696.4A CN201310574696A CN103577378A CN 103577378 A CN103577378 A CN 103577378A CN 201310574696 A CN201310574696 A CN 201310574696A CN 103577378 A CN103577378 A CN 103577378A
- Authority
- CN
- China
- Prior art keywords
- data
- serial communication
- communication method
- clock
- duplex asynchronous
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明涉及通信领域,尤其涉及一种全双工异步串行通信方法,所述方法包括以下步骤,步骤1:对两个微处理器进行预通信,进行第一次时钟检测;步骤2:串行通信时,初始化两个微处理器;把两个微处理器发送和接收的数据存储到数据存储器中,发送和接收数据与McBSP的发送寄存器DXR和接收寄存器DDR之间的数据传输通过DMA通道完成;步骤3:发送数据,在发送数据时,待发字符被打包成适于串行通信接收的数据格式;步骤4:接收数据,对接收的数据流进行过采样和纠错,并进行第二次时钟检测。本发明在不增加硬件成本的前提下,提高CPU的工作效率,减小信号之间的时钟偏移,使串行通信更加稳定,高效,成本低廉,简单且容易实现。
Description
技术领域
本发明涉及电通信技术领域,尤其涉及一种全双工异步串行通信方法。
背景技术
随着多微机系统的广泛应用和计算机网络技术的普及,微处理器器之间的通信显的愈来愈重要,通信有并行通信和串行通信两种方式,在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。
目前,两个不同微处理器器实现串行通信的方法一般有两种,一是两个微处理器器通过各自的CPU以及异步串行口进行异步串行通信;另一种是采用外接串行通信芯片,这种方法编程相对简单,但增加了硬件成本和设计成本,所以第一种简单的通信方式还是得到了很大的应用,但是随着微处理器处理的任务越来越多,速度越来越快,这种简单的异步串行口通信由于每个字节的处理都需要CPU的处理,严重影响了微处理器的效率,而且现在的微处理器时钟都为高速时钟,晶振或多或少都有误差,加上其他一些物理因素,比如信号线的延迟以及画版等问题,经过分频或者倍频后都无法保证串行通信的精确同步,容易造成串行通信中的信号偏移,时钟偏移具有累计效应,后果是使采样混乱,更严重的会造成系统死机。
发明内容
针对现有技术中存在的缺陷或不足,本发明所要解决的技术问题是:提供一种稳定的全双工异步串行通信方法,实现高速微处理器之间的准确通信。
本发明采取的技术方案为提供一种所述方法包括以下步骤,
步骤1:对两个微处理器进行预通信,进行第一次时钟检测;检测数据是否正确,确定采样时钟的快慢, 还需统计出开始接收数据到数据接收错误所需要的时间;
步骤2:串行通信时,初始化两个微处理器;把两个微处理器发送和接收的数据存储到CPU的数据存储器中;
步骤3:发送数据,在发送数据时将待发字符被打包成适于串行通信接收的数据格式;然后通过DMA通道传输到多通道缓冲串行口(McBSP)的发送寄存器DXR中;
步骤4:接收数据,对接收的数据流进行过采样和纠错,并进行第二次时钟检测;然后通过DMA通道传输到多通道缓冲串行口(McBSP)的接收寄存器DDR中。
作为本发明的进一步改进,第一次时钟检测包括以下步骤:
步骤11:每隔一定的周期,对接收的数据进行检测;
步骤12:比较起始字符和停止字符或者其它检测方法,判断是否为预先设置的字符;
步骤13:当接收的数据不为预先设置的字符时,统计出这段时间,这段时间就是时钟偏移造成数据不稳定的时间;
步骤14:每隔这段时间提前或者延后采样时钟。
作为本发明的进一步改进,第二次时钟检测为通过检测奇偶校验位或者其它检测方法确保数据的正确性,再次提前或者延后采样时钟。
作为本发明的进一步改进,初始化两个微处理器包括以下步骤,
步骤21:配置锁相环,设置中断向量表;
步骤22:清中断,设置McBSP,配置DMA;
步骤23:打包待发送数据,打开启动DMA;
步骤24:启动McBSP发送和接受模式,启动同步;
步骤25:响应中断,处理接收数据。
作为本发明的进一步改进,所述两个微处理器电压不同,需进行电平转换。
作为本发明的进一步改进,所述微处理器包括CPU、DMA控制器和串行端口。
作为本发明的进一步改进,所述DMA控制器包括发送数据缓冲区、接收数据缓冲区、发送通道和接收通道。
作为本发明的进一步改进,所述过采样采用16倍过采样。
本发明的有益效果是:本发明设计一种全双工异步通信方法,在不增加硬件成本的前提下,提高CPU的工作效率,减小信号之间的时钟偏移,使串行通信更加稳定,高效,成本低廉,方法简单且容易实现。
附图说明
图1是本发明全双工异步通信方法串行通信程序设计流程图;
图2是本发明全双工异步通信方法理想串口时钟信号边沿与数据位边沿精确对应示意图;
图3是本发明全双工异步通信方法实际情况下产生的时钟偏移示意图;
图4是运用本发明全双工异步通信方法的系统示意图。
具体实施方式
下面结合附图说明及具体实施方式对本发明进一步说明。
如图1所示,本发明是这样实现的,一种高效稳定的全双工异步串行通信方法:简单来说就是利用McBSP(多通道缓冲串行口)和DMA(直接存储器访问)直接实现异步串行通信,然后对接收的数据流进行过采样,并使时钟偏移限制在一定范围之内,从而使串行通信更加稳定,CPU效率更高。
串行通信时,首先初始化两个微处理器,微处理器发送和接受的数据存储在数据存储器中,为了实现高速处理,减少CPU响应McBSP数据寄存器中断的次数。发送和接收数据与McBSP发送和接收寄存器DXR和DDR之间的数据传输通过DMA通道完成。
如以DMA通道1作为数据接收通道,DMA通道2作为数据发送通道。将通道1和2的同步事件分别设置为McBSP串口接收事件和串口发送事件,DMA通道1的源地址为McBSP的接收寄存器DRR地址,目的地址为数据存储器中存放接收数据变量地址;
以DMA通道2的源地址为数据存储器中待发的数据,目的地址为McBSP的DXR寄存器地址。每当McBSP接收到数据时,会触发DMA通道1将接收到的数据拷贝到微处理器数据存储器的相应位置,同时目的地址指针自动加1,发送数据时,DMA通道2将待发送数据拷贝到DXR,将数据依次发出。
发送数据时,待发字符被打包成适于串行通信接收的数据格式,如起始字符、数据包、停止字符、校验位。首先发送起始位,然后是数据位最低位,最后发送停止位。
接收数据时,进行16倍过采样,取过采样到每个16位二进制数据字的中间五位,若中间四位中1的个数不小于4,则表示收到当前的数据位为1;若中间四位中0的个数不少于4,则表示收到的串行通信数据位为0,否则认为数据传输出错。
由于时钟偏移具有累计效应,可以采取过采样,但这并不能彻底的遏制时钟偏移带来的危害,特别是微处理器的时钟频率越来越高,很小的时钟偏移就可能带来不可估量的伤害——使数据收发不稳定,严重情况下会使微处理器死机等。所以要彻底减小时钟偏移带来的危害,使串行通信更加稳定,就必须保证时钟偏移始终在预定的安全范围之内。所以在正式进行串行通信之前我们可以使两个微处理器进行预通信,在预通信中,我们可以通过检测数据的正确与否来确定采样时钟的快慢。通过预通信,还要统计出开始接收数据到数据接收错误所需要的时间,这样在正式通信时,我们可以通过预通信的实验结果每隔特定的时钟周期对采样时钟进行提前或者延后,使采样时钟的偏移始终处在安全范围之内。这样就可以有效地、高速的、稳定的实现串行通信。
由于时钟偏移具有累计效应,我们预先实验已经获知采样时钟是偏快还是偏慢,并且知道了使数据失效的时间,所以在进行串行通信时,每隔特定的时钟周期,提前或者延迟采样时钟。这样时钟偏移就始终处在安全范围之内。通过以上方法串行通信将会一直稳定的收发数据。但任何系统都会有意外情况,所以在最后还要加一个时钟检测部分,通过检测奇偶校验位或者其它检测方法确保数据的正确性,一旦数据出错,可以延迟或者提前采样时钟,将采样时钟的时钟偏移减小到安全范围之内。第一处时钟检测可以确保时钟偏移始终处在安全范围之内,第二处时钟检测可以遏制意外情况的发生。
如图2所示,为理想串口时钟信号边沿与数据位边沿精确对应。
如图3所示,为实际情况中存在的偏差,这说明串行通信存在时钟偏移的情况,这样容易使采样混乱,有时候还会使系统死机,一种有效的办法就是对接收数据进行过采样,如进行16倍过采样,取过采样到每个16位二进制数据字的中间五位,若中间四位中1的个数不小于4,则表示收到当前的数据位为1;若中间四位中0的个数不少于4,则表示收到的串行通信数据位为0,否则认为数据传输出错。为进一步减小时钟偏差,可以通过预先实验获知采样时钟是偏快还是偏慢,每隔一定的周期,对接收的数据进行检测,通过比较起始字符和停止字符或者其它检测方法,判断是否为预先设置的字符,当接收的数据不为预先设置的字符时,统计出这段时间,这段时间就是时钟偏移造成数据不稳定的时间,在以后的串行通信中,我们可以每隔这段时间提前或者延后采样时钟,确保时钟偏移始终在安全范围之内。
如图4所示,一种本发明方法的全双工异步通信系统,包括微处理器A和微处理器B,所述微处理器A包括第一CPU和串行端口A,所述微处理器B包括第二CPU、串行端口B及DMA,所述微处理器A与所述串行端口A进行互通信,所述串行端口A与所述串行端口B进行互通信,所述串行端口B与所述DMA进行互通信,所述DMA与所述微处理器B进行互通信;如果两个微处理器电压不同,还需要进行电平转换,在所述串行端口A与所述串行端口B还设置有电压转换电路,所述串行端口A与所述电压转换电路进行互通信,所述串行端口B与所述电压转换电路进行互通信。
这两个微处理器A和B之间有数据要进行通信,他们之间通过数据线来传输数据。微处理器A和B可以只一边采用DMA进行通信,另一边采用传统串行通信方法,当然,两边也可以同时采用本发明所示的方法。
微处理器B主要包括CPU、DMA控制器和串行端口,DMA控制器包括发送数据缓冲区、接收数据缓冲区、发送通道和接收通道。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (8)
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倍过采样。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310574696.4A CN103577378B (zh) | 2013-11-15 | 2013-11-15 | 一种全双工异步串行通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310574696.4A CN103577378B (zh) | 2013-11-15 | 2013-11-15 | 一种全双工异步串行通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577378A true CN103577378A (zh) | 2014-02-12 |
CN103577378B CN103577378B (zh) | 2016-09-07 |
Family
ID=50049189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310574696.4A Expired - Fee Related CN103577378B (zh) | 2013-11-15 | 2013-11-15 | 一种全双工异步串行通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577378B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005511A (zh) * | 2015-06-30 | 2015-10-28 | 宁波东海仪表水道有限公司 | 一种串行通信数据校验方法 |
CN110287073A (zh) * | 2019-06-27 | 2019-09-27 | 中国兵器工业集团第二一四研究所苏州研发中心 | 一种针对多种多个异步串行通信外设的测试装置及方法 |
CN111708291A (zh) * | 2020-05-28 | 2020-09-25 | 漳州科华技术有限责任公司 | 一种用于国产化芯片的dsp信息互传方法 |
CN111858450A (zh) * | 2020-07-23 | 2020-10-30 | 中国航空工业集团公司上海航空测控技术研究所 | 一种基于dsp同步串口的异步串行通信方法 |
CN112019319A (zh) * | 2020-08-25 | 2020-12-01 | 杰华特微电子(杭州)有限公司 | 一种数据信号同步传输的方法及设备 |
CN115037798A (zh) * | 2022-08-11 | 2022-09-09 | 成都金诺信高科技有限公司 | 一种时统报文数据包分发方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905716A (en) * | 1996-12-09 | 1999-05-18 | Ericsson, Inc. | Asynchronous full duplex communications over a single channel |
CN1581812A (zh) * | 2003-08-08 | 2005-02-16 | 中兴通讯股份有限公司 | 一种在atm dslam中实现以太网vdsl接入的装置 |
CN201604665U (zh) * | 2009-11-02 | 2010-10-13 | 北京全路通信信号研究设计院 | 一种列控中心通信接口设备 |
CN201665226U (zh) * | 2009-11-02 | 2010-12-08 | 北京全路通信信号研究设计院 | 一种列控中心主处理设备 |
CN101958785A (zh) * | 2009-07-17 | 2011-01-26 | 中国科学院沈阳计算技术研究所有限公司 | 基于传递时差的数控系统现场总线时间同步方法及装置 |
CN102999458A (zh) * | 2011-09-09 | 2013-03-27 | 中国航天科工集团第三研究院第八三五七研究所 | 高速智能串口芯片 |
-
2013
- 2013-11-15 CN CN201310574696.4A patent/CN103577378B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905716A (en) * | 1996-12-09 | 1999-05-18 | Ericsson, Inc. | Asynchronous full duplex communications over a single channel |
CN1581812A (zh) * | 2003-08-08 | 2005-02-16 | 中兴通讯股份有限公司 | 一种在atm dslam中实现以太网vdsl接入的装置 |
CN101958785A (zh) * | 2009-07-17 | 2011-01-26 | 中国科学院沈阳计算技术研究所有限公司 | 基于传递时差的数控系统现场总线时间同步方法及装置 |
CN201604665U (zh) * | 2009-11-02 | 2010-10-13 | 北京全路通信信号研究设计院 | 一种列控中心通信接口设备 |
CN201665226U (zh) * | 2009-11-02 | 2010-12-08 | 北京全路通信信号研究设计院 | 一种列控中心主处理设备 |
CN102999458A (zh) * | 2011-09-09 | 2013-03-27 | 中国航天科工集团第三研究院第八三五七研究所 | 高速智能串口芯片 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005511A (zh) * | 2015-06-30 | 2015-10-28 | 宁波东海仪表水道有限公司 | 一种串行通信数据校验方法 |
CN110287073A (zh) * | 2019-06-27 | 2019-09-27 | 中国兵器工业集团第二一四研究所苏州研发中心 | 一种针对多种多个异步串行通信外设的测试装置及方法 |
CN110287073B (zh) * | 2019-06-27 | 2023-03-24 | 中国兵器工业集团第二一四研究所苏州研发中心 | 一种针对多种多个异步串行通信外设的测试装置及方法 |
CN111708291A (zh) * | 2020-05-28 | 2020-09-25 | 漳州科华技术有限责任公司 | 一种用于国产化芯片的dsp信息互传方法 |
CN111708291B (zh) * | 2020-05-28 | 2021-10-01 | 漳州科华技术有限责任公司 | 一种用于国产化芯片的dsp信息互传方法 |
CN111858450A (zh) * | 2020-07-23 | 2020-10-30 | 中国航空工业集团公司上海航空测控技术研究所 | 一种基于dsp同步串口的异步串行通信方法 |
CN112019319A (zh) * | 2020-08-25 | 2020-12-01 | 杰华特微电子(杭州)有限公司 | 一种数据信号同步传输的方法及设备 |
CN115037798A (zh) * | 2022-08-11 | 2022-09-09 | 成都金诺信高科技有限公司 | 一种时统报文数据包分发方法 |
CN115037798B (zh) * | 2022-08-11 | 2022-12-27 | 成都金诺信高科技有限公司 | 一种时统报文数据包分发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103577378B (zh) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577378A (zh) | 一种全双工异步串行通信方法 | |
EP3412016B1 (en) | Scalable, high-efficiency, high-speed serialized interconnect | |
US9979432B2 (en) | Programmable distributed data processing in a serial link | |
CN102262572B (zh) | 一种带crc校验功能的iic总线接口控制器 | |
US7093061B2 (en) | FIFO module, deskew circuit and rate matching circuit having the same | |
CN102231143A (zh) | 一种安全可复用spi外围接口电路 | |
CN109857685A (zh) | 一种mpu与fpga扩展多串口的实现方法 | |
CN103916252A (zh) | 一种基于fpga的高带宽以太网ip核 | |
US9614704B2 (en) | Methods and apparatus to perform serial communications | |
US10230665B2 (en) | Hierarchical/lossless packet preemption to reduce latency jitter in flow-controlled packet-based networks | |
JP2004326151A (ja) | データ処理装置 | |
WO2014114146A1 (zh) | 时钟产生电路自校正系统及其校正方法 | |
US7499452B2 (en) | Self-healing link sequence counts within a circular buffer | |
CN102546033A (zh) | 采用脉冲调制结合串口方式实现的多机通信装置 | |
CN103107862B (zh) | 逻辑器件及其mdio数据发送方法 | |
CN101719858B (zh) | Can控制器的位时序的同步处理方法 | |
CN203659004U (zh) | 一种实现高速微处理器间准确通信的装置 | |
CN103346862B (zh) | 一种分级保护的片上网络数据传输装置及方法 | |
CN115004587B (zh) | 用于数据传输的位反转 | |
CN104063351B (zh) | 一种用于乒乓防冲突的高速复接器同步串行接口设计方法 | |
US9705620B2 (en) | Synchronization of endpoints using tunable latency | |
TW202311971A (zh) | 用於互連協定的資料處理的方法、控制器以及儲存裝置 | |
TW202310594A (zh) | 用於互連協定的錯誤處理的方法、控制器以及儲存裝置 | |
CN105589820B (zh) | 一种数据传输缓冲装置 | |
CN110232038A (zh) | 一种工控机用智能通讯串口装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160907 Termination date: 20201115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |