UART
- UART
- 1. 什麼是UART?
- 2. 硬體接線
- 3. 資料幀格式
- 4. 波特率
- 4.1. 波特率和位元率的定義
- 4.2. 波特率和位元率之間的關係
- 4.3. 波特率的作用
- 5. UART通訊分析實踐
- 5.1. 傳送"Hello, World!",請寫出資料幀。
- 5.2. 每秒傳輸多少個位元組?每秒傳輸多少個位元?
- 6. 總結
- others
參考連結:
- 超簡單的一種通訊,2分鐘搞懂,串列埠通訊的工作原理!
- UART串列埠協議詳解 - 曾小慶的文章 - 知乎
- 有待補充:透徹理解UART通訊,沒有比這篇更詳細的了! - 億佰特物聯網應用的文章 - 知乎
1. 什麼是UART?
通用非同步收發器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,
是一種序列、非同步、全雙工的通訊協議,在嵌入式領域應用的非常廣泛。
2. 硬體接線
- 通訊雙方TX、RX交叉連線
- 通訊雙方共地
3. 資料幀格式
- 啟動位:
- 佔1個位長
- 保持邏輯0電平
- 有效資料位:
- 可選5、6、7、8、9個位長(通常是8bit)
- LSB在前,MSB在後,即最低有效位在前)
- 校驗位:
- 1位,可選是否有
- 常見的是奇偶校驗位
- 停止位:
- 可選1、1.5、2個位長
- 保持邏輯1電平
- 空閒位:
- 匯流排空閒時預設邏輯1電平
4. 波特率
4.1. 波特率和位元率的定義
波特率有一個很重要的相關概念,稱為位元率。
- 位元率:每秒鐘傳輸的位元數,單位bit/s,bps
- 波特率:每秒鐘傳輸的碼元數,單位symbol/s,Baud
4.2. 波特率和位元率之間的關係
位元率 = 波特率 * log2M,M表示每個碼元承載的資訊量(M也可以認為是進位制數)。
二進位制系統中,每個碼元都存在2種狀態,所以波特率數值上等於位元率。
4.3. 波特率的作用
在串列埠通訊中,傳送端和接收端需要規定好一個相同的波特率,才能保證通訊正常。
在描述波特率的作用時,我比較喜歡用打羽毛球來進行比喻。傳送端是發球的人,接收端是接球的人,而波特率就是兩個打球的人揮拍的頻率,如果這兩個人的節奏一致,羽毛球就可以很長時間不落地,而如果有快有慢,就很容易出現丟球的情況。
5. UART通訊分析實踐
UART在波特率為9600bps、資料幀格式為預設8-N-1的情況下:
5.1. 傳送"Hello, World!",請寫出資料幀。
- "Hello, World!"一共有12個位元組,所以一共需要傳送12個UART資料幀。
- 根據ASCII碼,將位元組轉成二進位制表示:
字元 二進位制 H 01001000 e 01100101 l 01101100 l 01101100 o 01101111 , 00101100 W 01010111 o 01101111 r 01110010 l 01101100 d 01100100 ! 00100001 - 資料格式預設8-N-1,所以開始位1位,結束位1位,無校驗位。
0010010001 / 0011001011 /
0011011001 / 0011011001 /
0011011111 / 0001011001 /
0010101111 / 0010101111 /
0011100101 / 0011011001 /
0011001001 / 0001000011 / - 注意資料幀之間要有空閒位
5.2. 每秒傳輸多少個位元組?每秒傳輸多少個位元?
- 1byte = 8bit,但是UART協議中包含開始位和結束位,所以每秒鐘傳輸的位元組數 = 9600/10 = 960
- 根據計算出的每秒鐘傳輸的位元組數,每秒鐘傳輸的位元數是 960*8 = 7680(即一個byte的傳輸速率是7680bps)
6. 總結
- UART屬於哪種型別的通訊方式?
- 請繪製出UART通訊的硬體接線圖。
- 波特率和位元率之間的區別是什麼?
- UART在波特率為9600bps、資料幀格式為預設8-N-1的情況下,傳送"Hello, World!",請寫出資料幀。
- UART在波特率為9600bps、資料幀格式為預設8-N-1的情況下,每秒傳輸多少個位元組(Byte)?每秒傳輸多少個位元(bit)?
others
我之前總是UART、串列埠,兩個概念傻傻分不清楚。
嚴格來說,串列埠是序列通訊介面的簡稱,所有按位傳送和接收的介面都可以被稱作是串列埠。而UART是一種常見的串列埠協議,其餘常見的串列埠協議包括RS232、RS485等等。
但其實也不用分的那麼清楚,在談論微控制器的時候,大家提到串列埠,雙方都會預設就是UART。