調試時總是會遇到各種各樣的接口,各種各樣的轉換板,似懂非懂的感覺很不爽!
首先,串口、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:是電子工業協會(Electronic Industries Association,EIA) 制定的異步傳輸標準接口,同時對應着電平標準和通信協議(時序),其電平標準:+3V~+15V對應0,-3V~-15V對應1。rs232 的邏輯電平和TTL 不一樣但是協議一樣。
RS-232電平:全雙工(邏輯1:-15V--5V 邏輯0:+3V--+15V)
1、硬件框圖如下,TTL用於MCU與PC機之間通信
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電平的(除非特殊應用)。9針串口的定義可以參考這裏:
https://wenku.baidu.com/view/5c170c6925c52cc58bd6be6e.html
我們一般只接出RXD TXD兩針,外加GND。
下圖是個USB轉TTL串口的小板,可以用USB擴展出一個串口。芯片為PL2303HX。網上經常混淆各種串口,但是這個確實是可以給STC單片機下載程序的。
這是另一種,CP2102芯片的,也是USB轉TTL串口。據説比PL2303的好,實際使用中沒感覺出來。這個小板就多了+3.3V電源端,以適應不同的目標電路。下圖為USB轉RS-232串口: