嵌入式的那些通信協議

1.USART

通用同步/異步串行接收/發送器,USART是一個全雙工通用同步/異步串行收發模塊,該接口是一個高度靈活的串行通信設備。

區別於UART,UART是通用異步收發傳輸器,USART屬於UART的增強型,在異步傳輸時沒有啥區別,但是USART比UART多了同步傳輸功能,他可以爲通信設備提供主動時鐘。(由於通常都是使用異步傳輸,UART與USART就沒有啥區別,所以以下USART與UART不做區分,都爲UART)

ps:USART應該是我們嵌入式童鞋在平常單片機開發中用到最多的一種通信協議了吧。

這個界面有熟悉的童鞋嗎

工作原理:

UART使用4線(VCC, GND, RX, TX)

UART使用標準的TTL/CMOS邏輯電平(0~5v、0~3.3v、0~2.5v或0~1.8v)來表示數據,高電平表示1,低電平表示0。爲了增強數據的抗干擾能力、提高傳輸長度,通常將TTL/CMOD邏輯電平轉換爲RS-232邏輯電平,3~12v表示0,-3~-12v表示1

UART的幀格式包括線路空閒狀態(idle,高電平)、起始位(start bit,低電平)、5~8位數據位(data bits)、校驗位(parity bit,可選)和停止位(stop bit,位數可爲1、1.5、2位)。

UART幀格式

數據在傳輸過程中是通過一位一位地進行傳輸來實現通信的,每一次的傳輸都是靠起始位來同步,空閒時爲高電平,用下降沿來通知接收方準備接收,緊接着的就是數據位根據設置的5/6/7/8位數據來進行傳輸,低位在前,高位在後(LSB——MSB),數據位結束後就是奇偶校驗爲,校驗位之後就是停止位,停止位是用高電平來標記一個字符的結束,併爲下一個字符的傳輸做準備。停止位後面是不同長度的空閒位。停止位和空閒位都規定爲高電平,這樣可以保證起始位有一個下降沿。

特點:

    全雙工傳輸

    使用方便,協議相對較簡單

缺點:

    需要轉換爲232電平才適合長距離傳輸


2.RS232

由電子工業協會(Electronic Industries Association,EIA) 所制定的異步傳輸標準接口。通常 RS-232 接口以9個引腳 (DB-9) 或是25個引腳 (DB-25) 的型態出現。

工作原理:

大致上與UART相同

RS-232串口通信最遠距離是50英尺;

RS232可做到雙向傳輸,全雙工通訊,最高傳輸速率20kbps。

RS-232上傳送的數字量採用負邏輯,且與地對稱。邏輯1:-3 ~-15V    邏輯0:+3~+15V。

RS-232-C標準規定的數據傳輸速率爲50、75、100、150、300、600、1200、2400、4800、9600、19200、38400波特。

9芯引腳對應圖

特點:

協議採用的電壓較高,容易損壞接口芯片。與TTL電平不兼容,所以必須加電平轉換芯片(例如max232)才能和TTL進行通信

傳輸速率較低,在異步傳輸時,比特率爲20Kbps

接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這種共地傳輸容易產生共模干擾,所以抗噪聲干擾性弱。

傳輸距離有限,最大傳輸距離標準值爲50英尺,實際上也只能用在15米左右


3.RS485

RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。

RS485是一個定義平衡數字多點系統中的驅動器和接收器的電氣特性的標準,該標準由電信行業協會和電子工業聯盟定義。使用該標準的數字通信網絡能在遠距離條件下以及電子噪聲大的環境下有效傳輸信號。RS-485使得廉價本地網絡以及多支路通信鏈路的配置成爲可能。

RS485有兩線制和四線制兩種接線,四線制只能實現點對點的通信方式,現很少採用,現在多采用的是兩線制接線方式,這種接線方式爲總線式拓撲結構,在同一總線上最多可以掛接32個節點。

在RS485通信網絡中一般採用的是主從通信方式,即一個主機帶多個從機。

很多情況下,連接RS-485通信鏈路時只是簡單地用一對雙絞線將各個接口的“A”、“B”端連接起來,而忽略了信號地的連接,這種連接方法在許多場合是能正常工作的,但卻埋下了很大的隱患,原因1是共模干擾:RS-485接口採用差分方式傳輸信號方式,並不需要相對於某個參照點來檢測信號,系統只需檢測兩線之間的電位差就可以了,但容易忽視了收發器有一定的共模電壓範圍,RS-485收發器共模電壓範圍爲-7到+12V,只有滿足上述條件,整個網絡才能正常工作;當網絡線路中共模電壓超出此範圍時就會影響通信的穩定可靠,甚至損壞接口;原因二是EMI的問題:發送驅動器輸出信號中的共模部分需要一個返回通路,如沒有一個低阻的返回通道(信號地),就會以輻射的形式返回源端,整個總線就會像一個巨大的天線向外輻射電磁波。

485引腳功能圖

RS-485的電氣特性:邏輯“1”以兩線間的電壓差+2V~+6V表示,邏輯“0”以兩線間的電壓差-6V~-2V表示。接口信號電平比RS-232-C降低了,就不容易損壞接口電路芯片,且該電平與TTL電平兼容,刻方便與TTL電路連接。

數據最高傳輸速率爲:10Mbps

RS-485接口採用平衡驅動器和差分接收器的組合,抗共模干擾能力強,即抗噪聲性能好。

RS-485接口的最大傳輸距離標準值4000英尺,實際上可達3000米。

RS-232-C接口在總線上只允許連接一個收發器,即單站能力;而RS-485接口在總線上只允許連接多達128個收發器,即具有多站能力,這樣用戶可以利用單一的RS-485接口方便地建立設備網絡。


4.RS422

        EIA-422(過去稱爲RS-422)是一系列的規定採用4線,全雙工,差分傳輸,多點通信的數據傳輸協議,它定義了接口電路的特性。它採用平衡傳輸採用單向/非可逆,有使能端或沒有使能端的傳輸線。和RS-485不同的是EIA-422不允許出現多個發送端而只能有多個接受端。硬件構成上EIA-422 (RS-422)相當於兩組EIA-485(RS-485),即兩個半雙工的EIA-485(RS-485)構成一個全雙工的EIA-422(RS-422)。一個主設備(Master),其餘爲從設備(Slave),從設備之間不能通信,所以RS-422支持點對多的雙向通信。接收器輸入阻抗爲4k,故發端最大負載能力是10x4k+100Ω(終接電阻)。

  RS-422和RS-485電路原理基本相同,都是以差動方式發送和接受,不需要數字地線。差動工作是同速率條件下傳輸距離遠的根本原因,這正是二者與RS232的根本區別,因爲RS232是單端輸入輸出,雙工工作時至少需要數字地線。發送線和接受線三條線(異步傳輸),還可以加其它控制線完成同步等功能。

  RS-422通過兩對雙絞線可以全雙工工作收發互不影響,而RS485只能半雙工工作,發收不能同時進行,但它只需要一對雙絞線。RS422和RS485在19kpbs下能傳輸1200米。用新型收發器線路上可連接臺設備。

  RS-422的電氣性能與RS-485完全一樣。主要的區別在於:RS-422有4根信號線:兩根發送(Y、Z)、兩根接收(A、B)。由於RS-422的收與發是分開的所以可以同時收和發(全雙工);RS-485有2根信號線:發送和接收。

特性:

        RS-422四線接口由於採用單獨的發送和接收通道,因此不必控制數據方向,各裝置之間任何必須的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨的雙絞線)。RS-422的最大傳輸距離爲4000英尺(約1219米),最大傳輸速率爲10Mb/s。其平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,纔可能達到最大傳輸距離。只有在很短的距離下才能獲得最高速率傳輸。一般100米長的雙絞線上所能獲得的最大傳輸速率僅爲1Mb/s。

  RS-422需要一終接電阻,要求其阻值約等於傳輸電纜的特性阻抗。在短距離傳輸時可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸電纜的最遠端。

RS232/RS485/RS422區別

RS232是全雙工的,RS485是半雙工的,RS422是全雙工的。

RS485與RS232僅僅是通訊的物理協議(即接口標準)有區別,RS485是差分傳輸方式,RS232是單端傳輸方式,但通訊程序沒有太多的差別。

都被稱爲串口通信


5.IIC

IIC(Inter-Integrated Circuit)總線是一種由PHILIPS公司開發的兩線式串行總線,用於連接微控制器及其外圍設備。它是由數據線SDA和時鐘SCL構成的串行總線,可發送和接收數據。在CPU與被控IC之間、IC與IC之間進行雙向傳送,高速IIC總線一般可達400kbps以上。

I2C總線在傳送數據過程中共有三種類型信號, 它們分別是:開始信號、結束信號和應答信號。

    開始信號:SCL爲高電平時,SDA由高電平向低電平跳變,開始傳送數據。

    結束信號:SCL爲高電平時,SDA由低電平向高電平跳變,結束傳送數據。

    應答信號:接收數據的IC在接收到8bit數據後,向發送數據的IC發出特定的低電平脈衝,表示已收到數據。

CPU向受控單元發出一個信號後,等待受控單元發出一個應答信號,CPU接收到應答信號後,根據實際情況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷爲受控單元出現故障。

這些信號中,起始信號是必需的,結束信號和應答信號,都可以不要

多主機I2C總線系統結構

總線時序圖

空閒狀態:I2C總線總線的SDA和SCL兩條信號線同時處於高電平時,規定爲總線的空閒狀態。此時各個器件的輸出級場效應管均處在截止狀態,即釋放總線,由兩條信號線各自的上拉電阻把電平拉高。

起始信號:當SCL爲高期間,SDA由高到低的跳變;啓動信號是一種電平跳變時序信號,而不是一個電平信號。

停止信號:當SCL爲高期間,SDA由低到高的跳變;停止信號也是一種電平跳變時序信號,而不是一個電平信號。

 

起始信號與停止信號

應答信號:發送器每發送一個字節,就在時鐘脈衝9期間釋放數據線,由接收器反饋一個應答信號。 應答信號爲低電平時,規定爲有效應答位(ACK簡稱應答位),表示接收器已經成功地接收了該字節;應答信號爲高電平時,規定爲非應答位(NACK),一般表示接收器接收該字節沒有成功。 對於反饋有效應答位ACK的要求是,接收器在第9個時鐘脈衝之前的低電平期間將SDA線拉低,並且確保在該時鐘的高電平期間爲穩定的低電平。 如果接收器是主控器,則在它收到最後一個字節後,發送一個NACK信號,以通知被控發送器結束數據發送,並釋放SDA線,以便主控接收器發送一個停止信號P。

數據有效性:I2C總線進行數據傳送時,時鐘信號爲高電平期間,數據線上的數據必須保持穩定,只有在時鐘線上的信號爲低電平期間,數據線上的高電平或低電平狀態才允許變化。即:數據在SCL的上升沿到來之前就需準備好。並在在下降沿到來之前必須穩定。

 

數據的傳送:在I2C總線上傳送的每一位數據都有一個時鐘脈衝相對應(或同步控制),即在SCL串行時鐘的配合下,在SDA上逐位地串行傳送每一位數據。數據位的傳輸是邊沿觸發。


6.SPI

SPI 是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備接口。是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應用在EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,並且在芯片的管腳上只佔用四根線,節約了芯片的管腳,同時爲PCB的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議

SPI接口一般使用4條線通信:

MISO 主設備數據輸入,從設備數據輸出。

MOSI 主設備數據輸出,從設備數據輸入。

SCLK時鐘信號,由主設備產生。

CS從設備片選信號,由主設備控制。

從圖中可以看出,主機和從機都有一個串行移位寄存器,主機通過向它的SPI串行寄存器寫入一個字節來發起一次傳輸。寄存器通過MOSI信號線將字節傳送給從機,從機也將自己的移位寄存器中的內容通過MISO信號線返回給主機。這樣,兩個移位寄存器中的內容就被交換。外設的寫操作和讀操作是同步完成的。如果只進行寫操作,主機只需忽略接收到的字節;反之,若主機要讀取從機的一個字節,就必須發送一個空字節來引發從機的傳輸。

SPI主要特點有:可以同時發出和接收串行數據;可以當作主機或從機工作;提供頻率可編程時鐘;發送結束中斷標誌;寫衝突保護;總線競爭保護等。

SPI總線四種工作方式SPI 模塊爲了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閒狀態爲低電平;如果CPOL=1,串行同步時鐘的空閒狀態爲高電平。時鐘相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行數據傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被採樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被採樣。SPI主模塊和與之通信的外設備時鐘相位和極性應該一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章