數據幀
對于發送設備和接收設備來說,兩者的串行通信配置應該設置為完全相同。
起始位:起始位是在實際數據之前添加的同步位。起始位標記數據包的開始。通常,空閑數據線,即當數據傳輸線不傳輸任何數據時,它保持在高電壓電平。為了開始數據傳輸,發送 UART 將數據線從高電平拉到低電平(從 1 到 0)。接收 UART 在數據線上檢測到這種從高到低的變化,并開始讀取實際數據。通常,只有一個起始位。
數據位:數據位是從發送方傳輸到接收方的實際數據。數據幀的長度可以在 5 到 9 之間(如果不使用奇偶校驗,則為 9 位,如果使用奇偶校驗,則只有 8 位)。
奇偶校驗位:奇偶校驗允許接收器檢查接收到的數據是否正確。Parity 是一個低級錯誤檢查系統,有兩種類型:偶校驗和奇校驗。
停止位:表示一幀數據的結束。電平邏輯為“1”停止位,顧名思義,標志著數據包的結束。它通常有兩位長,但通常只使用一個位。為了結束傳輸,UART 將數據線保持在高電壓。
如果用通用IO口模擬UART總線,則需一個輸入口,一個輸出口。
接收
UART受一個內部時鐘信號控制。該時鐘信號是數據傳輸率的倍頻,典型是比特率的8或16倍。接收器在每個時鐘脈沖時測試接收到的信號狀態是否為開始比特。
如果開始比特的低電平持續傳輸1個比特所需時間的一半以上,則認為開始了一個數據幀的傳輸;否則,則認為是毛刺脈沖并忽略。
到了下一個比特時間后,線路狀態被采樣并送入移位寄存器。約定的表示一個字符的所有數據比特(典型為5至8個比特)接收后,移位寄存器可被接收系統使用。UART將設置一個標記指出新數據可用,并產生一個處理器中斷請求主機處理器取走接收到的數據。
UART的標準特性之一是在接收下一個字符時在緩沖區保存上一個接收到的字符。這種“雙緩沖區”允許接收計算機用一個字符的傳輸時段來獲取緩沖區內的上一個字符。
許多UART有更大的FIFO緩沖區,允許主機一次處理多個字符,這特別適用于高傳輸數據率的串行通信同時處理器中斷頻率有限(通常中斷間隔大于1毫秒)。
發送器
UART把一個字符放入移位寄存器,就開始產生一個數據幀。對于全雙工通信,發送與接受使用不同的移位寄存器。使用更大的FIFO使得主機處理器或DMA(Direct Memory Access)放置多個字節后由UART自主完成傳輸。UART用一個標志位表示busy。
在 UART 中,發送器和接收器必須事先就時序參數達成一致。此外,UART 在每個數據字的開頭和結尾使用特殊位來同步發送器和接收器。
在基于 UART 的串行通信中,發送器和接收器以下列方式進行通信。發送設備上的 UART 即發送 UART 從 CPU(微處理器或微控制器)接收并行數據并將其轉換為串行數據。
該串行數據被傳輸到接收設備上的 UART,即接收 UART。接收 UART 在接收到串行數據后,將其轉換回并行數據并提供給 CPU。由于 UART 涉及并行到串行和串行到并行數據轉換,因此移位寄存器是 UART 硬件的重要組成部分(具體來說是兩個移位寄存器:發送器移位寄存器和接收器移位寄存器)。
UART規則
如前所述,UART 中沒有時鐘信號,發送器和接收器必須就串行通信的某些規則達成一致,以實現無差錯數據傳輸。規則包括:
?同步位(開始位和停止位)
?奇偶校驗位
?數據位和
?波特率
波特率:使用波特率提到數據傳輸的速度。發送 UART 和接收 UART 必須在波特率上達成一致才能成功傳輸數據。
波特率以每秒位數為單位。一些標準波特率是 4800 bps、9600 bps、19200 bps、115200 bps 等。其中 9600 bps 波特率是最常用的一種。
讓我們看一個示例數據幀,其中必須傳輸兩個數據塊,即 00101101 和 11010011。幀的格式是 9600 8N1 即 9600 bps,有 8 位數據,無奇偶校驗和 1 個停止位。在這個例子中,我們沒有使用奇偶校驗位
-
寄存器
+關注
關注
31文章
5359瀏覽量
120790 -
uart
+關注
關注
22文章
1242瀏覽量
101536 -
發送器
+關注
關注
1文章
259瀏覽量
26860 -
數據幀
+關注
關注
0文章
47瀏覽量
6756
發布評論請先 登錄
相關推薦
評論