一、前言
1960年代,DEC(Digital Equipment Corp)公司的Gordon Bell采用大約50個分離元件設計了一個電路板,發明了UART。
時至今日,已經60多年,雖然在個人消費類電子產品中,UART已近乎絕跡;但在工業、科研、國防、航空/航天等領域,UART卻無處不在。
很多從事多年嵌入式開發的老鐵居然還不會根據波特率計算UART的速率,下面彭老師2分鐘帶你掌握計算方法。
二、uart幀格式
要證明速率的計算,必須搞清楚uart數據幀格式
其中各位的意義如下:
• 起始位:先發出一個邏輯“0”信號,表示傳輸字符的開始;
• 數據位:可以是5~8位邏輯“0”或“1”,如ASCII碼(7位),擴展BCD碼(8位),小端傳輸;
• 校驗位:數據位加上這一位后,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗) ;
• 停止位:它是一個字符數據的結束標志。可以是1位、1.5位、2位的高電平【通常為1位】;
• 空閑位:處于邏輯“1”狀態,表示當前線路上沒有資料傳送。
例如我們傳輸數據0X33(00110011),那么對應的波形就是如下這樣,因為是LSB在前,所以8位數據依次是11001100。
由上圖可得,
- 假設沒有奇偶校驗位,停止位為1位 要傳輸1個字節(8個bit)數據, 那么實際硬件上需要傳輸10位(1個起始位,8個數據位,1個停止位)
- 如果有奇偶校驗位,停止位為1位 要傳輸1個字節(8個bit)數據, 那么實際硬件上需要傳輸11位(1個起始位,8個數據位,1個奇偶校驗位,1個停止位)
三、波特率、比特率
1)波特率
UART速率,也稱為波特率,
是指數據在串行通信中每秒鐘傳輸的位數(包含起始位、數據位、校驗位、停止位)。
比如:115200波特率意思就是在二進制傳輸條件下每秒傳輸115200個比特。
2)比特率
比特率也叫信息傳輸速率,
單位時間傳遞的平均信息量或比特數(只包含有效的數據位)。
比特率通常以bps(bits per second)表示。
四、速率計算
比特率與波特率計算公式是:
比如沒有奇偶校驗位,停止位為1位
波特率115200對應的比特率為
比特率 = (115200*8 )/(1個起始位 + 8個數據位 + 0個奇偶校驗位 + 1個停止位)=115200*8/10 = 11520*8 b/s
轉換為字節 就是11520 B/s,即每秒傳輸11520個字節(幀)