uart
通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發傳輸器,是電腦硬件的一部分。它將要傳輸的資料在串行通信與並行通信之間加以轉換。作為把並行輸入信號轉成串行輸出信號的芯片,UART通常被集成於其他通訊接口的連結上。
具體實物表現為獨立的模塊化芯片,或作為集成於微處理器中的周邊設備。一般是RS-232C規格的,與類似Maxim的MAX232之類的標准信號幅度變換芯片進行搭配,作為連接外部設備的接口。在UART上追加同步方式的序列信號變換電路的產品,被稱為USART(Universal Synchronous Asynchronous Receiver Transmitter)。
UART是一種通用串行數據總線,用於異步通信。該總線雙向通信,可以實現全雙工傳輸和接收。在嵌入式設計中,UART用於主機與輔助設備通信,如汽車音響與外接AP之間的通信,與PC機通信包括與監控調試器和其它器件,如EEPROM通信。
UART的功能計算機內部采用並行數據,不能直接把數據發到Modem,必須經過UART整理才能進行異步傳輸,其過程為:CPU先把准備寫入串行設備的數據放到UART的寄存器(臨時內存塊)中,再通過FIFO(First Input First Output,先入先出隊列)傳送到串行設備,若是沒有FIFO,信息將變得雜亂無章,不可能傳送到Modem。它是用於控制計算機與串行設備的芯片。有一點要注意的是,它提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。
作為接口的一部分,UART還提供以下功能:將由計算機內部傳送過來的並行數據轉換為輸出的串行數據流。將計算機外部來的串行數據轉換為字節,供計算機內部並行數據的器件使用。在輸出的串行數據流中加入奇偶校驗位,並對從外部接收的數據流進行奇偶校驗。在輸出數據流中加入啟停標記,並從接收數據流中刪除啟停標記。處理由鍵盤或鼠標發出的中斷信號(鍵盤和鼠標也是串行設備)。
以處理計算機與外部串行設備的同步管理問題。有一些比較高檔的UART還提供輸入輸出數據的緩沖區,比較新的UART是16550,它可以在計算機需要處理數據前在其緩沖區內存儲16字節數據,而通常的UART是8250。如果您購買一個內置的調制解調器,此調制解調器內部通常就會有16550 UART。
USART
USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/異步串行接收/發送器USART是一個全雙工通用同步/異步串行收發模塊,該接口是一個高度靈活的串行通信設備。
USART特點
1. 全雙工操作(相互獨立的接收數據和發送數據);
2. 同步操作時,可主機時鍾同步,也可從機時鍾同步;
3. 獨立的高精度波特率發生器,不占用定時/計數器;
4. 支持5、6、7、8和9位數據位,1或2位停止位的串行數據楨結構;
5. 由硬件支持的奇偶校驗位發生和檢驗;
6. 數據溢出檢測;
7. 幀錯誤檢測;
8. 包括錯誤起始位的檢測噪聲濾波器和數字低通濾波器;
9. 三個完全獨立的中斷,TX發送完成、TX發送數據寄存器空、RX接收完成;
10.支持多機通信模式;
11.支持倍速異步通信模式。
結構組成
USART收發模塊一般分為三大部分:時鍾發生器、數據發送器和接收器。控制寄存器為所有的模塊共享。
時鍾發生器由同步邏輯電路(在同步從模式下由外部時鍾輸入驅動)和波特率發生器組成。發送時鍾引腳XCK僅用於同步發送模式下,發送器部分由一個單獨的寫入緩沖器(發送UDR)、一個串行移位寄存器、校驗位發生器和用於處理不同楨結構的控制邏輯電路構成。使用寫入緩沖器,實現了連續發送多幀數據無延時的通信。
接收器是USART模塊最復雜的部分,最主要的是時鍾和數據接收單元。數據接收單元用作異步數據的接收。除了接收單元,接收器還包括校驗位校驗器、控制邏輯、移位寄存器和兩級接收緩沖器(接收UDR)。接收器支持與發送器相同的幀結構,同時支持幀錯誤、數據溢出和校驗錯誤的檢測。
uart和usart的區別
UART與USART都是單片機上的串口通信,他們之間的區別如下:
首先從名字上看:
UART:universal asynchronous receiver and transmitter通用異步收/發器
USART:universal synchronous asynchronous receiver and transmitter通用同步/異步收/發器
從名字上可以看出,USART在UART基礎上增加了同步功能,即USART是UART的增強型,事實也確實是這樣。但是具體增強到了什么地方呢?
其實當我們使用USART在異步通信的時候,它與UART沒有什么區別,但是用在同步通信的時候,區別就很明顯了:大家都知道同步通信需要時鍾來觸發數據傳輸,也就是說USART相對UART的區別之一就是能提供主動時鍾。如STM32的USART可以提供時鍾支持ISO7816的智能卡接口。