999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

STC單片機波特率自適應方法

2013-04-12 00:00:00趙培宇
現代電子技術 2013年23期

摘 要: 為了縮小電路體積、降低硬件成本,同時又保證串口穩定可靠通信,采用的一種波特率自適應方法,該方法充分利用STC單片機運行速度快、擁有片內振蕩器、片內資源豐富的特點,在串行通信程序中,利用單片機I/O口和定時器,對主機發送的固定字符進行測量、計算,得到合適的波特率常數,從而實現波特率自適應。給出了設計原理、實現方法、誤差分析、流程圖和部分程序,并通過應用實例驗證該方法切實可行。

關鍵詞: STC單片機; 串口通信; 波特率選擇; 自適應方法

中圖分類號: TN911?34; TP391 文獻標識碼: A 文章編號: 1004?373X(2013)23?0041?03

Baud rate adaptive method for STC single?chip microcomputer

ZHAO Pei?yu

(School of Electromechanical and Architectural Engineering, Jianghan University, Wuhan 430056, China)

Abstract : To reduce circuit volume and hardware cost, and at the same time, guarantee the stable and reliable serial port communication, a baud rate adaptive method is proposed. This method makes full use of STC microcontroller′s characteristics of high?speed running, on?chip oscillator, rich on?chip resources. In the serial communication program, the microcontroller′s I/O port and timer are utilized to detect and calculate the fixed character transmitted by host for getting the right baud rate constant, so as to realize the baud rate self?adaption. The design principle and realization method, error analysis, flow chart and part of the program are also given in this paper. The feasibility of the method was verified by a true example.

Keywords: STC single?chip microcomputer; serial communication; baud rate selection; self?adaptive method

0 引 言

串口RS 232是工業控制、儀器儀表、計算機外設常用的一種通信協議。串口通信的波特率一般都是選取標準系列值,并要求通信雙方嚴格遵循相同的波特率,實際應用中,一臺設備往往要與多種其他設備聯絡,為適應各種不同設備的通信速度,就要求該設備能適應不同的波特率,實現這種要求的常見方法有兩種,一是增加波特率選擇開關,二是設計能自動適應各種常見通信速度的串口。第一種方法增加了硬件,同時針對不同對象需要重新設置開關,在不清楚對方波特率的情況下還無法使用。第二種方法采用軟硬件結合,通過檢測、計算,自動選擇正確的波特率,實際使用極其方便。

自適應波特率串口的實現方法通常有以下幾種:

(1)協議約定通信開始時主機固定發送1個字符,從機以不同的波特率試探接收, 當接收到的數據與約定相同時,確定該波特率即是正確的通信波特率。

(2)協議約定通信開始時主機發送1串字符,從機以某固定波特率接收, 然后通過軟件分析接收到的數據,計算出接收數據與發送數據之間的倍數關系,從而確定正確的波特率。

(3)協議約定通信開始時主機固定發送1個字符,從機用單片機定時器檢測RXD上的信號寬度,通過計算來確定主機的波特率。

以上3種方法,第一種由于需要多次試探,效率很低;第二種計算量過大,不適合單片機處理;第三種方式單片機有現成的定時器資源,計算也相對簡單,所以優選這種。

要測量脈沖寬度,前提是單片機的時鐘信號必須穩定。目前很多STC單片機可選外接晶振時鐘或片內RC振蕩時鐘,片內RC振蕩時鐘省去了外部的晶振等元件,成本降低、電路板的體積也可以縮小,這對成本及體積敏感的應用很具優勢。但選用片內RC振蕩時,頻率會有±15%左右的誤差,頻率的穩定性也比外接晶振要差,按理論計算值設置波特率參數,無法保證可靠的通信,但按以上自適應波特率串口的第三種方法,每次通信前實測、計算、確定波特率常數,就可以實現穩定可靠的通信,這樣充分利用了STC單片機的優勢。

1 STC單片機的特點

標準51芯片由于定時器最高分辨率只有1 μs,對于較高的通信波特率來說,測量精度不夠,導致計算值不準,無法正常工作。STC系列單片機是在標準51單片機基礎上發展起來的,它增加了很多實用的接口電路,擴大了時鐘的頻率范圍,設計出了[1T]時鐘的芯片,可以通過軟件對系統時鐘分頻,并提供了片內RC振蕩時鐘,在目前51芯片的市場占有極大的份額。STC系列單片機采用片內RC振蕩時鐘、自適應波特率串口通信技術,可以廣泛地應用于分布式控制、智能儀表、通信等行業。

2 自適應工作原理

STC單片機采用異步通信,UART工作于模式1(8位UART,波特率可變),用定時計數器2做波特率發生器,工作于模式2(8位自動重裝模式),主從機按圖1方式連接,從機自適應主機的波特率。

圖1 系統連接圖

自適應過程由主機發送聯絡字符開始。為了使從機獲得最大的測量脈寬,提高測量精度,由主機發送二進制“0”。如圖2所示,二進制“0”由1位起始位,8位數據位(低位在先)及1位停止位構成,其中1位起始位和8位數據位全為0,所以低電平的寬度為9 b。

圖2 自適應波形圖

從機查詢RXD引腳的電平,檢測到低電平后就啟動定時器0開始計時,再檢測到高電平就停止定時器0計時,根據定時器0的定時值就可以計算出主機的波特率。

當時鐘分頻寄存器CLK_DIV=0(不分頻),特殊功能寄存器AUXR=0xC0([T0]用[1T]時鐘),則:

[每位傳送所需時間=1fosc?T0計數值÷9] (1)

[波特率=1每位傳送所需時間=fosc?1T0計數值×9] (2)

式中[fosc]為從機的時鐘頻率。

而STC51系列單片機在UART模式1,時鐘模式為[1T]時,其波特率公式為:

[波特率=2SMOD?fosc(256-TH1)×32] (3)

由式(2),式(3)可導出UART時鐘為[1T]時:

[TH1(1T)=256-2SMOD?T0計數值288] (4)

STC51系列單片機在UART模式1,時鐘模式為[12T]時,其波特率公式為:

[波特率=2SMOD?fosc(256-TH1)×12×32] (5)

由式(2),式(5)可導出UART時鐘為[12T]時:

[TH1(12T)=256-2SMOD?T0計數值3 456] (6)

從機UART在模式1下,將式(4)或式(6)計算結果作為定時器1重裝值,設定通信參數,通過串口回送應答信號給主機。主機如正確接收到從機回送的信號,就說明從機已完成波特率自適應,可以開始正常通信了。

3 誤差分析

為保證可靠通信,要求通信雙方的波特率相對誤差小于2.5%。

在自適應波特率校準系統中,誤差主要來自兩個方面,一是定時器[T0]啟動和停止滯后造成的誤差[ΔT0;]二是波特率發生器[T1]本身固有的一個機器周期誤差[ΔT1=±1。]由于STC51單片機采用[1T]時鐘定時,[ΔT0]誤差只有標準51系列芯片的[112,]系統誤差主要由[ΔT1]決定。

以STC12C5620為例,當采用片內RC振蕩,時鐘頻率通常在5.2~6.9 MHz之間。當時鐘頻率為5.2 MHz,SMOD=1時,UART時鐘分別按[12T,][1T]計算,見表1,表2。

表1 UART時鐘12分頻時計算的波特率誤差

表1、表2中加粗部分表示可以選用的波特率值,由表1、表2可知,只要編程時選擇合適的時鐘,在5.2 MHz時鐘頻率下,波特率可以在300~115 200 b/s之間實現自適應,由[T1]取整帶來的誤差在0.5%以內。當系統時鐘為6.9 MHz時,用同樣的方法計算,也可以證明波特率可以在300~115 200 b/s之間實現自適應,由T1取整帶來的誤差也在0.5%以內。由此可見,STC12C5620采用片內RC振蕩,可以在300~115 200 b/s之間完成波特率自適應,實現穩定可靠的通信。

表2 UART時鐘1分頻時計算的波特率誤差

4 軟件流程與程序

主機軟件流程圖如圖3所示,從機軟件流程圖如圖4所示。

圖3 主機軟件流程圖 圖4 從機軟件流程圖

以下為C51波特率自適應程序:

void main (void)

{

AUXR=0xC0;

//AUXR.7=1,[T0]用[1T]時鐘;AUXR.6=1,T1用[1T]時鐘

SCON =0x50; //SCON: mode 1, 8 b UART, enable rcvr

TMOD|=0x21; //TMOD: timer 0,mode 1,16 b; timer1, mode 2,8 b reload

PCON|=0x80;

TL0=0; //自適應波特率測量

TH0=0; //T0清零

while(RXD); //RXD引腳為高等待

TR0=1; //開始波特率測量

while(!RXD); //RXD引腳為低等待

TR0=0; //STOP T0

RELOAD=256-(TH0*256+TL0)/144-0.5;

//計算波特率常數,時鐘[1T,]SMOD=1

TH1=RELOAD;

TR1=1; //TR1: timer 1 run

TI=1; //TI: set TI to send first char of UART

RI=0;

REN=1;

IE=0x90; //EA=1;ES=1;

}

5 應用實例

采用STC12C5620設計的重力檢測開關,如圖5所示。為降低成本、縮小體積,采用了片內RC振蕩,不設按鍵及顯示。重力檢測開關首次工作前需設定一些參數,并校準。由于沒有鍵盤及顯示,采用和計算機聯機設置、校準。本電路采用了上述的自適應波特率工作方式,由PC機作主機,通過串口來初始化重力檢測開關的各參數。

圖5 重力檢測開關

計算機設置界面如圖6所示。

圖6 計算機設置界面

設置時,將重力檢測開關與計算機之間用RS 232線連接好,然后點擊PC機軟件界面上的“連接串口” 按鈕進行波特率自適應,當界面上狀態欄提示“連接串口成功!”時,表示波特率自適應工作正確完成,可以進行參數設置和校準操作。設置、校準后,重力檢測開關就可脫機正常工作了。

經反復驗證,該電路在300~115 200 b/s波特率范圍內可穩定通信工作。

6 結 語

該波特率自適應方法,可擴展應用于其他單片機系統,解決對方的波特率未知、或對方的波特率有偏差而無法正常通信的問題,即使對方的波特率不是標準值也可正常工作,具有較大的實用價值。

參考文獻

[1] 南通國芯微電子有限公司.STC12C5628AD數據手冊[S].南通:南通國芯微電子有限公司,2011.

[2] 劉燕,陳興文.串行通信的波特率自動檢測方法的實現[J].大連民族學院學報,2008,10(1):31?34.

[3] 周建華,萬書芹,薛忠杰.一種新穎的UART自適應波特率發生器的設計[J].半導體技術,2007,32(12):1052?1055.

[4] 趙達飛.波特率自適應的模擬串行通信[J].現代計量儀器與技術,2009(7):58?59.

[5] 趙炯.串行數據傳輸協議的剖析研究[J].計算機工程,2004,30(9):105?108.

[6] 馬玉春.串行通信協議的研究及應用[J].計算機應用研究,2004(4):228?232.

[7] 張雷,梁建武,陳英.串行通信協議的研究與實現[J].現代計算機,2006(9):57?59.

[8] 嚴天華,周輝.效率串行通信協議的設計[J].單片機與嵌入式系統應用,2003(6):75?77.

[9] 喬渠,趙國豪,王文記.串行通信波特率的自動識別[J].單片機與嵌入式系統應用,2007(2):33?35.

[10] 常江,胡丹,常亮.串行通信中的波特率設置和誤差分析[J].四川工業學院學報,2004,23(2):22?24.

作者簡介:趙培宇 男,1964年出生,浙江寧波人,高級工程師,主任。主要從事機電一體化、自動化儀器儀表的教學科研工作。

主站蜘蛛池模板: 亚洲成人在线免费| a级毛片毛片免费观看久潮| 国产成人综合网在线观看| 欧美成人综合在线| 91人妻在线视频| 国产亚洲视频免费播放| 最新国产网站| 国产精品私拍99pans大尺度| 99精品在线看| 国模极品一区二区三区| 亚洲码在线中文在线观看| 粗大猛烈进出高潮视频无码| 国产欧美在线观看一区| 久久人人97超碰人人澡爱香蕉| 久久久精品无码一二三区| 国产午夜一级毛片| 亚洲一区二区约美女探花| 中文字幕在线欧美| 欧美成人在线免费| 久久精品中文字幕免费| 国产新AV天堂| 日本三区视频| 亚洲国产中文在线二区三区免| 色综合成人| 97国产在线视频| 欧美在线观看不卡| 99视频在线免费| 国产精品久久久免费视频| 在线视频亚洲欧美| 91蜜芽尤物福利在线观看| 久久影院一区二区h| 国产理论精品| 狠狠做深爱婷婷久久一区| 中国国产高清免费AV片| 高清无码一本到东京热| 久久a级片| 女同国产精品一区二区| 国产午夜无码片在线观看网站 | 国产精品偷伦在线观看| 老司机午夜精品视频你懂的| 免费无码网站| 亚洲人成影视在线观看| 男女男精品视频| 少妇被粗大的猛烈进出免费视频| 日韩无码视频专区| 亚洲视屏在线观看| 欧美午夜在线观看| 国产香蕉97碰碰视频VA碰碰看| 日韩一区二区三免费高清| 欧美日韩中文国产va另类| 亚洲成肉网| 色吊丝av中文字幕| 成人无码一区二区三区视频在线观看| 欧美日韩中文国产| 国产精品亚洲αv天堂无码| 亚洲天堂视频在线观看| 欧美日韩高清在线| 国产免费a级片| 免费看黄片一区二区三区| 一级不卡毛片| 国产超薄肉色丝袜网站| 亚洲综合天堂网| 亚洲午夜天堂| 国产微拍精品| 久久久久亚洲AV成人人电影软件| 在线高清亚洲精品二区| 亚洲精品老司机| 女人18毛片水真多国产| 2020久久国产综合精品swag| 毛片网站免费在线观看| 欧洲精品视频在线观看| 国产第四页| 3344在线观看无码| 天天躁狠狠躁| 中文字幕永久在线观看| 日日噜噜夜夜狠狠视频| 國產尤物AV尤物在線觀看| 国产激情国语对白普通话| 国产精品香蕉在线| 精品无码视频在线观看| 亚洲天堂久久| 国产精品久久久久鬼色|