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