串列埠,COM口,UART,USART
本文主要簡述串列埠,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
相關文章
- 串列埠UART串列埠
- (10)uart串列埠通訊串列埠
- 串列埠收發UART(Verilog HDL)串列埠
- UART串列埠及Linux實現串列埠Linux
- Uart進行的串列埠收發串列埠
- FPGA學習筆記03——UART串列埠FPGA筆記串列埠
- MSM8953 Android 9.0 開啟uart串列埠Android串列埠
- STM32F072從零配置工程-串列埠USART配置串列埠
- STM32使用串列埠實現USART1傳送字串串列埠字串
- ESP32 wifi 串列埠轉發資料 UART micropythonWiFi串列埠Python
- 定位模組LuatOS快速入門:源UART串列埠通訊串列埠
- 樹莓派3 B+ 的串列埠(USART)使用問題 (也是用C寫的)樹莓派串列埠
- 串列埠SRAM和並口SRAM的引腳區別串列埠
- 物聯網工業級UART串列埠轉WiFi轉有線網口轉乙太網閘道器WiFi模組選型串列埠WiFi
- 立創泰山派學習07--串列埠UART3的收發測試串列埠
- 串列埠blog串列埠
- 帶內串列埠 在串列埠中輸入命令串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 你真的瞭解串列埠嗎(示波器串列埠波形分析)串列埠
- 串列埠通訊串列埠
- QT實現串列埠助手中串列埠名的實時更新QT串列埠
- 沒有真實串列埠裝置時使用"虛擬串列埠驅動"除錯你的串列埠程式碼串列埠除錯
- win10找不到com埠怎麼辦_win10如何檢視com埠Win10
- Android 串列埠通訊Android串列埠
- 串列埠小工具串列埠
- 【STM32】串列埠串列埠
- linux 串列埠通訊Linux串列埠
- 痞子衡嵌入式:嵌入式裡串列埠(UART)自動波特率識別程式設計與實現串列埠程式設計
- Linux串列埠程式設計Linux串列埠程式設計
- 11. 串列埠通訊串列埠
- 串列埠通訊型別串列埠型別
- Linux下串列埠監視Linux串列埠
- ubuntu繫結串列埠號Ubuntu串列埠
- 串列埠通訊協議串列埠協議
- 虛擬串列埠工具和串列埠除錯工具詳解 - 附下載地址串列埠除錯
- Android之串列埠程式設計Android串列埠程式設計
- 串列埠無法正常通訊串列埠
- 串列埠屏開發曲線串列埠