除錯時總是會遇到各種各樣的介面,各種各樣的轉換板,似懂非懂的感覺很不爽!
首先,串列埠、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連線各種外設,隨身碟、鍵鼠、行動硬碟、當然也包括“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串列埠: