看下面這個圖,大家已經知道今天的主角是uart,我們通常說的串列埠,uart包含ttl電平和rs-232電平兩種,嵌入式系統裡面,微控制器的串列埠一般都是ttl電平。
今天的內容關於uart的幀格式,比較簡單,玩過微控制器的小夥伴應該都知道。
uart的英文全稱是:universal asynchronous receiver/transmitter,意為通用非同步收發傳輸器。
uart因為有兩根線資料線tx和rx,可以以全雙工的形式進行傳送和接收資料,同一時刻,兩條鏈路的傳送器和接收器可以同時傳輸資料。
區別於全雙工的,還有另一種,是半雙工,因為只有一根資料線,所以資料傳輸是這樣。
或者是下面這樣,同一時刻,只有一條鏈路在傳輸資料。
除了雙工形式,還有一種是半工,只有傳送器到接收器這乙個鏈路。
說完了uart的工作模式,下面進入主題——uart幀格式,也可以稱之為uart協議,微控制器與pc之間的通訊,為了保證資料通訊的可靠性,雙方都必須遵從uart協議。
uart資料幀格式
其中各位的含義如下:
如果我們傳輸資料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),也有效減小了累計誤差。
如果覺得我的文章還不錯,幫忙三連。
通俗易懂的C STL
泛型程式設計 generic programming 是一種語言機制,通過它可以實現乙個標準的容器庫。像類一樣,泛型也是一種抽象資料型別,但是泛型不屬於物件導向,它是物件導向的補充和發展。泛型程式設計在c 上的應用主要體現在兩方面 函式模板和類模板。接下來舉個栗子 csdn部落格 anyway,模板...
通俗易懂的CRC校驗
1.crc校驗原理 crc校驗原理看起來比較複雜,好難懂,因為大多數書上基本上是以二進位制的多項式形式來說明的。其實很簡單的問題,其根本思想就是先在要傳送的幀後面附加乙個數 這個就是用來校驗的校驗碼,但要注意,這裡的數也是二進位制序列的,下同 生成乙個新幀傳送給接收端。當然,這個附加的數不是隨意的,...
HDFS的總結 通俗易懂
hdfs 上傳的資料經過切塊分布式儲存 並且每個塊都有多個備份 保證效能和可靠性 優點 支援超大檔案 檢測和快速應對硬體故障 流式資料訪問 簡化的一致性模型 高容錯性 可構建在廉價機器上 缺點 低延遲資料訪問 大量的小檔案 多使用者寫入檔案 修改檔案 不支援超強的事務 block 最基本的儲存單位。...