【总线】一文看懂 UART 通信协议
目錄
UART 通信簡介
UART工作原理
起始位
數據幀
奇偶校驗位
停止位
UART 傳輸的步驟
UART的優缺點
優點
缺點
UART 通信簡介
UART即通用異步收發器,是一種通用的串行、異步通信總線,該總線有兩條數據線,可以實現全雙工的發送和接收,在嵌入式系統中常用于主機與輔助設備之間的通信。在UART通信中,兩個UART直接相互通信。發送UART將來自控制設備(如CPU)的并行數據轉換為串行形式,將其串行傳輸到接收UART,然后UART將串行數據轉換回接收設備的并行數據。在兩個UART之間傳輸數據只需要兩根線。數據從發送 UART 的 Tx 引腳流向接收 UART 的 Rx 引腳:
UART異步傳輸數據,這意味著沒有時鐘信號將發送UART的位輸出同步到接收UART的位采樣。發送UART不是時鐘信號,而是將開始位和停止位添加到正在傳輸的數據包中。這些位定義了數據包的開始和結束,因此接收UART知道何時開始讀取位。
當接收UART檢測到起始位時,它開始以稱為波特率的特定頻率讀取傳入位。波特率是數據傳輸速度的度量,以每秒比特數(bps)表示。?兩個 UART 必須以大約相同的波特率運行。在位的時序偏離太遠之前,發送和接收 UART 之間的波特率只能相差約 10%。還必須將兩個 UART 配置為傳輸和接收相同的數據包結構。
| 需要的線數 | 2 |
| 最大速率 | 最大可達10Mb/s |
| 同步或異步 | 異步 |
| 串行或并行 | 串行 |
| 主機的最大個數 | 1 |
| 從機的最大個數 | 1 |
UART工作原理
將要傳輸數據的UART從數據總線接收數據。數據總線用于通過另一個設備(如CPU,內存或微控制器)將數據發送到UART。數據以并行形式從數據總線傳輸到傳輸UART。在發送UART從數據總線獲取并行數據后,它會添加一個起始位、一個奇偶校驗位和一個停止位,從而創建數據包。接下來,數據包在Tx引腳上逐位串行輸出。接收UART在其Rx引腳上逐位讀取數據包。然后,接收的UART將數據轉換回并行形式,并刪除起始位、奇偶校驗位和停止位。最后,接收UART將數據包并行傳輸到接收端的數據總線:
UART傳輸的數據被組織成數據包。每個數據包包含 1 個起始位、5 到 9 個數據位(取決于 UART)、一個可選的奇偶校驗位以及 1 個或 2 個停止位:
起始位
UART數據傳輸線在不傳輸數據也就是處于空閑時通常保持在高電平。為了開始數據傳輸,發送UART將傳輸線從高電平拉到低電平一個時鐘周期。當接收UART檢測到從高到低的電壓轉換時,它開始以波特率的頻率讀取數據幀中的位。
數據幀
數據框包含正在傳輸的實際數據。如果使用奇偶校驗位,則長度可以是 5 位到 8 位。如果未使用奇偶校驗位,則數據幀的長度可以為 5 位到 9 位。在大多數情況下,數據從數據幀中的最低位開始發送。
奇偶校驗位
奇偶校驗位的目的是檢查數據幀在發送到接收有沒有發生數據錯誤,奇偶校驗描述數字的偶數或奇數。奇偶校驗位是接收UART的一種方式,用于判斷在傳輸過程中是否有數據發生了變化。接收的UART讀取數據幀后,它會計算值為1的位數,并檢查總數是偶數還是奇數。如果奇偶校驗位為 0(偶數奇偶校驗),則數據幀中的 1 位應加起來為偶數。如果奇偶校驗位為 1(奇數奇偶校驗),則數據幀中的 1 位應加起來為奇數。當奇偶校驗位與數據匹配時,UART 知道傳輸沒有錯誤。但是,如果奇偶校驗位為 0,并且總數為奇數;或者奇偶校驗位是1,而總數是偶數,UART知道數據幀中的位已經改變。
停止位
為了發出數據包結束的信號,發送UART將數據傳輸線從低電平轉換到高電平至少要持續兩個位的時間。
UART 傳輸的步驟
1. 發送UART從數據總線并行接收數據:
2. 發送 UART 將起始位、偶校驗位和停止位添加到數據幀中:
3. 整個數據包從發送 UART 以串行方式發送到接收 UART。接收UART以預配置的波特率對數據線進行采樣:
4. 接收 UART 從數據幀中丟棄起始位、奇偶校驗位和停止位:
5. 接收UART將串行數據轉換回并行,并將其傳輸到接收端的數據總線:
UART的優缺點
沒有一個通信協議是完美的,但UART非常擅長它所做的事情。以下是一些優缺點:
優點
- 僅使用兩根線
- 無需時鐘信號
- 具有奇偶校驗位以便檢查數據是否有誤
- 數據包的結構可以更改,只需在兩端添加必要的位
缺點
- 數據幀的大小限制為最大9位
- 不支持多個主機或者從機
- 每個UART的波特率必須在彼此的10%以內
總結
以上是生活随笔為你收集整理的【总线】一文看懂 UART 通信协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NC Portal单据增加自定义按钮
- 下一篇: 机器学习理论: PAC学习