波特率(Baud Rate) 單位 bps -- 每秒傳送的字節(jié)數(shù) Byte Per Second.。
(BaudRate) 模擬線路信號的速率,也稱調(diào)制速率,以波形每秒的振蕩數(shù)來衡量。如果數(shù)據(jù)不壓縮,波特率等于每秒鐘傳輸?shù)臄?shù)據(jù)位數(shù),如果數(shù)據(jù)進行了壓縮,那么每秒鐘傳輸?shù)臄?shù)據(jù)位數(shù)通常大于調(diào)制速率,使得交換使用波特和比特/秒偶爾會產(chǎn)生錯誤。 波特率是指數(shù)據(jù)信號對載波的調(diào)制速率,它用單位時間內(nèi)載波調(diào)制狀態(tài)改變的次數(shù)來表示,其單位是波特(Baud)。波特率與比特率的關(guān)系是比特率=波特率X單個調(diào)制狀態(tài)對應的二進制位數(shù)。 在信息傳輸通道中,攜帶數(shù)據(jù)信息的信號單元叫碼元,每秒鐘通過信道傳輸?shù)拇a元數(shù)稱為碼元傳輸速率,簡稱波特率。波特率是傳輸通道頻寬的指標。 每秒鐘通過信道傳輸?shù)男畔⒘糠Q為位傳輸速率,簡稱比特率。比特率表示有效數(shù)據(jù)的傳輸速率。
波特率就是一秒種傳輸0或1的個數(shù),若波特率是9600那么它傳輸一位0或1的時間就是1/9600秒如果串口工作在方式一下波特率是9600晶振是11059200定時器選用timer1的自動重裝模式即1/9600=定時時間就是1/9600=(12*32/11059200)*(256-定時初值)。那么定時初值=256-(11059200/(12*32*9600));
RS-485 就是 EIA-485,EIA-485僅僅規(guī)定了接受端和發(fā)送端的電氣特性。沒有規(guī)定或推薦任何通訊協(xié)議。
EIA-485可以應用于配置便宜的廣域網(wǎng)和采用單機發(fā)送,多機接受通信鏈接。它提供高速的數(shù)據(jù)通信速率。(EIA-485和EIA-422一樣 使用雙絞線進行高電壓差分平衡傳輸,它可以進行大面積長距離傳輸(超過1200米)。
不同的通訊協(xié)議,就是不同的數(shù)據(jù)通訊約定,如何呼,如何應,如何送,如何校對,如何握手。例如常見的 HTTP,F(xiàn)TP就是protocl(通訊協(xié)議)。通訊協(xié)議 分應用層,傳輸層,網(wǎng)絡(luò)層,數(shù)據(jù)鏈路層,物理層,具體協(xié)議多極了。
波特率9600是什么意思
波特率是一個電子信號上的術(shù)語,用于描述信道的數(shù)據(jù)傳輸速度。所謂信道,可以是無線的,也可以是有線的,說白了就是兩個東西之間傳輸數(shù)據(jù)。
波特率通常單位是bit/s,也就是 二進制位/秒。因為一個字節(jié)是8個bit,而一個字節(jié)通常可以表達一個ASCII碼,比如一個英文字母,所以:9600的波特率的信道,理論上每秒可以傳輸9200/8個英文字母的數(shù)據(jù)量,也就是1200個字節(jié),大約1.2KB。而19200則是每秒可傳輸2400字節(jié)。
比如一個文件,假設(shè)容量是100KB,那么它通過9600的信道傳輸,需要的時間至少是100/1.2秒,也就是超過一分鐘了。
和19200波特率的信道,都是早期接口的傳輸率標準。比如早期的COM口(也叫串口),經(jīng)常采用這樣的標準,今天看來,速度非常非常慢。早期使用這樣的接口用于鼠標、鍵盤等簡單裝置的連接,以及計算機和其它設(shè)備的通信。而現(xiàn)在,還有少數(shù)主板支持這樣的接口。
在今天的計算機上,這個接口標準早已淘汰,但是生產(chǎn)中,還是有很多設(shè)備支持這樣的接口。
比如,在數(shù)控機床上,當計算機與機床通信的時候,很多機床都要求使用COM口,以9600,11200或19200之類的波特率進行通信。
串口通信為什么要設(shè)置波特率
有兩種比較可靠地說法:
1:根據(jù)電、傳輸介質(zhì)等的物理特性結(jié)合串口設(shè)備使用的要求
為了保證有效通訊,根據(jù)電、傳輸介質(zhì)等的物理特性結(jié)合串口設(shè)備使用的要求,確定RS232最大傳輸速率只能是115200,然后逐級二分得到57600,28800,19200……為適應這些速率,設(shè)計相應的晶振頻率。
2:這是由電信線路特性決定的
電話線路的帶通是300--3KHz,當時hayes先搞的modem,所以用的2400HZ信號,對應波特率是2400。由于基本頻率確定了,以后采用的提高通訊速率的方法都是在2400基礎(chǔ)上倍頻的,所以形成了9600.19200。。。。
不管哪種說法,都是先有波特率再有晶振頻率。
單片機串口通信波特率計算 。
在模式0和模式2下,串口波特率固定,模式0為Fosc/12。模式2為Fosc/32或Fosc/64,具體由PCON寄存器的SMOD位決定。
在模式1和模式3下,波特率是一個可變值,波特率可以由定時器1產(chǎn)生(8052可以由定時2產(chǎn)生),那么波特率到底為多少呢?波特率由定時器1的溢出率來決定:
Baud Rate = (2SMOD/32)*(Timer 1 Overflow Rate)
注意:2SMOD這里的SMOD是指數(shù),SMOD為波特率雙倍波特率位,該位在PCON寄存器中。
當使用timer 1作為波特率產(chǎn)生器時,通常需要將timer 1配置成8位自動重裝的工作模式下,同時還要禁止timer 1中斷,那么timer 1的溢出率是怎樣計算的呢?溢出率即溢出的頻率,假設(shè)晶振頻率為12MHz,TH1值為0xFE,則只需要兩個時鐘脈沖就會溢出,溢出的周期為2us,那么溢出的頻率就為500KHz。根據(jù)定時器一節(jié),定時時間有如下計算公式:
定時時間=(最大計數(shù)值-計數(shù)器初值)*機器周期=(最大計數(shù)值-計數(shù)器初值)*(12/晶振頻率(Hz))(s)=(256-TH1)*(12/OSC_FREQ(Hz))(s)。
那么溢出頻率自然就為:
OSC_FREQ(Hz)/((256-TH1)*12)。
所以最后推到出波特率為:
?。?SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))。
波特率的計算公式有了,那自然就可以根據(jù)波特率推導出TH1的初值了:
BAUD_RATE=(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))
32*12*(256-TH1)=(2SMOD*OSC_FREQ(Hz))/BAUD_RATE
256-TH1=(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)
TH1=256-(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)
假設(shè)晶振頻率為11.0592MHz,波特率為9600,SMOD=0,TH1初值應該為多少呢?根據(jù)上面公式可以計算得TH1=256-11059200/(9600*32*12)=0xFD。
小編推薦閱讀:
評論
查看更多