淺談USB介面轉換RS232,RS422,RS485的技術應用

foaf:image

電子產品中,對多數使用者最友善的介面莫過於USB (Universal Serial Bus,通用序列匯流排),除熱插拔的優點之外,對於擴充功能也相對方便。而擴充設備所需的驅動程式也可整合到微軟的自動更新系統裡。對系統設計工程師來說,系統核心處理器所提供的周邊介面數量若不敷使用,則擴充周邊介面的選項裡,USB絕對是不二之選。例如核心晶片的原生介面 (像是UART(Universal Asynchronous Receiver/Transmitter,通用非同步收發傳輸器)、I²C (Inter-Integrated Circuit,積體匯流排電路)或SPI (Serial Peripheral Interface Bus,串列/序列周邊介面)等低速介面)數量若不足,就可以選擇使用USB橋接器晶片 (USB Bridge Chip)來擴充以上介面。

 

不管是x86 Platform、SoC (System on Chip,系統單晶片)、MPU (Micro Processor Unit,微處理器)又或是MCU (Micro Control Unit,微控制器)等核心晶片,其所提供的原生介面數量不一定能夠滿足每個系統設計需求。以x86 Platform來說,USB介面數量佔比高於低速(如UART)介面。然而並非所有搭配的周邊裝置及應用都是透過USB介面傳輸資料,以IPC(Industrial PC,工業電腦)最常見的COM Port(串/序列埠)來說,使用的通訊協定是透過UART介面傳輸資料,並會依需求在UART介面後端增加轉換不同介面所適用的收發器(Transceiver),如RS-232/ RS-422/ RS-485。 

 

另外二種常用的介面為I²C及SPI,I²C常應用於各式感測器及各式晶片間的溝通或是匯流排控制,其速度為100Kbps/400Kbps/1Mbps/3.4Mbps/單向5Mbps,最常使用的速度則為100Kbps/400Kbps,I²C優點為可雙向傳輸且所需之晶片硬體腳位(Pin Count)少;而SPI則用於需要同時傳送與接收資料的地方,通常資料量也會比較多,常見的速度為5Mbps/10Mbps/20Mbps(up to 200Mbps),常見的應用是Flash Memory(快閃記憶體),DAC(Digital to Analog Converter,數位類比轉換器)及ADC(Analog to Digital Converter,類比數位轉換器)等各種晶片。

USB介面概論

USB (Universal Serial Bus) 通用序列匯流排,是一種電腦與周邊裝置連接的匯流排,同時也是一種輸出入介面的標準規範,最初由Intel及微軟發表。其最大特色就是可熱插拔、隨插即用,傳輸速度從最早的USB1.0 (USB2.0 Low Speed)的1.5Mbps、USB 1.1 (USB Full Speed)的12Mbps,到近期發表的USB 4,其速度可達40Gbps,遠都比並列介面如LPT或串列介面RS-232快。

 

由於其可熱插拔、隨插即用的便利性,目前被廣泛地應用在各種電腦周邊設備上,最常見的是鍵盤、滑鼠等輸入裝置抑或是外接式硬碟,透過Bridge將硬碟的介面轉成USB,讓硬碟成為可雖身攜帶的設備。USB版本及傳輸速度可參考如下表一

usb

UART通訊協定與RS232/RS485/RS422原理說明

USB固然便利,但使用及設計上也有限制。一個USB Host Controller最多可以串聯五級的USB HUB;由於其使用7bit定址設定,所以最多含USB Host Controller可以有128個裝置連接。另一個最大的問題就是傳輸距離,USB2.0規定為5m,USB3.1則縮短為3m,速度越快,傳輸距離越短。因此,對於不同的應用,通常會有相對適用的介面;像UART就是除了USB以外另一個常見的介面。

UART:

一種非同步的通訊協定,二個互相連接的設備,可以同時傳送及接收資料,使用TTL(Transistor-Transistor Logic)的訊號,適用於短距離且1對1的傳輸。

UART的Format:

通常一個UART byte有10bits,包含一個Start bit,8個data bits及一個Stop bit;但因為是非同步傳輸,容易有資料丟失問題,所以有時會看到UART規格為:1 Start bit, 5,6,7,8 or 9 data bits,0.5~2 Stop bits (圖一),其中第9個data bit會拿來做奇偶校驗,稱為Parity;Parity分為Even及Odd二種模式。 Even代表整筆所傳送資料的1為偶數個,而Even Parity即包含了Parity bit。比方說一筆資料為”01011000”總共8個bits,其中包含了3個1及5個0,如果此時所設定的Parity為Even,則Parity bit就要設為1,這樣整筆資料為”010110001” ,其中包含了偶數 (4) 個1。0.5~2 Stop bits可以視為當資料丟失時可調整的緩衝區。

usb 圖一

UART傳送資料方式為先進先出,以傳送一筆資料為21h來看,21h應為”00100001”,其波形如圖二。

usb 圖二

由於UART是非同步傳輸,所以在傳送及接收方都需要設定相同的傳輸速率,讓雙方在同一速率上才能成功完成資料傳輸動作,這個傳輸速率一般稱為鮑率(Baud Rate);下圖以19200bps來說明,每秒傳送19200bits,而每bit的傳輸或接收時間就是1/19200=52.08us。如圖三所示

usb 圖三

UART通訊協定傳輸距離不遠,但可以依據環境及應用搭配不同Transceiver (RS-232/RS-422/RS-485),以對應不同的應用。

  • RS-232

跟UART相同,為1對1的傳輸方式,但是將電壓拉高到±15V,而非0 ~ 5V,所以傳輸距離較UART遠,理論上可達到15公尺。但是這種單線傳輸的訊號容易受雜訊干擾,所以衍生出RS-422 / RS-485的傳輸方式,這二種傳輸方式除了抗干擾能力較RS-232強外,其最遠傳輸距離也超過1公里,且傳輸對象也從1對1提升到RS-422的1對10,RS-485更可達到1對256個裝置。(如圖四)

usb (圖四)
  • RS-232 / RS-422 / RS-485的主要差異:
usb 表二
  • RS-422 / RS-485

RS-485的資料傳輸走的是差動訊號 (Differential),與RS-232的單線傳輸不一樣。差動訊號是由收發器 (Transceiver)的一對I/O (定義為A,B)來傳輸,一般情況下A,B間正電平在 + 1.5V ~ + 6V,負電平在 – 1.5V ~ - 6V;收發器在偵測到高於 + 200mV及低於 – 200mV的電平訊號時會判定為有效值,如果是大於 + 200mV則為正邏輯,如果是小於 – 200mV則為負邏輯,如果是在 +200mV ~ -200mV間則視為無效電平,不代表任何資料;另一個無效電平為大於+12V及小於 -7V的差動電壓。如圖五

usb 圖五

RS-422與RS-485一樣是走差動訊號,但RS-485只有一對Differential pair而RS-422則有二對;電器特性方面,收發器的A,B間正電平變為 +2V ~ +6V ,負電平則為 -2V ~ -6V,且收發器在偵測到高於 + 200mV及低於 – 200mV的電平訊號時會判定為有效值,如果是大於 + 200mV則為正邏輯,如果是小於 – 200mV則為負邏輯,如果是在 +200mV ~ -200mV間則視為無效電平,不代表任何資料;另一個無效電平為大於+7V及小於 -7V的差動電壓。圖六是Differential的波形,判讀上U+才是實際傳輸的資料。

usb 圖六

由上面敘述可知,RS-232 / RS-422 / RS-485主要是電器特性上的差異,而非通訊協定;為了讓UART的訊號有更好的應用如長距離傳輸,所以在UART後端增加了不同電器特性的收發器來彌補UART本身電器特性不足的部分。下圖七把TTL UART,RS-232 / RS-422 / RS-485的波形整合再一起做比較,方便了解其差異,以上是UART針對不同場合加上適用Transceiver的應用。

usb 圖七

RS232/RS485/RS422應用領域

一般在系統晶片的Firmware Update,或是二個相近系統間的資料傳輸就可以使用UART,主因是晶片不一定會有USB,但通常會有UART。如圖八

usb 圖八

而在影音控制上,應用距離較短或一對一的控制,RS-232就相對適合,像是投影布幕、影音播放機或是投影機的控制;如果需要一對多、距離較遠、環境干擾較多的應用,就必須換成RS-422 / RS-485;PLC、IOT控制設備常用到這二種介面。

 

PLC通常用於工廠生產設備,除同時會串聯多種設備外,電氣干擾也多,而產線長度也會依據生產站數有所不同,所以可常見RS-422 / RS-485在工廠設備上;由於RS-422 / RS-485分別為全雙工與半雙工,所以實際在工廠設備上可以見到控制馬達類的應用,通常是單向控制,像是產品輸送帶用的應用;對於在控制上需要有回應的應用,像是機械手臂,由於需要知道機械手臂目前的位置(圖八),及手臂上是否有物品?需要一邊控制又需要同時監控的應用,就適合使用RS-422全雙工的特性。另一個適合RS-422應用的場景是大樓電梯,管理中心可以監控不同電梯目前所在樓層,又可同時調整電梯的運轉方式,是要每台電梯都動作還是間歇運準。

usb 圖九

Smart Home則是IOT的一種應用 (圖十),Smart Home就是把所有想要控制的開關連上網,把所監控的任何數據(如溫濕度)也連上網,讓使用者可以從遠端控制家中某個設備的開關或查看所監控的數據;這些所要監控的設備,因為擺放位置不同,有的較遠有的近,所以可以透過RS-422 / RS-485來連接到控制主機,再連上網路來實現Smart Home。由於Smart Home應用上,大多的設備都是跟主機作半雙工的應用,像是IOT主機目前偵測到客廳溫度比希望溫度高,這時主機或使用者看到或感覺到目前溫度較高,就會透過主機下命令,讓冷氣加強運準以降低目前溫度。

usb 圖十

整體來說,對於距離較長的環境應用,優先考慮RS-422 / RS-485,再來是依據主從設備需要同時傳送訊息給對方的場景則選用RS-422,如果是只需要主從設備間在同一時間內只有一方傳訊息,而另一方只做接收動作的應用就選用RS-485;依需求選擇最適合的設計,就是最好的設計。

將USB介面轉換成RS-232/RS-422/RS-485介面的晶片設計選擇,可以參考下圖十一的建議搭配,依照所需的UART功能(Basic或Full UART及UART Port Number需求),先選擇適用的USB Bridge,接下來再選擇所需的Transceiver(短距離的RS-232、較長距離的半雙工RS-485及全雙工的RS-422)來完成最符合實際場合應用的設計。

usb 圖十一

參考文獻

  1. 維基百科, EIA-485, https://reurl.cc/g2dmQQ
  2. FTDI Chip, What is a UART?, https://reurl.cc/ErAzXm
  3. Bridgetek, PanL Smart System, https://reurl.cc/VD9XRZ
  4. 維基百科, USB, https://reurl.cc/ZAm7Xa