串口、COM口、UART口, TTL、RS-232、RS-485區別詳解
2021-1-21新聞
UART口、COM口、USB口是指物理接口形式(硬件);而 TTL、RS-232、RS-485是指的電平標準(電信號)。
串口:串口是一個泛稱,UART、TTL、RS232、RS485都遵循類似的通信時序協議,因此都被通稱為串口。
UART接口:通用異步收發器(Universal Asynchronous Receiver/Transmitter),UART是串口收發的邏輯電路,這部分可以獨立成芯片,也可以作為模塊嵌入到其他芯片里,單片機、SOC、PC里都會有UART模塊。
COM口:特指臺式計算機或一些電子設備上的D-SUB外形(一種連接器結構,VGA接口的連接器也是D-SUB)的串行通信口,應用了串口通信時序和RS232的邏輯電平。
USB口:通用串行總線,和串口完全是兩個概念。雖然也是串行方式通信,但由于USB的通信時序和信號電平都和串口完全不同,因此和串口沒有任何關系。USB是高速的通信接口,用于PC連接各種外設,U盤、鍵鼠、移動硬盤、當然也包括"USB轉串口"的模塊。(USB轉串口模塊,就是USB接口的UART模塊)
TTL、RS232、RS485都是一種邏輯電平的表示方式
TTL:TTL指雙極型三極管邏輯電路,市面上很多"USB轉TTL"模塊,實際上是"USB轉TTL電平的串口"模塊。這種信號0對應0V,1對應3.3V或5V。與單片機、SOC的IO電平兼容。不過實際也不一定是TTL電平,因為現在大部分數字邏輯都是CMOS工藝做的,只是沿用了TTL的說法。我們進行串口通信的時候 從單片機直接出來的基本是都是 TTL 電平。
TTL電平:全雙工(邏輯1:2.4V ~ 5V,邏輯0:0V ~ 0.5V)
1、硬件框架圖如下,TTL用于兩個MCU之間通信
2、0和1表示
RS232:是電子工業協會制定的異步傳輸標準接口,同時對應著電平標準和通信協議(時序),其電平標準:+3V ~ +15V對應0,-3V ~ -15V對應1。RS232的邏輯電平和TTL不一樣但是協議一樣。
RS-232電平:全雙工(邏輯1:-15V ~ -3V,邏輯0:+3V ~ +15V)
1、硬件框圖如下
2、0和1表示
RS485:RS485是一種串口接口標準,為了長距離傳輸采用差分方式傳輸,傳輸的是差分信號,抗干擾能力比RS232強很多。兩線壓差為-(2~6)V表示0,兩線壓差為+(2~6)V表示1。
RS-485:半雙工、(邏輯1:+2V ~ +6V,邏輯0:-6V ~ -2V)這里的電平指AB兩線間的電壓差。
1、硬件框圖如下:
2、0和1表示
COM口即串行通訊端口,簡稱串口。這里區別于USB的"通用串行總線"和硬盤的"SATA"。
一般我們見到的是兩種物理標準。D型9針插頭,和4針杜邦頭兩種。這是常見的4針串口,在電路板上常見,經常上邊還帶有杜邦插針,有時候還會有第五根針,3.3V電源端。由于是預留在電路板上的,協議可以有很多種,要看具體設備。
在嵌入式里面說的串口,一般是指UART口,但是我們經常搞不清楚它和COM口的區別,以及RS232、TTL等關系,實際上UART、COM指的是物理接口形式(硬件),而TTL、RS-232是指的電平標準(電信號)。
UART有4個pin(VCC、GND、RX、TX),用的是TTL電平,低電平為0(0V),高電平為1(3.3V或以上)。
D型9針串口,這種接口的協議只有兩種:RS-232和RS-485。不會是TTL電平的。一般只接出RXD、TXD,外加GND。
接設備的時候,一般只接GND、RXD、TXD。不會接Vcc或者+3.3V的電源線,避免與目標設備上的供電沖突。GND給收發雙方提供參考電平。TXD和RXD數據線以bit為最小單位傳輸數據,一幀包含:起始位、數據位、校驗位、停止位。
PL2303、CP2102芯片是USB轉TTL串口的芯片,用USB來擴展串口(TTL電平)。USB轉TTL串口如下圖:
MAX232芯片是TTL電平與RS232電平的專用雙向轉換芯片,可以TTL轉RS-232,也可以RS-232轉TTL。如下圖:
UART是通用異步收發傳輸器,它是完成一個特定的功能的硬件,它本身不是協議。它的最基本功能,是串行數據和并行數據之間的轉換。計算機中的數據以Byte為基本單位,對一個Byte的存取是并行的,即同時取得/寫入8個bit。而串行通信,則需要將這個Byte"打碎",按照時間順序來收發以實現串行。它是設備間進行異步通信的關鍵模塊,UART負責處理數據總線和串行口之間的串/并、并/串轉換,并規定了幀格式;通信雙方只要采用相同的幀格式和波特率,就能在未共享時鐘信號的情況下,僅用兩根信號線(Rx 和Tx)就可以完成通信過程,因此也稱為異步串行通信。
例如:
內存中的數據是:11100101
串行發送的實際效果是:1->0->1->0->0->1->1->1
接收則是:1->1->1->0->0->1->0->1
RS232/RS485是兩種不同的電氣協議,也就是說是對電氣特性以及物理特性的規定,作用于數據的傳輸通路上,它并不內含對數據的處理方式。
比如RS232使用3v ~ 15v有效電平,而UART,因為對電氣特性并沒有規定,所以直接使用CPU使用的電平,就是所謂的TTL電平(0~3.3V之間)。更具體的,電氣的特性也決定了線路的連接方式,比如RS232,規定用電平表示數據,因此線路就是單線路的,用兩根線才能達到全雙工的目的。而RS485, 使用差分電平表示數據,因此必須用兩根線才能達到傳輸數據的基本要求,要實現全雙工必需用4根線。但是,無論使用RS232還是RS485,它們與UART都是相對獨立的,但是由于電氣特性的差別,必須要有專用的器件和UART接駁,才能完成數據在線路和UART之間的正常流動。
總結:從某種意義上,可以說線路上存在的僅僅是電流,而RS232/RS485規定了這些電流在什么樣的線路上流動和流動的樣式;在UART那里,電流才被解釋和組裝成數據,并變成CPU可直接讀寫的形式。
RS-232與RS-485的區別
傳輸方式不同。RS-232采取不平衡傳輸方式,即所謂單端通訊。而RS485則采用平衡傳輸,即差分傳輸方式。
傳輸距離不同。RS-232適合本地設備之間的通信,傳輸距離一般不超過20m。而RS-485的傳輸距離為幾十米到上千米。
能否支持多點通訊。RS-232只允許一對一通信,而RS-485接口在總線上是允許連接多達128個收發器。
接口的物理結構方面:
RS-232接口連接器使用型號為DB-25的25芯插頭座。一些設備與PC機連接的RS-232接口,因為不使用對方的傳送控制信號,只需三條接口線,即RXD、TXD、GND,所以采用DB-9的9芯插頭座,傳輸線采用屏蔽雙絞線。
RS-485無具體的物理形狀,根據工程的實際情況而采用的接口。
接口電氣方面:
RS-232傳輸電平信號接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL 電平不兼容故需使用電平轉換電路方能與TTL電路連接。抗干擾能力差。
RS-485傳輸差分信號邏輯1以兩線間的電壓差為+(2-6)V表示;邏輯0以兩線間的電壓差為-(2-6)V表示。接口信號電平比RS-232降低了,不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL 電路連接??垢蓴_能力。
通訊線的區別:
RS-232可以采用三芯雙絞線、三芯屏蔽線等。
RS-485可以采用兩芯雙絞線、兩芯屏蔽線等。
傳輸數據的最大波特率:
RS-232傳輸效率較低,最高波特率為19200bps。雖然傳輸速度很慢,但在很多場合還是很實用的。可以連接各種設備,例如監控、其它的設備升級或調試等都可能需要用到它。功能與USB比較接近,隨著USB端口的越來越普遍,將會出現更多的把USB轉換成RS-232或其它接口的轉換裝置。通過USB接口可連接更多的RS-232設備,不僅可獲得更高的傳輸速度,實現真正的即插即用,同時解決了USB接口不能遠距離傳輸的缺點。
RS-485的數據最高傳輸速率為10Mbps。
單工、半雙工和全雙工的區別:
單工:數據只能在一個方向上傳輸,不能實現雙方通信。如電視、廣播
半雙工:允許數據在兩個方向上傳輸,但是同一時間數據只能在一個方向上傳輸,其實際上是切換的單工。如對講機
全雙工:允許數據在兩個方向上同時傳輸。如手機通話