本文主要簡述串口,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