串行通信与协议

问题:

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张图片

 

 

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

 

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

 

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

 

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

 

2、 同步通信

 

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

 

 

 

 

串行通信与协议_第2张图片

 

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

 

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时间(一个数据时间)在每个数据位的中间点采样。

 

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

 

你可能感兴趣的:(开拓视野,相关科技)