中文名 | 波特率函數(shù) | 外文名 | baud rate |
---|
#include
speed_t cfgetispeed (const struct termios* termptrl );
speed_t cfgetospeed (const struct termios *termptr) ;
兩個(gè)函數(shù)的返回值: 波特率值
int cfsetispeed ( struct terrnios *tennptr, speed_t speed ) ;
int cfsetospeed ( struct terrnios *termptr, speed_t speed ) ;
兩個(gè)函數(shù)的返回值: 若成功則返回0,著出錯(cuò)則返回-1
兩個(gè)cfget 函數(shù)的返回值 ,以及兩個(gè)cfset 函數(shù)的speed 參數(shù)都是下列常量之 :B50 、B7 5 、BllO 、B134 、Bl 50 、B2 00 、B3 00 、B6 00 、B12 00 、B180 0 、B2 4 00 、B4 800 、B9 6 00 、Bl9200或B38400 。常量B0表示 “掛斷”。在調(diào)用tcsetattr時(shí),如若將輸出波特率指定為 B0 ,則調(diào)制解調(diào)器的控制線就不再起作用。
大多數(shù)系統(tǒng)定義了 另外的波特率值 ,例如B57600 以及B115200.
使用這些函數(shù)時(shí),應(yīng)當(dāng)理解輸入 、輸出波特率是存放在圖 18-3所示的設(shè)備termios結(jié)構(gòu)中的。 在調(diào)用任一cf get函數(shù)之前,先要用tcgetattr獲得設(shè)備的termios結(jié)構(gòu)。與此類似,在調(diào)用任一 cfset 函數(shù)后,應(yīng)將波特率設(shè)置到termios結(jié)構(gòu)中。為使這種更改影響到設(shè)備 ,應(yīng)當(dāng)調(diào)用 tcsetattr 函數(shù)。如果所設(shè)置的波特率有錯(cuò) ,則在調(diào)用tcsetattr之前,不會(huì)發(fā)現(xiàn)這種錯(cuò)誤。這4個(gè)波特率函數(shù)使應(yīng)用程序不必考慮 具體實(shí)現(xiàn)在 termios結(jié)構(gòu)中表示波特率的不同方法。 BSD派生的平臺(tái)趨向于存放波特率的數(shù)值 (例如9600波特就存放為9600 ) ,同時(shí)Linux和系統(tǒng)V 派生的平臺(tái)趨向于以位屏蔽方式表示波特率 。從cf get 函數(shù)得到的以及向cf set傳送的速度值 與它們存放在termios結(jié)構(gòu)中的一樣。2100433B
波特率 即 調(diào)制速率 ,指的是信號(hào)被 調(diào)制 以后在單位時(shí)間內(nèi)的 波特 數(shù),即單位時(shí)間內(nèi) 載波 參數(shù)變化的次數(shù)。它是對(duì)信號(hào)傳輸速率的一種度量,通常以“波特每秒”(Bps)為單位。 波特率有時(shí)候會(huì)同 比特...
什么叫波特率:1、單片機(jī)或計(jì)算機(jī)在串口通信時(shí)的速率。2、指的是信號(hào)被調(diào)制以后在單位時(shí)間內(nèi)的變化,即單位時(shí)間內(nèi)載波參數(shù)變化的次數(shù),如每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位,1個(gè)停止...
單片機(jī)中計(jì)算串行口的波特率時(shí),根據(jù)波特率是公式計(jì)算,我總是算不出正確值,波特率的單位是什么
波特率的單位是:波特/秒,也就是一秒內(nèi)接收到多少個(gè)字符,根據(jù)你單片機(jī)的晶振頻率、機(jī)器周期設(shè)定波特率,也就是設(shè)定在定時(shí)器中的初值,此時(shí)為了精確,要考慮到每一句程序的時(shí)間
格式:pdf
大小:167KB
頁(yè)數(shù): 3頁(yè)
評(píng)分: 4.6
設(shè)計(jì)了一種基于硬件電路的RS-485光電收發(fā)器。對(duì)光電收發(fā)器模塊的原理及使用場(chǎng)合進(jìn)行簡(jiǎn)要論述。比較了工業(yè)控制領(lǐng)域中3種常用的光電收發(fā)器實(shí)現(xiàn)原理,對(duì)波特率自適應(yīng)方法進(jìn)行了詳細(xì)介紹并給出原理說明。模塊使用硬件電路搭建方向控制及整形電路,與軟件控制相比更加實(shí)時(shí),可靠,同時(shí)降低了通信系統(tǒng)的復(fù)雜性。經(jīng)現(xiàn)場(chǎng)驗(yàn)證表明,相關(guān)性能指標(biāo)完全滿足要求。
格式:pdf
大?。?span id="igw0w0c" class="single-tag-height">167KB
頁(yè)數(shù): 未知
評(píng)分: 4.4
根據(jù)銅錄山地區(qū)歷年降雨量對(duì)礦坑涌水量的影響情況,運(yùn)用樣條插值函數(shù)對(duì)建帷幕前降雨量與排水量的關(guān)系進(jìn)行了計(jì)算、研究與分析,得出了它們?cè)诟鹘涤陞^(qū)間上的函數(shù)關(guān)系;提出了一種能較好地計(jì)算堵水率,評(píng)價(jià)帷幕注漿效果的方法。利用該法對(duì)銅錄山礦帷幕注漿堵水率進(jìn)行計(jì)算,表明該法是一種行之有效的方法。
波特率指數(shù)據(jù)信號(hào)對(duì)載波的調(diào)制速率,它用單位時(shí)間內(nèi)載波調(diào)制狀態(tài)改變次數(shù)來表示 。
波特率發(fā)生器不是產(chǎn)生波特率的,波特率時(shí)鐘頻率/波特率因子=波特率。
波特率發(fā)生器的作用是從輸入時(shí)鐘轉(zhuǎn)換出需要的波特率clk,即波特率時(shí)鐘頻率。
一個(gè)完整的由verilog實(shí)現(xiàn)的波特率發(fā)生器:
module baud_gen(
clk_50MHz, rst_p, bclk
);
input clk_50MHz; /*輸入的系統(tǒng)時(shí)鐘,50MHz*/
input rst_p; /*復(fù)位脈沖,高電平有效*/
/* 倍頻值16乘以9600波特率,即9600*16=153600,得到波特率發(fā)生器的實(shí)際輸出信號(hào)頻率為153.6kbit/s */
output bclk; // 輸出信號(hào):UART(串口)波特率發(fā)生器輸出的時(shí)鐘脈沖,頻率:153.60kbps
//即每秒1536000個(gè)脈沖,*波特率發(fā)生器輸出脈沖bclk,注意:除了主頻分頻之外,
//還決定了這個(gè)信號(hào)的占空比,在本例中輸出信號(hào)占空比為 1:325
reg bclk; //寄存器數(shù)據(jù)類型bclk
reg [8:0] cnt; //寄存器數(shù)據(jù)類型cnt,9位,UART用它來記錄接收到的主頻脈沖個(gè)數(shù),
//注意在修改輸出波特率值時(shí),若占空比小于1:511,需要增加該變量所占位數(shù)
//以下語(yǔ)句利用同步計(jì)數(shù)器完成時(shí)鐘分頻,
always @(posedge clk_50MHz) begin /* 每當(dāng)信號(hào)clk_50MHz發(fā)生電平變化執(zhí)行以下語(yǔ)句 */
if(rst_p) begin /* 如果復(fù)位脈沖信號(hào)為高電平執(zhí)行以下語(yǔ)句 */
cnt <= 0; //對(duì)主頻信號(hào)計(jì)數(shù)器cnt做非阻塞方式復(fù)位賦值,賦值為邏輯0 。此后每當(dāng)時(shí)鐘信號(hào)到來就變。
bclk <= 0; /* 寄存器變量bclk賦值為邏輯0,使該脈沖信號(hào)復(fù)位為低電平,以低電平作為開始*/
end
else begin
/* 50MHz除以153600(UART實(shí)際頻率)等于325.5 即50_000_000 /153600 = 325.5(波特率除數(shù)) */
if(cnt > 324) begin /*如果cnt的數(shù)值大于324,即cnt計(jì)數(shù)脈沖數(shù)等于325(0-324個(gè)脈沖)*/
cnt <= 0; /* 50MHz主頻信號(hào)計(jì)數(shù)器cnt值,被非阻塞方式復(fù)位*/
bclk <= 1; /*串口波特率時(shí)鐘脈沖信號(hào)bclk賦值為邏輯1,使該脈沖信號(hào)跳變到高電平周期*/
end
else begin
cnt <= cnt 1; /* 50MHz主頻信號(hào)計(jì)數(shù)器cnt值被非阻塞方式增量賦值(加1) */
bclk <= 0; //波特率發(fā)生器時(shí)鐘脈沖信號(hào)bclk被非阻塞方式賦值為’0’,
//使該脈沖信號(hào)跳變到低電平周期*/
end
end
end
endmodule
在串行通訊中,收發(fā)雙方的數(shù)據(jù)傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時(shí)器T1的溢出率控制。
方式0
方式0的波特率固定為主振頻率的1/12。
方式2
方式2的波特率由PCON中的選擇位SMOD來決定,可由下式表示:
波特率=2的SMOD次方除以64再乘一個(gè)fosc,也就是當(dāng)SMOD=1時(shí),波特率為1/32fosc,當(dāng)SMOD=0時(shí),波特率為1/64fosc
方式1和方式3
定時(shí)器T1作為波特率發(fā)生器,其公式如下:
T1溢出率= T1計(jì)數(shù)率/產(chǎn)生溢出所需的周期數(shù)
式中T1計(jì)數(shù)率取決于它工作在定時(shí)器狀態(tài)還是計(jì)數(shù)器狀態(tài)。當(dāng)工作于定時(shí)器狀態(tài)時(shí),T1計(jì)數(shù)率為fosc/12;當(dāng)工作于計(jì)數(shù)器狀態(tài)時(shí),T1計(jì)數(shù)率為外部輸入頻率,此頻率應(yīng)小于fosc/24。產(chǎn)生溢出所需周期與定時(shí)器T1的工作方式、T1的預(yù)置值有關(guān)。
定時(shí)器T1工作于方式0:溢出所需周期數(shù)=8192-x 定時(shí)器T1工作于方式1:溢出所需周期數(shù)=65536-x
定時(shí)器T1工作于方式2:溢出所需周期數(shù)=256-x
因?yàn)榉绞?為自動(dòng)重裝入初值的8位定時(shí)器/計(jì)數(shù)器模式,所以用它來做波特率發(fā)生器最恰當(dāng)。
當(dāng)時(shí)鐘頻率選用11.0592MHZ時(shí),取易獲得標(biāo)準(zhǔn)的波特率,所以很多單片機(jī)系統(tǒng)選用這個(gè)看起來“怪”的晶振就是這個(gè)道理。
下表列出了定時(shí)器T1工作于方式2常用波特率及初值。
常用波特率 Fosc(MHZ) SMOD TH1初值 19200 11.0592 1 FDH 9600 11.0592 0 FDH 4800 11.0592 0 FAH 2400 11.0592 0 F4H 1200 11.0592 0 E8H
例如9600 11.0592 0 FDH
T1溢出率= T1計(jì)數(shù)率/產(chǎn)生溢出所需的周期數(shù)
產(chǎn)生溢出所需的周期數(shù)=256-FD(253)=3 SMOD=0 11059200/12*3 *1/32=9600
在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收的數(shù)據(jù)速率要有一定的約定,我們通過軟件對(duì)MCS—51串行口編程可約定四種工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率決定。
串行口的四種工作方式對(duì)應(yīng)著三種波特率。由于輸人的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不同。
一、方式0的波特率
方式0時(shí),移位時(shí)鐘脈沖由56(即第6個(gè)狀態(tài)周期,第12個(gè)節(jié)拍)給出,即每個(gè)機(jī)器周期產(chǎn)生一個(gè)移位時(shí)鐘,發(fā)送或接收一位數(shù)據(jù)。所以,波特率為振蕩頻率的十二分之一,并不受 PCON寄存器中SMOD的影響,即: 方式0的波特率=fosc/12
二、方式l和方式3的波特率
方式1和方式3的移位時(shí)鐘脈沖由定時(shí)器T1的溢出率決定,故波特宰由定時(shí)器T1的 溢出率與SMOD值同時(shí)決定,即: 方式1和方式3的波特率=2SMOD/32·T1溢出率
其中,溢出率取決于計(jì)數(shù)速率和定時(shí)器的預(yù)置值。計(jì)數(shù)速率與TMOD寄存器中C/T的狀態(tài)有關(guān)。當(dāng)C/T=0時(shí),計(jì)數(shù)速率=fosc/2;當(dāng)C/T=1時(shí),計(jì)數(shù)速率取決于外部輸入時(shí)鐘頻率。
當(dāng)定時(shí)器Tl作波特率發(fā)生器使用時(shí),通常選用可自動(dòng)裝入初值模式(工作方式2),在 工作方式2中,TLl作為計(jì)數(shù)用,而自動(dòng)裝入的初值放在THl中,設(shè)計(jì)數(shù)初值為x,則每過“256一x”個(gè)機(jī)器周期,定時(shí)器T1就會(huì)產(chǎn)生一次溢出。為了避免因溢出而引起中斷,此時(shí)應(yīng)禁止T1中斷。這時(shí),溢出周期為:2100433B