1.什么是串行通信?
串行通信(英語:Serial communication)是指在計算機總線或其他數據通道上,每次傳輸一個位元數據,並連續進行以上單次過程的通信方式。與之對應的是並行通信,它在串行端口上通過一次同時傳輸若干位元數據的方式進行通信。
簡言之:串行通訊就是排成一隊走,並行就是排成一列走,如下圖
2.同步串行通信(Synchronous serial communication)和異步串行通信(Asynchronous serial communication)
1)發送端在發送串行數據的同時,提供一個時鍾信號,並按照一定的約定(例如在時鍾信號的上升沿的時候,將數據發送出去)發送數據,接收端根據發送端提供的時鍾信號,以及大家的約定,接收數據。這就是常說的同步串行通信(Synchronous serial communication),I2C、SPI等有時鍾信號的協議,都屬於這種通信方式。
2)發送端在數據發送之前和之后,通過特定形式的信號(例如START信號和STOP信號),告訴接收端,可以開始(或者停止)接收數據了。與此同時,收發兩方會約定一個數據發送的速度(就是大名鼎鼎的波特率),發送端在發送START信號之后,就按照固定的節奏發送串行數據,與此同時,接收端在收到START信號之后,也按照固定的節奏接收串行數據。這就是常說的異步串行通信(Asynchronous serial communication)。
3.單片機上常用的串行通訊接口
- SPI:高速同步串行口。3~4線接口,收發獨立、可同步進行串行外圍設備接口,是Motorola公司推出的一種同步串行通訊方式,是一種三線同步總線,因其硬件功能很強,與SPI有關的軟件就相當簡單,使CPU有更多的時間處理其他事務。SPI通常有SCK時鍾,STB片選,DATA數據信號三個信號。 I2C通常有 SDA數據和SCL時鍾兩個信號。SPI總線真正實現了全雙工數據傳輸,SPI 有3線跟4線兩種,4線的話,就是多了一條叫SDC的線,用來告知從設備現在傳輸的是數據還是指令。這個接口較快,可以傳輸較連續的數據。SPI的速度要大於IIC,一般用在產品內部元件之間的高速數據通信上面,如大容量存儲器等。
- UART:通用異步串行口,一般我們說的單片機上的“串口”大多是特指UART。可以全雙工通信,線數也比較少。數據是異步傳輸的,對雙方的時序要求比較嚴格,通信速度也不是很快。在多機(單片機與單片機之間)通信上面用的最多。
- IIC:一種串行傳輸方式,三線制,網上可找到其通信協議和用法的,IIC 接口的協議里面包括設備地址信息,可以同一總線上連接多個從設備,通過應答來互通數據及命令。但是傳輸速率有限,標准模式下可達到100Kbps,快速模式下可達到400Kbps,高速模式下達到Mbps,不能實現全雙工,不適合傳輸很多的數據。
- USB:這個肯定是很熟悉的了,幾乎每天都打交道。通用串行總線(英語:Universal Serial Bus,縮寫:USB)是連接計算機系統與外部設備的一種串口總線標准,也是一種輸入輸出接口的技術規范,被廣泛地應用於個人電腦和移動設備等信息通訊產品,並擴展至攝影器材、數字電視(機頂盒)、游戲機等其它相關領域。很多單片機上也帶有USB接口例如ST的STM32。
以上各種接口的通訊協議是不一樣的,如UART最簡單的協議是一個起始位一個終止位中間八個數據位,而USB的話通訊協議就復雜的多的多。
4.串行接口電氣標准。
TTL電平:TTL電平指的是低電平為0,高電平為1(+5V電平),大多數的單片機自帶的串口用的就是這種電平。一般用於芯片之間通信,TTL電平通信距離較短。
UART使用的是單片機自帶的電平,單片機是什么電平標准那么該單片機上的UART就是什么電平標准,例如51單片機的UART就是用的TTL電平。而這種電平是沒辦法用於遠程數據傳輸的,為了能讓串行數據能夠傳輸的更遠,我們需要更加強大的傳輸標准,於是就有了RS-232、RS-422、RS485等。
- RS-232-C
- 也稱標准串口,是目前最常用的一種串行通訊接口。它是在1970年由美國電子工業協會(EIA)聯合貝爾系統、 調制解調器廠家及計算機終端生產廠家共同制定的用於串行通訊的標准。它的全名是“數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標准”。傳統的RS-232-C接口標准有22根線,采用標准25芯D型插頭座。自IBM PC/AT開始使用簡化了的9芯D型插座。至今25芯插頭座現代應用中已經很少采用。電腦一般有兩個串行口:COM1和COM2,9針D形接口通常在計算機后面能看到。現在有很多手機數據線或者物流接收器都采用COM口與計算機相連。
- RS-422
- 為改進RS-232通信距離短、速率低的缺點,RS-422定義了一種平衡通信接口,將傳輸速率提高到10Mb/s,傳輸距離延長到4000英尺(速率低於100kb/s時),並允許在一條平衡總線上連接最多10個接收器。RS- 422是一種單機發送、多機接收的單向、平衡傳輸規范,被命名為TIA/EIA-422-A標准。
- RS-485
- 為擴展應用范圍,EIA又於1983年在RS-422基礎上制定了RS-485 標准,增加了多點、雙向通信能力,即允許多個發送器連接到同一條總線上,同時增加了發送器的驅動能力和沖突保護特性,擴展了總線共模范圍,后命名為 TIA/EIA-485-A標准。
下圖是一般傳輸過程:單片機匹配電平到RS-232,通過RS-232傳輸,再從RS-232匹配到TTL再給另一個單片機。
5.其他
各種串行通訊是可以相互轉換的,如下圖中我們最經常使用的CH340芯片就能夠把USB轉成TTL電平的UART串口通訊
參考資料:
【1】http://blog.sina.com.cn/s/blog_62dd0b350100qyey.html
【2】http://www.cnblogs.com/lucky-apple/archive/2008/07/03/1234581.html
【3】http://www.wowotech.net/basic_tech/serial_intro.html
【4】http://www.ing10bbs.com/forum.php?mod=viewthread&tid=437