我是靠谱客的博主 笑点低金鱼,最近开发中收集的这篇文章主要介绍串行通信与协议下文给出了具体的异步串行和同步串行通信原理:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题:

1.异步传输Tclk和Rclk的频率关系是事先约定的,这个是属于协议保证

2.假如Tclk=16a MHz,Rclk=64a MHz,并不是每个bit Rclk采样4次,而是经过startBit同步找到中间稳定时间后每隔4个Rclk时间采样一次

3.假设Tx端发送数据过程中断开串口,再重新连接串口,此时Rx的接收数据的有错误或者丢帧问题,这些问题通过传输协议重传或者自行纠错

a.手动重传:比如PC串口发送数据到开发板失败,可以手动重传

b.自动重传:比如属于串行通信的Ethernet的RJ45 在TCP/IP协议下会要求Tx自动重传

以上这些错误或丢帧都和异步传输的异步电路没关系,由协议保证的正确性

4.异步传输的异步电路只保证接收端在稳定时刻采样数据,不能保证数据的正确性

5.异步串行的波特率是必须要事先约定的,这个和频率也有关系

下文给出了具体的异步串行和同步串行通信原理:

摘抄自https://blog.csdn.net/cs74184235/article/details/48438727

一:异步通信和同步通信
 

串行通信进行数据传送时是将要传送的数据按二进制位,依据一定的顺序逐位发送到接收方。其有两种通信方式:

 

1、 异步通信

 

异步通信是我们最常采用的通信方式,我们后面的例子都是采用的异步通信方式。异步通信采用固定的通信格式,数据以相同的帧格式传送。如图7-3所示,每一帧由始位数据位奇偶校验位停止位组成。

 

 

 

在通信线上没有数据传送时处于逻辑“1”状态。当发送设备发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据信号。因此,起始位所起的作用就是表示字符传送开始。

 

起始位后面紧接着的是数据位,它可以是5位、6位、7位、或8位数据传送时,低位在前。

 

奇偶校验位用于数据传送过程中的数据检错,数据通信时通信双方必须约定一致的奇偶校验方式。就数据传送而言,奇偶校验位是冗余位,但它表示数据的一种性质。也有的不要校验位。

 

在奇偶校验位或数据位后紧接的是停止位,停止位可以是一位、也可以是1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕,同时,也为接收下一字符作好准备。若停止位后不是紧接着传送下一个字符,则让线路保持为“1”。“1”表示空闲位,线路处于等待状态。存在空闲位是异步通信的特性之一。

 

2、 同步通信

 

同步通信时,通信双方共用一个时钟,这是同步通信区分于异步通信的最显著的特点。在异步通信中,每个字符要用起始位和停止位作为字符开始和结束的标志,以致占用了时间。所以在数据块传送时,为提高通信速度,常去掉这些标志,而采用同步通信。同步通信中,数据开始传送前用同步字符来指示(常约定1~2个),并由时钟来实现发送端和接收端的同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到一块数据传送完毕。同步传送时,字符之间没有间隙,也不要起始位和停止位,仅在数据开始时用同步字符SYNC来指示,其数据格式见图7-4。

 

 

 

 

 

同步通信和异步通信相比有以下特点:

 

1.以同步字符作为传送的开始,从而使收发双方取得同步。

 

2.每位占用的时间相等。

 

3.字符数据之间不允许有空位,当线路空闲或没字符可发时,发送同步字符

同步字符的插入可以是单同步字符或双同步字符,如图7-4所示同步字符也可以由用户约定,当然也可以采用ASCII码中规定的SYN代码,即16H。

在同步传送时,要求用时钟来实现发送端和接收端之间的同步。为了保证接收正确无误,发送方除了传送数据外,还要传送同步时钟。

同步通信虽然可以提高传送速度,可达56Kb/s或更高,但实现起来颇为复杂,因此实际较少使用。

 

 波特率和接收发送时钟

 

1. 波特率(Baud rate

 

波特率是指数据传送时,每秒传送数据二进制代码的位数,它的单位是位/秒(b/s)。1波特就是一位每秒。假设数据传送速率是每秒120字符,而每个字符格式包括10个代码位(1个起始位、一个终止位、8个数据位),这时传送的波特率为:

 

10× 120 = 1200b/s

 

位传送时间宽度Td=波特率的倒数,则上式中的Td=1/1200s=0.883ms。

 

在异步串行通信中,接收设备和发送设备保持相同的传送波特率,并以每个字符数据的起始位与发送设备保持同步。起始位。数据位。奇偶位和停止位的约定,在同一次传送过程中必须保持一致,这样才能成功的传送数据。

 

2.接收/发送时钟

 

二进制数据系列在串行传送过程中以数字信号波形的形式出现。不论接收还是发送,都必须有时钟信号对传送的数据进行定位。接收/发送时钟就是用来控制通信设备接收/发送字符数据速度的,该时钟信号通常由外部时钟电路产生。

 

在发送数据时,发送器在发送时钟的下降沿将移位寄存器的数据串行移位输出;在接收数据时,接收器在接收时钟的上升沿对接收数据采样,进行数据位检测,

如图7-5所示。

 

 

 

 

 

 

 

 

 

接收/发送时钟频率与波特率有如下关系:

 

收/发时钟频率 = n × 收/发波特率

n=1,16,64

 

在同步传送方式,必须取n=1,即接收/发送时钟的频率等于收/发波特率。在异步传送方式,n=1,16,64,即可以选择接收/发送时钟频率是波特率的1,16,64倍。因此可由要求的传送波特率及所选择的倍数n来确定接收/发送时钟的频率。

 

例如,若要求数据传送的波特率为300Baud,则

接收/发送时钟频率=300Hz(n=1)

接收/发送时钟频率=4800Hz(n=16)

接收/发送时钟频率=19.2kHz(n=64)

 

接收/发送时钟的周期Tc与传送的数据位宽之间的关系是:

 

Tc= Td / n

 

若取n=16,那么异步传送接收数据实现同步的过程如下:接收器在每一个接收时钟的上升沿采样接收数据线,当发现接收数据线出现低电平时就认为是起始位的开始,以后若在连续撤8个时钟周期(因n=16,故Td=16Tc)内检测到接收数据线仍保持低电平,则确定它为起始位(不是干扰信号)。通过这种方法,不仅能够排除接收线上的噪声干扰,识别假起始位,而且能够相当精确的确定起始位的中间点,从而提供一个正确的时间基准。从这个基准算起,每隔16Tc采样一次数据线,作为输入数据。一般来说,从接收数据线检测到一个下降沿开始,若其低电平能保持n/2Tc(半位时间),则确定为起始位,其后每隔nTc时间(一个数据时间)在每个数据位的中间点采样。

 

由此可见,接收/发送时钟对于收/发双方之间的数据传输达到同步是至关重要的

 

最后

以上就是笑点低金鱼为你收集整理的串行通信与协议下文给出了具体的异步串行和同步串行通信原理:的全部内容,希望文章能够帮你解决串行通信与协议下文给出了具体的异步串行和同步串行通信原理:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部