天天看點

【硬體通信協定】3. 詳細解析UART通信協定及其與RS-232、RS-422、RS-485的關系1. UART簡介2. UART工作原理3. UART的應用4. UART與RS232、RS422、RS485之間的關系

1. UART簡介

        通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART。它将要傳輸的資料在串行通信與并行通信之間加以轉換。作為把并行輸入信号轉成串行輸出信号的晶片,UART通常被內建于其他通訊接口的連結上。也就說,UART使用的是異步,串行通信。通常情況下,在共享時鐘信号的情況下,序列槽需要三根線:

        CLK線:時鐘線

        RX線:接收資料線

        TX線:發送資料線

        串行通信是指利用一條傳輸線将資料一位位地順序傳送。特點是通信線路簡單,利用簡單的線纜就可實作通信,降低成本,适用于遠距離通信,但傳輸速度慢的應用場合。異步通信以一個字元為傳輸機關,通信中兩個字元間的時間間隔多少是不固定的,然而在同一個字元中的兩個相鄰位間的時間間隔是固定的。 LSB表示最低有效位,MSB表示最高有效位。

        資料傳送速率用波特率來表示,即每秒鐘傳送的二進制位數。例如資料傳送速率為120字元/秒,而每一個字元為11位(1個起始位,8個資料位,1個校驗位,1個結束位),則其傳送的波特率為11×120=1320字元/秒=1320波特,如下圖所示:

【硬體通信協定】3. 詳細解析UART通信協定及其與RS-232、RS-422、RS-485的關系1. UART簡介2. UART工作原理3. UART的應用4. UART與RS232、RS422、RS485之間的關系

其中各位的意義如下:

起始位:先發出一個邏輯”0”信号,表示傳輸字元的開始。

資料位:可以是5~8位邏輯”0”或”1”。如ASCII碼(7位),擴充BCD碼(8位)。小端模式。

校驗位:資料位加上這一位後,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗)。

停止位:它是一個字元資料的結束标志。可以是1位、1.5位、2位的高電平。

空閑位:處于邏輯“1”狀态,表示目前線路上沒有資料傳送。

注:異步通信是按字元傳輸的,接收裝置在收到起始信号之後隻要在一個字元的傳輸時間内能和發送裝置保持同步就能正确接收。下一個字元起始位的到來又使同步重新校準(依靠檢測起始位來實作發送與接收方的時鐘自同步的)

【硬體通信協定】3. 詳細解析UART通信協定及其與RS-232、RS-422、RS-485的關系1. UART簡介2. UART工作原理3. UART的應用4. UART與RS232、RS422、RS485之間的關系

2. UART工作原理

發送資料過程:空閑狀态,線路處于高電平;當收到發送指令後,拉低線路的一個資料位的時間T,接着資料按低位到高位依次發送,資料發送完畢後,接着發送奇偶校驗位和停止位,一幀資料發送完成。

資料接收過程:空閑狀态,線路處于高電平;當檢測到線路的下降沿(高電平變為低電平)時說明線路有資料傳輸,按照約定的波特率從低位到高位接收資料,資料接收完畢後,接着接收并比較奇偶校驗位是否正确,如果正确則通知後續裝置接收資料或存入緩沖。

        由于UART是異步傳輸,沒有傳輸同步時鐘,為了保證資料的正确性,UART采用16倍資料波特率的時鐘進行采樣。每個資料有16個時鐘采樣,取中間的采樣值,以保證采樣不會滑碼或誤嗎。一般UART一幀的資料位數為8,這樣即使每個資料有一個時鐘的誤差,接收端也能正确地采樣到資料。

        UART的接收資料時序為:當檢測到資料的下降沿時,表明線路上有資料進行傳輸,這是計數器CNT開始計數,當計數器為24=16+8時,采樣的值為第0位資料;當計數器的值為40時,采樣的值為第一位資料,依次類推,進行後面6個資料的采樣。如果需要進行奇偶校驗,則當計數器的值為152時,采樣的值即為奇偶位;當計數器的值為168時,采樣的值為“1”表示停止位,資料接收完成。

一個标準的10位異步串行通信協定(1個起始位、1個停止位和8個資料位)收發時序,如下圖所示:

【硬體通信協定】3. 詳細解析UART通信協定及其與RS-232、RS-422、RS-485的關系1. UART簡介2. UART工作原理3. UART的應用4. UART與RS232、RS422、RS485之間的關系
【硬體通信協定】3. 詳細解析UART通信協定及其與RS-232、RS-422、RS-485的關系1. UART簡介2. UART工作原理3. UART的應用4. UART與RS232、RS422、RS485之間的關系

注意:這裡的資料實際上是0b10000010, 左邊是低位,右邊是高位。

高性能的UART:高性能UART可以包含發送FIFO(先進先出)緩沖器。

        FIFO 是“First-In First-Out”的縮寫,意為“先進先出”,是一種常見的隊列操作。 Stellaris 系列ARM 的UART 子產品包含有2 個16 位元組的FIFO:一個用于發送,另一個用于接收。可以将兩個FIFO 分别配置為以不同深度觸發中斷。可供選擇的配置包括:1/8、 1/4、1/2、3/4 和7/8 深度。例如,如果接收FIFO 選擇1/4,則在UART 接收到4 個資料時産生接收中斷。

        發送FIFO的基本工作過程: 隻要有資料填充到發送FIFO 裡,就會立即啟動發送過程。由于發送本身是個相對緩慢的過程,是以在發送的同時其它需要發送的資料還可以繼續填充到發送 FIFO 裡。當發送 FIFO 被填滿時就不能再繼續填充了,否則會造成資料丢失,此時隻能等待。這個等待并不會很久,以9600 的波特率為例,等待出現一個空位的時間在1ms 上下。發送 FIFO 會按照填入資料的先後順序把資料一個個發送出去,直到發送 FIFO 全空時為止。已發送完畢的資料會被自動清除,在發送FIFO 裡同時會多出一個空位。

        接收FIFO的基本工作過程: 當硬體邏輯接收到資料時,就會往接收FIFO 裡填充接收到的資料。程式應當及時取走這些資料,資料被取走也是在接收FIFO 裡被自動删除的過程,是以在接收 FIFO 裡同時會多出一個空位。如果在接收 FIFO 裡的資料未被及時取走而造成接收FIFO 已滿,則以後再接收到資料時因無空位可以填充而造成資料丢失。

        收發FIFO 主要是為了解決UART 收發中斷過于頻繁而導緻CPU 效率不高的問題而引入的。在進行 UART 通信時,中斷方式比輪詢方式要簡便且效率高。但是,如果沒有收發 FIFO,則每收發一個資料都要中斷處理一次,效率仍然不夠高。如果有了收發FIFO,則可以在連續收發若幹個資料(可多至14 個)後才産生一次中斷然後一并處理,這就大大提高了收發效率。

        完全不必要擔心FIFO 機制可能帶來的資料丢失或得不到及時處理的問題,因為它已經幫你想到了收發過程中存在的任何問題,隻要在初始化配置UART 後,就可以放心收發了, FIFO 和中斷例程會自動搞定一切。

3. UART的應用

3.1 通信領域

        UART首先将接收到的并行資料轉換成串行資料來傳輸。消息幀從一個低位起始位開始,後面是5~8個資料位,一個可用的奇偶位和一個或幾個高位停止位。接收器發現開始位時它就知道資料準備發送,并嘗試與發送器時鐘頻率同步。如果選擇了奇偶,UART就在資料位後面加上奇偶位。奇偶位可用來幫助錯誤校驗。

        在接收過程中,UART從消息幀中去掉起始位和結束位,對進來的位元組進行奇偶校驗,并将資料位元組從串行轉換成并行。UART也産生額外的信号來訓示發送和接收的狀态。例如,如果産生一個奇偶錯誤,UART就置位奇偶标志。奇偶校驗位适用于檢驗傳輸是否正确的。

3.2 計算機

        UART是計算機中串行通信端口的關鍵部分。在計算機中,UART相連于産生相容RS232規範信号的電路。RS232标準定義邏輯“1”信号相對于地為-3到-15伏,而邏輯“0”相對于地為+3到+15伏。是以,當一個微控制器中的UART相連于PC時,它需要一個RS232驅動器來轉換電平。

        Uart這裡指的是TTL電平的序列槽;RS232指的是RS232電平的序列槽。

        TTL電平是5V的,而RS232是負邏輯電平,它定義+5~+12V為低電平,而-12~-5V為高電平。

        Uart序列槽的RXD、TXD等一般直接與處理器晶片的引腳相連,而RS232序列槽的RXD、TXD等一般需要經過電平轉換(通常由Max232等晶片進行電平轉換)才能接到處理器晶片的引腳上,否則這麼高的電壓很可能會把晶片燒壞。

        我們平時所用的電腦的序列槽就是RS232的,當我們在做電路工作時,應該注意下外設的序列槽是Uart類型的還是RS232類型的,如果不比對,應當找個轉換線(通常這根轉換線内有塊類似于Max232的晶片做電平轉換工作的),可不能盲目地将兩序列槽相連。

4. UART與RS232、RS422、RS485之間的關系

        應用資料中的例子解釋他們之間的關系:和交通問題一樣,也有高速、低速、擁堵、中斷等等各種情況。如果把序列槽通訊比做交通,UART比作車站,那麼一幀的資料就好比汽車。汽車跑在路上,要遵守交通規則。如果是市内,一般限速30、40,而高速公路則可以到120。而汽車走什麼路,限速多少,就要看協定怎麼規定了。常見的序列槽協定有RS-232、RS-422、RS-485等。

        是以說,所謂的程式設計其實就是對Uart的程式設計,RS232、RS422、RS485隻是對資料進行傳輸,對程式員的視角來看這是不可見的。

4.1 RS232串行接口标準

        目前RS-232是PC機與通信工業中應用最廣泛的一種串行接口。RS-232被定義為一種在低速率串行通訊中增加通訊距離的單端标準。RS-232采取不平衡傳輸方式,即所謂單端通訊。收、發端的資料信号是相對于信号地。典型的RS-232信号在正負電平之間擺動,在發送資料時,發送端驅動器輸出正電平在+5~+15V,負電平在-5~-15V電平。當無資料傳輸時,線上為TTL,從開始傳送資料到結束,線上電平從TTL電平到RS-232電平再傳回TTL電平。接收器典型的工作電平在+3~+12V與-3~-12V。由于發送電平與接收電平的差僅為2V至3V左右,是以其共模抑制能力差,再加上雙絞線上的分布電容,其傳送距離最大為約15米,最高速率為20Kbps。RS-232是為點對點(即隻用一對收、發裝置)通訊而設計的,其驅動器負載為3kΩ~7kΩ。是以RS-232适合本地裝置之間的通信。下圖為RS232與TTL的時序對比:

【硬體通信協定】3. 詳細解析UART通信協定及其與RS-232、RS-422、RS-485的關系1. UART簡介2. UART工作原理3. UART的應用4. UART與RS232、RS422、RS485之間的關系

4.2 RS422與RS485串行接口标準

【硬體通信協定】3. 詳細解析UART通信協定及其與RS-232、RS-422、RS-485的關系1. UART簡介2. UART工作原理3. UART的應用4. UART與RS232、RS422、RS485之間的關系

4.2.1平衡傳輸

        RS-422、RS-485與RS-232不一樣,資料信号采用差分傳輸方式,也稱作平衡傳輸,它使用一對雙絞線,将其中一線定義為A,另一線定義為B。通常情況下,發送驅動器A、B之間的正電平在+2~+6V,是一個邏輯狀态,負電平在-2V~6V,是另一個邏輯狀态。另有一個信号地C,在RS-485中還有一“使能”端,而在RS-422中這是可用可不用的。“使能”端是用于控制發送驅動器與傳輸線的切斷與連接配接。當“使能”端起作用時,發送驅動器處于高阻狀态,稱作“第三态”,即它是有别于邏輯“1”與“0”的第三态。

4.2.2 RS-422電氣規定

        由于接收器采用高輸入阻抗和發送驅動器比RS232更強的驅動能力,故允許在相同傳輸線上連接配接多個接收節點,最多可接10個節點。即一個主裝置(Master),其餘為從裝置(Salve),從裝置之間不能通信,是以RS-422支援點對多的雙向通信。RS-422四線接口由于采用單獨的發送和接收通道,是以不必控制資料方向,各裝置之間任何必須的信号交換均可以按軟體方式(XON/XOFF握手)或硬體方式(一對單獨的雙絞線)實作。RS-422的最大傳輸距離為4000英尺(約1219米),最大傳輸速率為10Mbps。其平衡雙絞線的長度與傳輸速率成反比,在100Kbps速率以下,才可能達到最大傳輸距離。隻有在很短的距離下才能獲得最高速率傳輸。一般100米長的雙絞線上所能獲得的最大傳輸速率僅為1Mbps。

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

4.2.3 RS-485電氣規定

        由于RS-485是從RS-422基礎上發展而來的,是以RS-485許多電氣規定與RS-422相仿。如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二線與四線方式,二線制可實作真正的多點雙向通信。RS-485總線,在要求通信距離為幾十米到上千米時,廣泛采用RS-485 串行總線标準。RS-485采用平衡發送和差分接收,是以具有抑制共模幹擾的能力。加上總線收發器具有高靈敏度,能檢測低至200mV的電壓,故傳輸信号能在千米以外得到恢複。 RS-485采用半雙工工作方式,任何時候隻能有一點處于發送狀态,是以,發送電路須由使能信号加以控制。RS-485用于多點互連時非常友善,可以省掉許多信号線。應用RS-485 可以聯網構成分布式系統,其允許最多并聯32台驅動器和32台接收器。

       RS-485與RS-422的不同還在于其共模輸出電壓是不同的,RS-485是-7V至+12V之間,而RS-422在-7V至+7V之間;RS-485滿足所有RS-422的規範,是以RS-485的驅動器可以用在RS-422網絡中應用。RS-485與RS-422一樣,其最大傳輸距離約為1219米,最大傳輸速率為10Mbps。平衡雙絞線的長度與傳輸速率成反比,在100Kbps速率以下,才可能使用規定最長的電纜長度。隻有在很短的距離下才能獲得最高速率傳輸。一般100米長雙絞線最大傳輸速率僅為1Mbps。

4.4.4 RS-422與RS-485的網絡安裝注意要點

        RS-422可支援10個節點,RS-485支援32個節點,是以多節點構成網絡。網絡拓撲一般采用終端比對的總線型結構,不支援環形或星形網絡。在建構網絡時,應注意如下幾點:

  1. 采用一條雙絞線電纜作總線,将各個節點串接起來,從總線到每個節點的引出線長度應盡量短,以便使引出線中的反射信号對總線信号的影響最低。
  2. 應注意總線特性阻抗的連續性,在阻抗不連續點就會發生信号的反射。下列幾種情況易産生這種不連續性:總線的不同區段采用了不同電纜,或某一段總線上有過多收發器緊靠在一起安裝,再者是過長的分支線引出到總線。

【硬體通信協定】2. 詳細解析SPI通信協定

【硬體通信協定】1. 詳細解析IIC通信協定

參考連結:

https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter

https://blog.csdn.net/gq1900/article/details/51885259

https://baike.baidu.com/item/UART/4429746

http://www.cnblogs.com/huanzxj/p/4522274.html

http://www.eepw.com.cn/article/201606/292407.htm

繼續閱讀