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