以下是對常用電子通信接口及通信協議的總結 ↓
通信
何為通信?在英文中,通信用Communication表示,這個詞也有交流的意思。實際上,通信和交流確實是一樣的意思。不過在漢語中,交流常用來表示人與人之間的交流;而通信一般用於比較專業正式的場合,也就是所謂的術語。
人與人之間的交流,是信息交換的過程;微機系統或模塊之間的通信,就是數據傳輸的過程了。
接口
人在用語言交談時,需要用嘴說話,用耳朵聽,通過空氣來傳播。信息的傳遞依賴嘴巴和耳朵來進行發送和接收。
微機系統的通信,則利用電、光等媒介。最常用的是電,表現在數字電路中,就是高低電平的變化。單片機的IO口能實現高低電平的收發,認為它是一種通信接口。接口是通信所依賴的實體。
信號
模擬信號(analogsignal)和數字信號(digital signal)
任何的信息都可以用模擬信號來表達。
模擬信號是連續而平滑的信號,是傳感器直接采集的、不加任何處理(采樣、濾波)的自然界中的信號,即自然界中的信號絕大多數都是模擬信號(例如連續變化的電流、人類說話的聲音等)。
模擬信號就是把實際的物理值模擬成相應的電信號值,呈現該物理值的信號變化。
但是模擬信號對硬件的靈敏度要求高,因為表現的復雜性,也導致容易變形。
而數字信號呈現為跳變離散的信號,僅取值有限個離散數值,比如二進制編碼就是一種數字信號。
所以數字信號:1、實現了高度保真,在傳輸和存儲的時候不容易變形。2、對硬件的要求低,不需要太精確。
協議
人在說話時,通過聲帶振動、口型的變化發出不同的聲音。這些聲音按照一定的規則,承載了我們所要表達的思想和信息,這套規則稱為語言。兩個人對話,需要使用兩個人都能理解的語言進行,一個只懂中文和另一個只懂英文的人,根本沒法用語言交流(當然可以用其他方式,比如面部表情、肢體語言等)。
同樣,微機系統通信時,也要有這樣一套雙方都遵從的規定,而這個規定被稱為協議。通信協議和接口都可以有多種,並且兩者之間存在一定的關聯。
接口的種類
在微機系統中,為了更快速、更准確、更方便的傳輸數據,往往會有各種接口。
數字接口/模擬接口
這里主要討論電子形式的接口。可分為數字接口和模擬接口,數字接口用二進制高低電平表示數據,模擬接口則可以用電壓電流表示信息。模擬形式的接口,最常見的就是音頻接口,也就是耳機插座。數字形式的接口,例如我們熟悉的USB接口,前面提到單片機程序燒寫所用的串口等都是。數字接口又有很多分類,下面進行介紹。
串行口/並行口
數字接口傳輸的是二進制數據,通常每8位二進制數字組成一個字節。並行口用八根線同時傳輸8位數據;而串行口則一位一位的傳輸。每隔一段時間,接口上的電平按照要傳輸的下一位數據改變。
同樣的電平切換時間間隔下,顯然並行口更快。早期技術不夠,很多設備使用並行口通信以提高速度,例如並口打印機、並口的IDE硬盤等。后來技術進步了,串行口傳輸速度提上去了,由於接線少,更加方便可靠,並行口就逐步被淘汰了,USB就是串行口。
備注:此處“行”的發音和“行走”中“行”的發音一致。
一、物理層與協議層
對於通信協議,按分層的方式去理解
物理層規定通訊系統中具有機械、電子功能部分的特性,確保原始數據在物理媒體的傳輸。
協議層主要規定通訊邏輯,統一收發雙方的數據打包、解包標准。
二、串行通信與並行通信
(1)、 串行、並行主要是考慮通信線的根數,就是發送方和接收方同時可以傳遞的信息量的多少
(2)、在電平信號下, 1 根參考電平線+1 根信號線可以傳遞 1 位二進制;如果我們有 3根線(2 根信號線+1 根參考線)就可以同時發送 2 位二進制;如果想同時發送 8 位二進制就需要 9 根線。
(3)、在差分信號下, 2 根線(彼此差分)可以同時發送 1 位二進制;如果需要同時發送 8 位二進制,需要 16 根線。
總結:並行通信比串行通信要快,但是需要的信號線較多,串行通信速度較慢,但成本低。在實際應用中,串行通信比並行通信用的更為廣泛
三、全雙工與半雙工通訊
根據數據通訊的方向,通訊又分為全雙工、半雙工及單工通訊,它們主要以信道的方向來區分。
全雙工:在同一時刻,兩個設備之間可以同時收發數據;典型的例子,電話
半雙工:兩個設備之間可以收發數據,但不能在同一時刻進行;典型的的例子,對講機
單工:在任何時刻都只能進行一個方向的通訊,即一個固定為發送設備,另一個固定為接收設備;典型的例子,Call機
四、同步通信與異步通信
根據通訊的數據同步方式,又分為同步和異步兩種,可以根據通訊過程中是否有使用到時鍾信號進行簡單的區分。
1、同步通信中,通信雙方按照同意節拍工作,一般需要發送放給接收方發送信息的同時發送時鍾信號。同步通信用在通信雙方信息交換頻率固定,或經常通信時。
2、異步通信又叫異步通知。在通信雙方頻率不固定時適合用異步通信。發送在發送信息時會首先給接收方一個起始信號,接收方收到起始信號之后,就知道后面的是有效信息,知道發送放發過來的結束信號標志才停止接収。
五、電平信號與差分信號(1)、電平信號和差分信號是用來描述通信線路傳輸方式的。也就是說如何在通信線路上表達1 和 0.
(2)、電平信號的傳輸線中有一個參考電平線(一般是 GND),然后信號線上的信號值是由信號線電平和參考電平線的電壓差決定。
(3)、差分信號的傳輸線中沒有參考電平,所有都是信號線。然后 1 和 0 的表達靠信號線之間的電壓差。
總結:電平信號的 2 根通信線之間的電平差異容易受到干擾,傳輸容易失敗;差分信號不容易受到干擾因此傳輸質量比較穩定,現代通信一般都使用差分信號,電平信號幾乎沒有了。
總結 2:看起來似乎相同根數的通信線下,電平信號要比差分信號要快;但是實際還是差分信號快,因為差分信號抗干擾能力強,因此 1 個發送周期更短。
六、通信速率
衡量通訊性能的一個非常重要的參數就是通訊速率,通常以比特率(Bitrate)來表示,即每秒鍾傳輸的二進制位數,單位為比特每秒(bit/s)。
模擬接口/硬件接口
在51單片機中,傳輸數據主要利用32個IO口管腳。作為數字接口,串口以及后面要介紹的I2C等,本質都是通過IO口的高低電平實現的。如果對串口的協議有了解,可以給單片機寫程序,將任意兩個IO口做成串口,和電腦進行通信。但是事實上用到串口的時候,很少有人會這么做。
用程序實現串口的方法,一般叫做模擬串口,或者軟件串口;而實際上常用到的是硬件串口。串口是一種很基本的接口,單片機一般都有硬件串口。
使用軟件模擬串口需要消耗很多CPU資源(也就是說CPU需要花很多時間處理串口相關的數據收發工作)。
而硬件串口根據串口協議設計好並集成在單片機中,也就是一個模塊,大大簡化了串口通信的軟件編程。串口發送數據需要一位一位的進行,有了硬件串口,在軟件上只需把要發送的一個字節數據放到硬件串口相關的寄存器中,硬件就會自動一位一位的把數據發送出去。CPU的全部工作就是執行軟件程序,這樣就大大減輕了CPU的負擔。接收數據也是類似的道理。
這里又體現了模塊化設計中模塊可代換的特點,甚至是軟硬件之間也可以互相代換或補償。讀者或許對此感到不可思議,學到原理篇就能慢慢理解這里的原因了。
這里主要討論電子形式的接口。可分為數字接口和模擬接口,數字接口用二進制高低電平表示數據,模擬接口則可以用電壓電流表示信息。模擬形式的接口,最常見的就是音頻接口,也就是耳機插座。數字形式的接口,例如我們熟悉的USB接口,前面提到單片機程序燒寫所用的串口等都是。數字接口又有很多分類,下面進行介紹。
包括IIC、SPI等等協議都是建立在數字接口上的,而模擬接口是大自然的信號用電壓電流等模擬出來的波形(就像聲音)然后通過ADC及算法轉化成數字信號存儲起來(二進制)
GPIO是指通用I/O接口:即使用通用協議的通用接口,由你自己去實現一個協議,比如流水燈。
ADC/DAC 模數/數模轉換器
既然接口有數字和模擬形式的,那么他們之間也應該能互相轉換。例如電腦聽音樂時,CPU、存儲器都是數字器件,結果卻能輸出模擬的聲音信號。
能把模擬信號轉換成數字信號的器件叫做模數轉換器(ADC=Analog To Digital Converter),反過來,數字轉模擬就是數模轉換器了(DAC=Digital-to-Analog Converter)。
ADC/DAC也是兩種常見的微機系統模塊。在STC89C52RC單片機中沒有內置的ADC/DAC,但是可以使用外置的轉換芯片,而在STC的其他一些型號51單片機或430等單片機中往往會有內置的轉換模塊。
通信手段
單片機常見片上通信協議
單片機的片上資源有多種通信方式,常用的如IIC、SPI、UART/USART、CAN,甚至高端一點的還具有以太網和USB通信、藍牙等等。這么多的通信方式,為什么不統一成一種的?因為每種通信方式所出現的時間不同,使用場合不同,用戶的要求和方案也不同,無法做到一種通信協議覆蓋所有的應用環境和客戶群體。下面分析一下這些通信協議的應用情況。
一、UART和USART
分別名為通用異步收發器和通用同步異步收發器(具體后文會進行詳解),速率不快,可全雙工,結構上一般由波特率產生器、UART/USART發送器、UART/USART接收器組成,硬件上兩線,一收一發。
二、I2C(IIC)
雙向、兩線、串行、多主控接口標准。速率不快,半雙工,同步接口,具有總線仲裁機制,非常適合器件間近距離經常性數據通信,可實現設備組網。
總線仲裁:線與,誰發0就仲裁成功。
三、SPI
高速同步串行口,高速,可全雙工,收發獨立,同步接口,可實現多個SPI設備互聯,硬件3~4線;也是所有基於SPI的設備公共有的,他們是SDI(數據輸入),SDO(數據輸出),SCK(時鍾),CS(片選)。
四、USB
注:USB廣義上也屬於串行通信
高速同步串行口,高速,可全雙工,由主機、hub、設備組成。設備可以與下級的hub相連構成星型結構。一條USB的傳輸線分別由地線、電源線、D+、D-四條線構成,D+、D-是差分輸入線,它使用的是3.3V的電壓。數據在USB線里傳送是由低位到高位發送的。
五、CAN
采用雙線傳輸,兩根導線分別作為CAN_H、CAN_L,並在終端配備有120Ω的電阻。收到總線信號時,CAN收發器將信號電平轉化為邏輯狀態,即CAN_H與CAN_L電平相減后,得到一個插值電平。各種干擾在兩根導線上的作用相同,相減后的插值電平可以濾過這些干擾。
六、DMA
DMA是指外部設備不通過CPU而直接與系統內存交換數據的接口技術。這樣數據的傳送速度就取決於存儲器和外設工作速度。
通常系統總線是由CPU管理的,在DMA方式時,就希望CPU把這些總線讓出來,即CPU連到這些總線上的線處於第三態(高阻狀態),而由DMA控制器接管,控制傳送的字節數,判斷DMA是否結束,以及發出DMA結束信號。
IIC和SPI多用在芯片級近距離通訊
IIC和SPI是應用非常廣泛的通訊方式,主要用在芯片級進行短距離通信,如EEPROM存儲芯片AT24C02就是IIC通訊的。這兩種只適合長度為cm級別的通信。IIC具有兩根總線,分別為SDA和SCL,SPI有三線和四線通訊方法,這兩種方式主要用做芯片級的數據傳輸。不適合遠距離傳輸。
CAN總線適合遠距離傳輸
CAN總線在汽車工業和工控行業用的比較多,具有兩根線CAN_H和CAN_L,可以進行km級別遠距離傳輸。CAN總線為主從式通訊方式,一個主節點可以掛接多個從節點,從節點的ID標識符可以用來判斷優先級,CAN總線具有仲裁機制。從節點故障推出后,不會影響其他設備的正常工作。
UART可以擴展出其他通信方式
UART也就是我們常說的串口,串口幾乎為單片機的標配。單純的UART只適合於近距離的通信,很多芯片也具有UART,所以可以用作芯片級的數據交換。除此之外,UART通過電平轉換芯片可以擴展出其他的通信方式,如RS232、RS485以及CAN通訊等。
以太網通信
參考百度百科:https://baike.baidu.com/item/%E4%BB%A5%E5%A4%AA%E7%BD%91%E9%80%9A%E4%BF%A1/21868211?fr=aladdin
高級通信接口 (無線通信)(局域網)
無線通信技術有很多,這里就不一一列舉了,我們這里要講的是紅外、藍牙、WIFI、NFC這四種無線通信的優劣及未來的發展趨勢。
從上表比較分析:
1、紅外相比其他幾種無線通信技術,無論是在速度、安全性、使用體驗等方面都沒有什么優勢,除了家電遙控領域有可能會沿用,在未來必將被淘汰。然而隨着物聯網的普及,紅外在家電遙控領域將失去最后一道堡壘。作為無線局域網的傳輸方式,紅外線方式的最大優點是不受無線電干擾,且它的使用不受國家無線管理委員會的限制。但是,紅外線對非透明物體的透過性較差,導致傳輸距離受限制,也正是這個原因可以用於紅外避障等地方。
參考:紅外通信協議
2、最近幾年藍牙技術日趨成熟,並逐步取代紅外,從筆記本到智能手機,現在家電也逐漸支持藍牙遙控;盡管WIFI的出現很大程度上削弱了藍牙的發展,但是隨着物聯網的發展(物聯網發展初期至成熟期,物聯網發展成熟以后會逐漸被WIFI取代),藍牙將迎來新的輝煌。
3、WIFI的出現,解決了大數據量傳輸的問題,使得移動設備能夠流暢得獲取豐富的網絡資源;但是由於成本比較高,實現比較復雜,在今后相當長一段時間內,在物聯網領域還不能夠完全取代藍牙。
參考:WiFi接入原理
4、至於NFC,由於其安全性高,將大規模使用在門禁、支付、公交等領域,有能力取代現有的一切刷卡領域。
其他網絡通信方式
移動網絡:2/3/4/5G;局域網:wifi;個人局域網:bluetooth;低功耗廣域網:NB-loT、LoRa、ZigBee