今天的主角是 UART,我們通常說的串口,UART 包含 TTL 電平和 RS-232 電平兩種,嵌入式系統里面,單片機的串口一般都是 TTL 電平。
今天的內容關于 UART 的幀格式,比較簡單,玩過單片機的小伙伴應該都知道。
UART 的英文全稱是:Universal Asynchronous Receiver/Transmitter,意為通用異步收發傳輸器。
UART 因為有兩根線數據線 TX 和 RX,可以以全雙工的形式進行發送和接收數據,同一時刻,兩條鏈路的發送器和接收器可以同時傳輸數據。
區別于全雙工的,還有另一種,是半雙工,因為只有一根數據線,所以數據傳輸是這樣。
或者是下面這樣,同一時刻,只有一條鏈路在傳輸數據。
除了雙工形式,還有一種是半工,只有發送器到接收器這一個鏈路。
說完了 UART 的工作模式,下面進入主題——UART 幀格式,也可以稱之為 UART 協議,單片機與 PC 之間的通信,為了保證數據通信的可靠性,雙方都必須遵從 UART 協議。
UART 數據幀格式
其中各位的含義如下:
起始位:發送 1 位邏輯 0(低電平),開始傳輸數據。
數據位:可以是 5~8 位的數據,先發低位,再發高位,一般常見的就是 8 位(1 個字節),其他的如 7 位的 ASCII 碼。
校驗位:奇偶校驗,將數據位加上校驗位,1 的位數為偶數(偶校驗),1 的位數 4 為奇數(奇校驗)。
停止位:停止位是數據傳輸結束的標志,可以是 1/1.5/2 位的邏輯 1(高電平)。
空閑位:空閑時數據線為高電平狀態,代表無數據傳輸。
如果我們傳輸數據 0X33(00110011),那么對應的波形就是如下這樣,因為是 LSB 在前,所以 8 位數據依次是 11001100
發送 0X33 數據幀格式
如果再發其他數據,再依次循環這個過程即可。
UART 是異步傳輸,以 1 個字符為傳輸單位,傳輸 2 個字符之間的時間間隔,比如傳輸 0X33 后再傳輸 0X35,這兩者時間間隔是未知的。
但是同一字符內相鄰位間的時間間隔是確定的,比如 0X33 低兩位的 1 和 1 之間的時間間隔是確定的,這涉及到 UART 傳輸速率的概念——波特率。
波特率的單位是 bps,全稱是 bit per second,意為每秒鐘傳輸的 bit 數量。
波特率 9600bps,代表每秒鐘傳輸 bit 的數量為 9600,那么傳輸 1bit 數據的時間就是 1/9600=104us,波特率 115200bps,代表傳輸 1bit 數據的時間是 8us。
兩個串口之間是如何發送和接受數據呢?
首先,UART1 以 9600 波特率發送 0X33,先在數據線上放 1 個 104us 脈寬的低電平(起始位),然后是連續 2 個 104us 脈寬的高電平(2bit 邏輯 1),依次類推。
其次,UART2 以 9600 波特率接收 0X33,通過數這些數據的脈寬,來確認數據。
為了確保數據傳輸的正確性,減少誤差,一般 UART1 和 UART2 之間的波特率差別小于 10%,一次最多只能傳輸 1 個字節(8bit),也有效減小了累計誤差。
審核編輯 黃昊宇
-
uart
+關注
關注
22文章
1270瀏覽量
103360
發布評論請先 登錄

51單片機經典入門教程(非常棒的教程)
基于51單片機PWM直流電機調速程序 0到20級的調速
工業與IT網絡中的以太網數據幀:格式與用途全解析

DRAM基本單元最為通俗易懂的圖文解說

上位機如何實現發送參數給單片機,單片機保存接收的參數重復運行指定的功能
單片機怎么寫入程序
單片機的中斷機制
以太網幀格式和功能詳解
請問什么是軌到軌?這種運放和普通運放比有什么特點和優點?
單片機燒錄程序的基本步驟是什么
單片機驅動彩屏最簡方案:單片機_RA8889最小開發板驅動控制TFT彩屏介紹(一)
通俗易懂的理解,什么是芯片?

藍牙模塊如何實現單片機和手機端數據互傳

評論