24小時聯系電話:18217114652、13661815404
中文
技術專題
串行通信協議-第二部分:UART
串行通信協議-第二部分:UART
我們將研究流行的UART器件。它不是通信協議,而是微控制器或獨立IC中用于傳輸和接收串行數據的物理電路。它支持我們撰寫的系列文章,以介紹一些可用的不同類型的串行通信協議。
串行通信是在諸如微控制器,產生數據的外圍設備和其他智能設備之類的設備之間傳輸信息的理想機制。我們希望您下次設計需要結合串行通信總線時,會發現此資源非常寶貴。UART通常也稱為設備上的串行端口。但是,這通常會與另一種使用DB9樣式連接器并使用RS-232作為硬件協議的串行端口混淆。將UART連接到RS-232收發器是很常見的,以使微控制器上的UART外設與基于RS-232的設備相互通信。
UART代表通用異步接收器發送器。該通信系統需要除接地以外的兩個引腳。一個標記為TX(發送器),另一個標記為RX(接收器)。名稱中出現異步一詞意味著它不需要時鐘信號。由于沒有時鐘,因此發送和接收設備必須使用相同的波特率。
波特率(Bd)是傳輸速率的度量單位。此參數確定發送器和接收器的數據通道上的通信速度。波特率可以表示為每秒位數,以使其更簡單。因此,速率為1000 Bd意味著通信速度為每秒1000位,或者一位的持續時間為1/1000秒或1毫秒。波特率具有標準度量標準前綴,例如kBd(千比特),MBd(兆比特)或GBd(千兆比特)。波特率包括消息的非數據部分,例如開始和停止位,這意味著從發送器發送到接收器的有用信息的發送率將略低。
一些更流行的預定義UART波特率包括:
110波特
300波特
1200波特
4800波特
9600波特
19200波特
38400波特
115200波特
有時,兩個通信設備的波特率都可以調整,而有時,其中一個設備將具有固定的波特率,要求另一個更改與之匹配。
因此,要使用UART連接兩個設備,發送器TX引腳應連接到接收器RX引腳
在某些配置下,兩個設備上都將具有RX和TX引腳,從而使您可以將命令從微控制器發送到專用IC,并從另一個方向接收命令或信息。這稱為雙工連接。當不需要第二設備的反饋時,也有一些應用。因此,通信只需要一個方向。因此,僅需要一條TX到RX傳輸線。這稱為單純形連接。
發送設備將需要發送一個起始位,以啟動從該設備到接收設備的通信。該位通知接收設備通信已經開始。
然后,將數據位作為代表實際數據的八位流發送,其中最高有效位(MSB)標記為D7,最低有效位(LSB)標記為D0。
然后,在這些數據位的末尾,發送器發送一個停止位(表明這是消息的末尾),并將UART總線置于其空閑模式。
在這種情況下,我們可以看到;完整的UART消息將由10位組成。在空閑模式下,UART總線被拉高,它發送一個開始位,該開始位為低,然后是8個數據位,然后是停止位。停止位不限于僅僅一位。它可以有多種配置,具體取決于通信速率有多快。這種配置意味著整個消息位設置至少持續一次將總線信號電壓電平從低電平持續更改為高電平。
最高有效位D7也可以用作奇偶校驗位。該位提供了基本的錯誤檢查機制,該機制出現在通信的最小塊中。奇偶校驗位可用于確保高位或一位的總數為奇數或偶數,具體取決于編碼。對于偶數奇偶校驗,如果設置了數據位D0至D6,則它們由偶數個高位組成,則奇偶校驗位設置為0(低)。相反,如果這組位的高位數量不均勻,則奇偶校驗位設置為1(高)。這確保了消息中高位的總數將是偶數。在奇偶校驗檢查不均勻的情況下,如果將數據位D0至D6設置為由偶數個高位組成,則奇偶校驗位將設置為1(高)。相反,如果這組位的高位數量不均勻,然后將奇偶校驗位設置為0(低)。這樣可以確保消息中高位的總數為奇數。
因此,通過使用奇偶校驗位,可以通過檢查設置的位來檢測錯誤。假設包括奇偶校驗位在內的總位數設置為高是不正確的。在這種情況下,奇偶校驗位允許接收器在傳輸期間檢測到錯誤。但是,這種類型的錯誤保護無法糾正錯誤,只能捕獲已發生的錯誤,因為無法確定整個位集中的哪個位不正確。它只能檢測一位是否處于錯誤狀態。如果總體奇偶校驗最終正確,則可能無法檢測到影響多個位的任何錯誤。
如果檢測到奇偶校驗錯誤,則必須丟棄整個消息并從頭開始重新傳輸。在高干擾或高噪聲水平的情況下,可能需要花費大量時間才能成功傳輸。但是,它有助于防止消息錯誤。
除此之外,UART通信的接收和發送端必須使用完全相同的波特率和字符長度,奇偶校驗機制以及停止位配置,才能成功進行通信。
UART還有一個變體,稱為USART。這是通用同步異步接收器發送器。當為數據計時時,它既可以充當異步通道(就像UART),又可以充當同步通道。時鐘可以從數據本身恢復,也可以作為單獨的外部信號發送。
在同步模式下使用USART時,不需要啟動和停止位。由于位時序具有時鐘參考,因此這允許通信在同步操作時使用更高的數據速率。因此,更多的位可用于數據而不是開始/停止位。
串口 |
ART |
UART只需要一個數據信號 |
USART同步模式需要數據和時鐘。 |
在UART中,不必以固定速率傳輸數據。 |
在USART同步模式下,數據以固定速率傳輸。 |
在UART中,通常一次只發送一個字節的數據。 |
在USART中,同步數據通常以數據塊的形式傳輸。 |
在UART中,數據傳輸速度設置為特定值附近,例如4800、9600、38400 bps等。 |
在USART中,如果所有其他因素保持不變,則同步模式比異步模式允許更高的DTR(數據傳輸速率)。 |
UART速度限制在115200 bps左右。 |
USART可以達到115 kbps以上的速率。 |
全雙工通信:數據可以同時在兩個方向上發送。 |
半雙工通信:一次只能在一個方向上發送數據。 |
UART和USART的主要目的是將PC總線上的并行數據轉換為串行數據,可以使用串行驅動器在符合串行通信協議標準(例如RS-232或RS-485)的總線上傳輸串行數據。UART / USART和外部總線之間需要接口轉換器。然后,這允許該數據由相似的設備讀取,而這兩者不需要使用完全相同的串行數據格式。只要兩者之間的傳輸符合通用的受支持標準協議,每個設備內串行通信的實現就可以特定于該設備。
盡管UART在計算機市場上已被USB取代,但它們仍廣泛用于低成本設備中的串行通信。