UART協議

lethe1203發表於2024-03-17
參考部落格:
https://blog.csdn.net/weixin_49259827/article/details/133761740
https://blog.csdn.net/studyingdda/article/details/131946204
Uart:Universal Asyncchronous Receiver Transmitter即通訊非同步收發器,是一種通用的序列、非同步通訊匯流排。該匯流排有兩條資料線,可以實現全雙工的傳送和接收,在嵌入式系統中常用於主機與裝置之前的通訊
波特率:波特率用來描述UART通訊時的通訊速度,其單位為bsp(bit per second),即每秒鐘傳送的bit數量,例如波特率為115200,就是每秒中傳輸115200bit資料

UART幀格式:

0
1、啟動位也稱起始位
2、字元資料5-8位,先發低位,再發高位,一般發八位,符合一個位元組
3、校驗位可有可無,一般為奇校驗或者偶校驗,取決於控制器設定,校驗位僅校驗資料是否正確,無法糾正資料
4、停止位一般為1bit
5、發收雙發需設定相同波特率才能正常進行通訊

UART的優缺點:

以下是uart通訊的一些優缺點:
優點:
1.僅使用兩根傳輸線
2.無需時鐘訊號
3.具有奇偶校驗位以允許進行錯誤檢查
4.只要雙方都設定好資料包的結構,即可改變其資料包結構
缺點:
1.資料幀的大小最大為9位
2.不支援多個從屬系統或多個主系統
3.每個UART的波特率必須在彼此的10%之內

UART的CTS和RTS:

有些uart控制器會加上RTS和CTS訊號線,如下:

RTS和CTS用於流控,提供了流控訊號,但實際的流控功能還是要在軟體實現,就是說即使硬體上RTS和CTS做了連線,但軟體沒有使用這兩個訊號,則通訊就如無流控狀態。

RTS (Require ToSend,傳送請求)為輸出訊號,用於指示本裝置準備好可接收資料,低電平有效,低電平說明本裝置可以接收資料。
CTS (Clear ToSend,傳送允許)為輸入訊號,用於判斷是否可以向對方傳送資料,低電平有效,低電平說明本裝置可以向對方傳送資料

RTS的作用是告訴對方我可以接受資料,是輸出口;CTS的作用是根據電平高低控制傳送或不傳送資料。
如:A與B通訊,現在A給B傳送資料,當B出現某種情況(可能是接受快取快要滿了)的時候,B的RTS拉低(一般拉低表示有效,但也不一定),A的CTS是與B的RTS相連的,則A檢測到它的CTS拉低,就知道B在告訴他暫時不要再發了。他就乖乖地停止傳送。等到B可以繼續接收資料的時候,B的RTS拉高,這時候A的CTS也拉高,A就知道可以繼續傳送資料了。如果A和B收發情況換一下也是一樣的道理

CTS/RTS流控的工作原理如下:

當串列埠準備好傳送資料時,RTS訊號一般只會被置高電平一次,也就是隻有一個上升沿。這個上升沿會被接收端的晶片檢測到,如果當前可以接收資料,接收端傳送一個CTS(Clear To Send)訊號(該訊號一直保持高電平),表示接收端已經準備好接收資料了。如果接收端的緩衝區已經滿了,CTS訊號會被置低電平,傳送端就會停止傳送資料,等待接收端的緩衝區有空間可以存放新的資料後再繼續傳送;
當傳送端接收到CTS訊號後,傳送端的RTS電平會被拉高,開始傳送資料;
當傳送端傳送完資料後,會將RTS訊號置為低電平,表示傳送資料結束。此時,接收端的CTS訊號也會被置為低電平,表示不再需要接收資料;

TTL、RS-232、RS-485:

均是序列通訊標準,可參考https://www.cnblogs.com/lethe1203/p/18078494