【Maker電子學】認識UART界面#2—通訊標準

作者:Bird

上篇文章【Maker電子學】認識UART界面#1—訊號格式,我們聊了 UART 界面的訊號格式,以及它爲什麼不需要 clock 就能收送訊號,這次我們要繼續來探討 UART 界面與實體世界之間許多通訊標準的關係。

UART 與 RS-232C

在開發 MCU 程式時,常常要把 MCU 的 UART 連接到 PC 來燒錄程式或 debug,但 MCU 上的串列通訊界面是 UART,PC 上的串列通訊界面是 RS-232C,這兩者到底有什麼關係,它們又有什麼不同呢?

如同上一次說明的,UART 是邏輯電路上的概念,它會隨著邏輯電路的電壓位準不同而改變。在 3.3 V 的邏輯電路上,UART 的 0 是 3.3 V,1 是 0 V;但是在 5 V 的邏輯電路中,UART 的 0 是 5 V,1 是 0 V(還記得嗎?UART 的邏輯位準和直覺相反,1 是 low、0 是 high,而它沒有動作時是維持在高電位,稱之爲「idle high」)。

邏輯電路的訊號是設計用在短距離、小尺寸的電路板上的,它其實無法跑太長的纜線。爲了解決這個問題,美國的電子工業聯盟 EIA 指定了一系列可以讓 UART 的訊號傳送較長距離的通訊規格標準,而這其中最爲人熟知的就是 RS-232C 這個標準。

最早的 RS-232 標準是由 EIA 在 1960 年制定,之後經過幾次修改,在 1969 年公佈的 RS-232C 成爲個人電腦上最普及的通訊界面(在 USB 界面席捲全世界之前,幾乎每一部電腦都有至少一個 9-pin 的 D 型連接器,那就是 RS-232C)。

RS-232C(圖片來源:Bird 提供)

RS-232C 標準誕生距今剛好 50 年,雖然已是一個老舊的技術,但它對這個世界的影響之深遠仍然餘韻不絕。RS-232C 的電氣特性標準簡單來說是這樣:

  • 邏輯 0:傳送端 +5 V ~ +15 V / 接收端 +3 V ~ +15 V
  • 邏輯 1:傳送端 -5 V ~ -15 V / 接收端 -3 V ~ -15 V

換句話說,它是用電壓的正、負來代表邏輯的 0 和 1,而且它能容許的電壓範圍相當大。在正常狀況下,RS-232C 上不會出現接近 0 V 的電壓,因爲就算沒有在傳送資料,它的邏輯準位也會維持在 0(就是 UART 的 idle high),傳送端因此會發送 +5 V ~ +15 V 的電壓,接收端也會收到 +3 V ~ +15 V 的電壓;如果 RS-232C 的線上出現 0 V 左右的電壓,就代表線可能根本沒接(這個特性可讓接收端用來偵測纜線是否脫落)。

那麼 UART 和 RS-232C 之間要如何轉換呢?有一顆歷史悠久的 IC 可以來幫我們做這件事。

話說 MAX232/MAX3223

MAX232 是 Maxim 在 1987 年推出的一顆 RS-232C 的傳送/接收器 IC,它的傳送器可以將 5 V 邏輯準位的訊號轉換到 RS-232C 的訊號,而接收器則可以將 RS-232C 的訊號轉換爲 5 V 邏輯準位的訊號。

(圖片來源:Bird 提供)

MAX232 是邏輯電路還在 5 V 準位那個古早年代的產品,因此它也是 5 V 的邏輯準位,吃 5 V 的電。

如果沒有特別的電路,用 5 V 供電的驅動電路最高就能驅動出 5 V 再減掉一點點電壓的訊號,這減掉的電壓就是驅動電路內部的電晶體在飽和時的壓降。RS-232C 要求的傳送側電壓至少要有 5 V,因此如果我們用 5 V 供電,又扣掉這一點點的飽和電壓,就無法符合 RS-232C 的標準。

而且除了 5 V 外,別忘了 RS-232C 在邏輯 1 的時候要傳送負的電壓。一般數位電路系統裡幾乎不會有負的電壓(更古老的 ECL 電路除外,但它沒有正電壓),因此也沒辦法直接輸出符合 RS-232C 標準的負電壓。

爲了符合 RS-232C「至少 +/-5V」的傳送電壓標準,又能用 5 V 這個當年邏輯電路最常用的電壓供電,MAX232 裡面設計了一個非常巧妙的電路:charge pump 升壓和反向電路。

Charge pump 是個很有趣的電路,它常見的功能就是將電壓倍增及反向,而且原理非常簡單。假設我們有兩個電容器 C1 和 C2,分別用 5 V 的電源將它們充飽,像這樣:

C1 的 A 腳和 C2 的 A 腳相對於它們的另外一支腳,都會有 5 V 的電位差(圖片來源:Bird 提供)

接著我們讓 C1 和 C2 脫離電源,並將它們串聯起來(C1 的 A 腳與 C2 的 B 腳相連),會變成:

C1 的 B 腳和 C2 的 A 腳間有兩倍的電壓,也就是 10 V(圖片來源:Bird 提供)

反向電路更簡單,我們先將一個電容器充電:

(圖片來源:Bird 提供)

再將它的極性對調:

(圖片來源:Bird 提供)

讓原來電位比較高的那支腳與系統的 0 V 電位相連(由於電容器裡面的電位差不會改變,所以原來電位比較低的那隻腳,現在相對於 0 V 來說就是負的電壓了)。

以上說明的這些動作,在 MAX232 內部則是由 4 個電容器和一系列的開關切換電路自動完成:

(圖片來源:Bird 提供)

MAX232 內部先用 charge pump 的倍壓電路從 5 V 產生 10 V 的電壓,再用反向電路從 10 V 產生 -10 V 的電壓,如此一來 +/-10 V 的電源都有了,就可以用來產生 RS-232C 所需要的驅動電壓。

隨著 CMOS 邏輯電路的普及,5 V 的 TTL 邏輯已不再是主流,3.3 V 供電的 CMOS 邏輯系統慢慢主宰這個世界,因此 MAX232 也推出了 3.3 V 的版本,稱之爲 MAX3223。MAX3223 的功能和結構與 MAX232 幾乎完全相同,只是能用 3.3 V 供電,並多了一些電源管理的功能:

(圖片來源:Bird 提供)

它一樣有兩組 charge pump 電路,一組用 3.3 V 倍壓產生 6.6 V,另一組用 6.6 V 反向產生 -6.6 V。雖然電壓比較低,但仍然符合 RS-232C 傳送端最低電壓 +/-5 V 的要求。

RS-422 與 RS-485

RS-232 使用的訊號傳送方式稱爲「single-end」,它的傳送和接收端共用一個接地電位,並用一根訊號線上的電壓來判斷傳送的狀態爲 0 或 1。

有另一種訊號傳送方式稱爲 Differential,也稱「差動式」傳送。Differential 的訊號需要兩根訊號線,其之間的相對狀態(電壓或電流)用來表示狀態,地線則依照傳送標準的不同可有可無。

(圖片來源:Bird 提供)

Differential 傳輸最大的好處就是耐干擾。

當傳輸訊號被干擾時,接收端收到的電壓可能會改變,而當改變的幅度過大時,接收端解碼便容易出錯。Differential 傳輸有兩根線,一般來說當它們被干擾時,會同時被干擾,而且被干擾造成的電壓改變也是相同的,另外由於 Differential 接收器在意的是兩根線之間的相對狀態,因此當兩根線同時被同一個雜訊干擾而改變時,接收端其實看不出這個改變。

舉例來說,RS-422 是個 Differential 的傳輸標準,它的兩根訊號線分別稱之爲 A、B,訊號的定義是:

  • 邏輯 1:VA -VB = +2 V ~ +6 V
  • 邏輯 0:VA – VB= -2 V ~ -6 V

它判斷狀態的標準是利用 A、B 兩根線之間的電壓差,而不是依賴單一訊號對地的電壓。假設有一個干擾訊號會讓訊號線上的電壓少掉 2 V,如果 RS-232C 的接收端本來應該收到代表邏輯 0 的 +4 V 的電壓,被干擾後剩下 +2 V,這時接收端就會得到一個錯誤的訊號,因爲電壓小於 3 V,它不是一個合格的訊號。

但如果是 RS-422,假設接收器本來應該收到一個 A 和 B 對地的電壓分別是 5 V、2 V 的訊號。

VA – VB = 5 V – 2 V = 3 V > +2 V,因此接收器知道這是一個代表邏輯 1 的訊號。好了,同樣的干擾來了,這時 A 和 B 的電壓都因爲干擾而少掉 2 V,變成 3 V、0 V,接收器會收到什麼樣的訊號呢?

VA– VB = 3 V – 0 V = 3 V > +2 V,看到沒?這種對兩根線同時造成干擾的訊號,對 Differential 傳輸完全沒有影響,這就是 differential 傳輸的好處,也因爲這個原因, RS-422 的可用傳送距離遠比 RS-232 要長得多。

RS-422 與 RS-485 都是常見的串列通訊界面電氣標準,事實上他們倆的訊號定義是一樣的,差別在於 RS-422 和 RS-232C 一樣是點對點、全雙工的系統,因此它總共需要四根線:兩根用來傳送、兩根用來接收。

(圖片來源:Bird 提供)

而 RS-485 則是傳送、接收共用同一對線:

(圖片來源:Bird 提供)

因此 RS-485 的通訊是半雙工的,傳送的時候不能接收、接收的時候不能傳送,但也因爲這個特性,RS-485 可以形成一個上面有很多裝置的 bus,透過一些更上層的通訊協定達到大家一起協調通訊及定址的功能;另外,RS-485 的傳送器會多一個 enable 的訊號,只有當它確定 bus 上沒有其它裝置在傳送時,才會啓動傳送電路,開始控制 bus。

正因為只需要兩條線就可以連接多個裝置,RS-485 被廣泛運用在工業控制、門禁系統等佈線成本高但是資料傳輸量需求不高的應用中。

這次就先聊到這邊,下一回我們再來看看具體的 RS-485 驅動 IC 要如何使用、如何與 MCUI 搭配,以及它跟 RS-232C 驅動 IC 的不同。

(責任編輯:賴佩萱)

Bird

在外商圈電子業中闖蕩多年,經歷過 NXP、Sony、Crossmatch 等企業,從事無線通訊、影像系統、手機、液晶面板、半導體、生物辨識等不同領域產品開發。熱愛學習新事物,協助新創團隊解決技術問題。台大農機系、台科大電子所畢業,熱愛賞鳥、演奏管風琴、大提琴、法國號,亦是不折不扣的熱血 maker。
Bird

Author: Bird

在外商圈電子業中闖蕩多年,經歷過 NXP、Sony、Crossmatch 等企業,從事無線通訊、影像系統、手機、液晶面板、半導體、生物辨識等不同領域產品開發。熱愛學習新事物,協助新創團隊解決技術問題。台大農機系、台科大電子所畢業,熱愛賞鳥、演奏管風琴、大提琴、法國號,亦是不折不扣的熱血 maker。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *