异步通信和同步通信的区别

同步就是你叫我去吃饭,我听到了就和你去吃饭;
如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

同步是阻塞模式,异步是非阻塞模式。

其中SPI IIC为同步通信  UART为异步通信在串行通信中,由于是一位一位地进行数据传送。为了把每个字节区别开来,需要收发双方在传送数据的串行信息流中,加入一些标记信号位。在数据中根据所添加的标记信号位的不同方式,分成同步通信和异步通信两种。 1.“异步通信”是一种很常用的通信方式(效率较低)异步通信在发送字符时,发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。所传送的数据以字节为单位。每个字节前加上一位起始位,每个字节的后面加上停止位。好处:异步通信的好处是通信设备简单、便宜,但传输效率较低。 2.“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。收发双方不停地发送和接收连续的同步比特流。一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。同步通信是把所传送的数据以多个字节(100字节以上)为单位,在其前后添加标志。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

我们都知道数据通讯就是两个通讯主体之间发送、接收数字信号。假设要发送以下数据:12,23,34,45,56,67,78,89。接收方要正确接收这些数据,就必须知道数据什么时候开始发送,什么时候结束,要不然,可能会将数据接收成22,33,44,55,66,77,88。

对于同步通讯协议,发送方在发送数据之前先发出一个特殊的电信号,让接收方准备好接收数据,然后发送方就将以上数据全部连续发出,发送完毕后,再发送一个特殊的电信号表示数据发送结束。我们可以用以下图表示同步信号通讯。

同步和异步通信区别分析与总结

数据包

然后,接收方按照事先约定,即每两位一个数值,将数据包分成一个个数值。 

对于异步通讯协议,发送方每发送一个数据都要发一“开始”标志,每个数据发送结束后都发出一个“结束”标志。用下图表示异步通讯信号:

因此,POS通讯中的同步、异步是两种不同的通讯协议,它是信号发送方和信号接收方的一种约定。通信过程中,同步信号的作用非常重要,尤其对于串行方式的数据通信。同步信号的作用简单讲有两个作用,1是“尺子”的作用,用于丈量一个比特的宽度;2是决定丈量的“起点”位置。收发双方必须采用相同的“尺子”,从相同的“起点”开始丈量数据线上的电平变化,才能保证数据通信的正确。

因此,任何方式的串行通信,同步的过程必须有,也就是说通信双方必须保持“同步”。 我们看最典型的SPI、I2C,在这两种方式中,都专门有一个CLK信号线,由通信的一方产生一个CLK,通过CLK信号线传到另一方,双方就就按这个CLK的控制工作,CLK的宽度就是一个数据位的宽度,而CLK的上升或下降沿,就是“起点”标志。这种在通信过程中明显有个CLK线专门传送同步信号的方式,就是同步通信。同步通信由于有专用的CLK线控制,因此通信双方比较容易实现“同步”,因此速度比较快。但是对于长距离的通信,同步方式就不行了,1是由于需要专门一个信号线,成本提高。2是通信线越长,上面的干扰就越多,通信的速度也上不去。因此同步方式多是作为同一PCB板上芯片级之间的通信接口使用。而长距离通信多使用“异步”通信方式,这里的“异步”不是指通信双方不需要同步,而是指通信双方之间不使用专用的同步信号线传送CLK,而是各自仅依赖于自己的系统时钟(这个就是异步的!),再根据约定的规程,调节自己的“步伐”达到双方的同步。同步通信通常要比异步通信快速得多。接收方不必对每个字符进行开始和停止的操作。一旦检测到帧同步字符,它就在接下来的数据到达时接收它们。另外,同步通信的开销也比较少。例如,一个典型的帧可能有500字节(即4000比特)的数据,其中可能只包含100比特的开销。这时,增加的比特位使通信的比特总数增加2.5%,这与异步通信中25 %的增值要小得多。随着数据帧中实际数据比特位的增加,开销比特所占的百分比将相应地减少。但是,数据比特位越长,缓存数据所需要的缓冲区也越大,这就限制了一个帧的大小。另外,帧越大,它占据通信媒体的连续时间也越长。在极端的情况下,这将导致其他用户等得太久。

如果掌握这些最基本的概念,那么你能了解和面对通信中出现的问题,找到解决办法。比如对于UART的通信,你就知道为什么要规定双方要采用相同的帧结构,波特率了,如果设置错误会导致什么现象?而此时对双方的系统时钟不仅要求要更加准确和稳定,而且还要使用11.0592这些特殊的晶体,如果使用12M晶体,会产生什么后果等等。

最后总结一下1,异步通信是面向字符的通信,而同步通信是面向比特的通信。2,异步通信的单位是字符而同步通信的单位是桢。3,异步通信通过字符起止的开始和停止码抓住再同步的机会,而同步通信则是以数据中抽取同步信息。4,异步通信对时序的要求较低,同步通信往往通过特定的时钟线路协调时序。5,异步通信相对于同步通信效率较低。

原文地址:https://www.cnblogs.com/DXGG-Bond/p/11877188.html