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年出生,浙江寧波人,高級工程師,主任。主要從事機電一體化、自動化儀器儀表的教學科研工作。

主站蜘蛛池模板: av色爱 天堂网| 免费在线视频a| 亚洲va视频| 97se亚洲| 国产麻豆另类AV| 国内精自视频品线一二区| 国产精品免费福利久久播放 | 美女毛片在线| 日韩欧美91| 国产视频大全| 国产精品黑色丝袜的老师| 99免费在线观看视频| 亚洲综合激情另类专区| 国产综合网站| 久久免费视频6| 欧美日韩中文国产| 在线永久免费观看的毛片| 国产午夜看片| 亚洲成人精品| 在线欧美一区| 亚洲成人精品| 久久国产高清视频| 欧美区一区二区三| 国产成人精品免费视频大全五级| 亚洲 欧美 偷自乱 图片| 国产伦片中文免费观看| 中文字幕精品一区二区三区视频| 114级毛片免费观看| 午夜成人在线视频| 最新国产高清在线| 国产一级特黄aa级特黄裸毛片| www亚洲天堂| 国产电话自拍伊人| 成人韩免费网站| 亚洲国产黄色| 996免费视频国产在线播放| 人妖无码第一页| 综合天天色| 香蕉蕉亚亚洲aav综合| 亚洲成年人网| 亚洲精品你懂的| 97视频免费看| 亚洲无码在线午夜电影| 日韩人妻少妇一区二区| 亚洲欧美在线精品一区二区| 一区二区三区高清视频国产女人| 亚洲色图另类| 亚洲人视频在线观看| 久久毛片免费基地| 九色视频一区| 亚洲最大福利网站| 亚洲免费三区| 国产麻豆精品在线观看| 精品国产网站| 91精品视频在线播放| 亚洲色婷婷一区二区| 久久中文字幕av不卡一区二区| 亚洲精品动漫| 99久久精品国产综合婷婷| 波多野结衣一区二区三区四区视频 | 91娇喘视频| 亚洲妓女综合网995久久| 青草娱乐极品免费视频| 在线看AV天堂| 国产91高跟丝袜| 找国产毛片看| 国产精品精品视频| 在线看片国产| 99久久精彩视频| 亚洲天堂久久新| 视频一本大道香蕉久在线播放| 国产va在线观看免费| 中文字幕佐山爱一区二区免费| 欧美视频免费一区二区三区| 97se亚洲| 日本一本正道综合久久dvd | 国产成人综合久久精品下载| 91久久青青草原精品国产| 尤物国产在线| 日韩中文精品亚洲第三区| 国内精品免费| 四虎精品黑人视频|