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