UART:
universal asynchronous receiver and transmitter 通用異步收發器
總線信號:TX , RX
UART是一種通用串行數據總線,用于異步通信。該總線雙向通信,可以實現全雙工傳輸和接收。在嵌入式設計中,UART用于主機與輔助設備通信,如汽車音響與外接AP之間的通信,與PC機通信包括與監控調試器和其它器件,如EEPROM通信。
作為接口的一部分,UART還提供以下功能:將由計算機內部傳送過來的并行數據轉換為輸出的串行數據流。將計算機外部來的串行數據轉換為字節,供計算機內部并行數據的器件使用。在輸出的串行數據流中加入奇偶校驗位,并對從外部接收的數據流進行奇偶校驗。在輸出數據流中加入啟停標記,并從接收數據流中刪除啟停標記。處理由鍵盤或鼠標發出的中斷信號(鍵盤和鼠標也是串行設備)。
USART:
universal synchronous asynchronous receiver and transmitter 通用同步異步收發器
總線信號: TX, RX, CK
USART是一個全雙工通用同步/異步串行收發模塊,該接口是一個高度靈活的串行通信設備。
特點:
全雙工操作(相互獨立的接收數據和發送數據);
同步操作時,可主機時鐘同步,也可從機時鐘同步;
獨立的高精度波特率發生器,不占用定時/計數器;
支持5、6、7、8和9位數據位,1或2位停止位的串行數據楨結構;
由硬件支持的奇偶校驗位發生和檢驗;
數據溢出檢測;
幀錯誤檢測;
包括錯誤起始位的檢測噪聲濾波器和數字低通濾波器;
三個完全獨立的中斷,TX發送完成、TX發送數據寄存器空、RX接收完成;
支持多機通信模式;
支持倍速異步通信模式。
支持同步模式,因此USART 需要同步始終信號USART_CK(如STM32單片機),通常情況同步信號很少使用,因此一般的單片機UART和USART使用方式是一樣的,都使用異步模式。
USART和UART的區別
USART和UART之間的一個區別是可以為串行數據提供時鐘的方式。 UART在內部向微控制器生成其數據時鐘,并通過使用起始位轉換將該時鐘與數據流同步。沒有與數據相關的輸入時鐘信號,因此為了正確接收數據流,接收器需要提前知道波特率應該是什么。USART可以設置為以同步模式運行。在此模式下,發送外設將生成一個時鐘,接收外設可以從數據流中恢復,而無需提前知道波特率?;蛘?,鏈路將使用完全獨立的線路來承載時鐘信號。使用外部時鐘可使USART的數據速率遠高于標準UART的數據速率,上限可達4 Mbps。
第二個主要區別是外設可以支持的協議數量。 UART很簡單,只提供其基本格式的一些選項,例如停止位數和偶數或奇數奇偶校驗。 USART更復雜,可以以與許多不同標準協議相對應的形式生成數據,例如IrDA,LIN,智能卡,RS-485接口的驅動程序啟用和Modbus等。 USART也具有與UART相同的異步功能
兩者使用情況
USART和UART外設具有明顯不同的功能,可以使用在不同的情況下,開發人員可以在標準微控制器上找到兩個外圍設備。例如,采用針對低功耗設計的微控制器,例如STM32系列。 STM32器件具有片上USART和UART外設。 USART意味著在“高”能耗期間進行所有“繁重的”串行通信。但是,當微控制器處于睡眠狀態且處于低功耗模式時,UART外設可以處理低速通信,同時降低能耗。
USART和UART是否相同?從技術上講,答案是否定的。 USART通常具有更多功能,標準UART和生成時鐘數據的能力允許USART以遠低于UART功能的波特率運行。 USART確實包含了UART的功能,并且在許多應用中,盡管具有USART的強大功能,開發人員將它們用作簡單的UART,忽略或避免這些強大外設的同步時鐘生成功能。難怪有這么多人使用這些術語,就像它們是同義詞一樣。
UART協議
UART作為異步串口通信協議的一種,工作原理是將傳輸數據的每個字符一位接一位地傳輸。
其中各位的意義如下:
起始位:先發出一個邏輯"0"的信號,表示傳輸字符的開始。
數據位:緊接著起始位之后。數據位的個數可以是4、5、6、7、8等,構成一個字符,從Z低位開始傳送。
奇偶校驗位:數據位加上這一位后,使得"1"的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗資料傳送的正確性。
停止位:它是一個字符數據的結束標志??梢允?/span>1位、1.5位、2位的高電平。由于數據是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數越多,不同時鐘同步的容忍程度越大,但是數據傳輸率同時也越慢。
空閑位:處于邏輯"1"狀態,表示當前線路上沒有資料傳送。
波特率:衡量數據傳送速率的指標。表示每秒鐘傳送的比特位