一、前言
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)前線路上沒(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é)(幀)