UART UART 1. 什麼是UART? 2. 硬體接線 3. 數據幀格式 4. 波特率 4.1. 波特率和比特率的定義 4.2. 波特率和比特率之間的關係 4.3. 波特率的作用 5. UART通信分析實踐 5.1. 發送"Hello, World!",請寫出數據幀。 5.2. 每秒傳輸多少個字 ...
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。