串列埠,COM口,UART,USART

Real_Biter_Oliver發表於2019-02-01

本文主要簡述串列埠,COM口,UART,USART之間的聯絡和區別,另外也講述了串列埠的RS-232電平和TTL電平,以及微控制器與電腦之間的串列埠連線方式。

串列埠

      串列埠,即序列介面,與之相對應的另一種介面叫並口,並行介面。兩者的區別是,傳輸一個位元組(8個位)的資料時,串列埠是將8個位排好隊,逐個地在1條連線線上傳輸,而並口則將8個位一字排開,分別在8條連線線上同時傳輸。

      在相同的資料傳輸速率下,並口的確比串列埠更快,但由於並口的各個連線線之間容易互相干擾,高速情況下難以同步各連線線的資料,而且硬體成本也相對串列埠更高(線多),因而串列埠取代並口成為了現在的主流介面,較具代表性的要數Universal Serial Bus,通用序列匯流排,也就是USB。其它在嵌入式領域常見的序列介面還包括:I2C,SPI,RJ-45,UART,USART等。

 

COM口

      電腦上的非同步序列通訊介面,有時也稱之為串列埠(其實這個叫法並不嚴謹)。電腦COM口使用DB9聯結器,遵循RS-232標準,RS-232規定了通訊口的電氣特性(比如多少伏為邏輯“1”)和介面機械特性(形狀,針腳定義)等內容。COM口多見於舊式電腦,用於連線滑鼠,調製調解器等裝置,現在已被USB取代。

 

UART與USART

       UART,全稱Universal Asynchronous Receiver/Transmitter,通用非同步收發傳輸器。

      USART,全稱Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步非同步收發傳輸器。

      兩者都是一個資料收發器,屬於硬體電路範疇。UART使用非同步通訊,而USART既可非同步通訊,也可同步通訊。當USART使用非同步通訊時,就變成了UART。微控制器的串列埠指的就是UART或USART。

      同步通訊和非同步通訊的區別是:時鐘線的有無。同步通訊有時鐘線,收發雙方通過統一的時鐘來確定何時進行資料的傳輸,如I2C和SPI。非同步通訊沒有時鐘線,只能在資料的頭和尾加入標誌位來區分不同的資料幀,接收資料之前也要預先知道波特率的大小,傳輸效率比同步通訊要低。

 

串列埠、RS-232與TTL

      前面講過,RS-232是一個序列通訊介面標準,它規定了邏輯“1”為-3 ~ -15V,邏輯“0”為+3 ~ +15V,符合該標準的串列埠也叫RS-232串列埠,比如電腦的COM口。那麼,還有不符合RS-232標準的串列埠?答案是肯定的,那就是微控制器(如stm32)的UART/USART,這個也叫串列埠,但它不遵循RS-232標準,使用的是TTL電平(Transistor-Transistor Logic),該電平的邏輯“1”為+5V,邏輯“0”為0V,稱為TTL串列埠。

      需要注意的是,串列埠、UART/USART通常指的是硬體介面,而RS-232指的是屬於物理層範疇的序列通訊介面標準,簡而言之,RS-232就是個標準。

 

微控制器與電腦的連線

      既然微控制器有串列埠(UART/USART),電腦也有串列埠(COM口),那麼兩者就可以通過串列埠進行通訊。

     如果電腦有實體COM口,由於COM口使用的RS-232電平跟微控制器的UART/USART使用的TTL電平不一樣,這時就需要使用MAX232之類的電平轉換晶片,將TTL電平轉換成RS-232電平,連線示意如下:

電腦COM口 <---> MAX232 <---> 微控制器UART/USART

      如果電腦沒有COM口,就要通過CH340之類的USB轉TTL串列埠晶片,來實現用USB模擬COM口,這樣電腦的USB口就變成了一個TTL串列埠,可以跟微控制器的UART/USART通訊,連線示意如下:

電腦USB口 <---> CH340 <---> 微控制器UART/USART

參考:

https://zh.wikipedia.org/wiki/%E4%B8%B2%E8%A1%8C%E7%AB%AF%E5%8F%A3
https://zh.wikipedia.org/wiki/UART
https://zh.wikipedia.org/wiki/RS-232
https://www.edn.com/electronics-blogs/embedded-basics/4440395/USART-vs-UART--Know-the-difference
 

相關文章