異步通信和同步通信的區別


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

所以,要我請你吃飯就用同步的方法,要請我吃飯就用異步的方法,這樣你可以省錢。

同步是指:發送方發出數據后,等接收方發回響應以后才發下一個數據包的通訊方式。  
異步是指:發送方發出數據后,不等接收方發回響應,接着發送下個數據包的通訊方式。

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

其中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,異步通信相對於同步通信效率較低。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM