單片機(jī)串行通信波特率的自適應(yīng)實(shí)現(xiàn)方法
在串行異步通信中,目前實(shí)現(xiàn)波特率自動(dòng)檢測(cè)并適應(yīng)的設(shè)計(jì)思想有多種,可是他們或者需要額外的硬件支持,或者實(shí)現(xiàn)時(shí)方法繁雜且軟件開(kāi)銷(xiāo)大。文章介紹了一種簡(jiǎn)單可靠的用軟件實(shí)現(xiàn)波特率自動(dòng)適應(yīng)的方法,并給出了仿真調(diào)試電路原理圖,給出了同步程序的詳細(xì)框圖。該方法提高了波特率解調(diào)的便捷性和兼容性。
本文引用地址:http://www.ex-cimer.com/article/172120.htm1 仿真電路
SST89C54/58單片機(jī)是MCS-51系列單片機(jī)的派生產(chǎn)品,他們?cè)谥噶钕到y(tǒng)、硬件結(jié)構(gòu)和片內(nèi)資源上與標(biāo)準(zhǔn)8052單片機(jī)完全兼容。實(shí)際上 SST公司的SST89C54/58是一款使用非常方便51系列單片機(jī),如不考慮其看門(mén)狗定時(shí)器和內(nèi)部Flash程序存儲(chǔ)器,可以將其看成是一個(gè)可在線編程的標(biāo)準(zhǔn)8052單片機(jī)。圖1為實(shí)現(xiàn)串行通信仿真調(diào)試硬件原理圖,這是一個(gè)通用的串行通信接口電路INT0腳用來(lái)啟動(dòng)從機(jī)同步適應(yīng)。同步建立后的數(shù)據(jù)傳送過(guò)程中外部中斷0被禁止,而一批數(shù)據(jù)傳送完畢后進(jìn)入待機(jī)監(jiān)控狀態(tài)時(shí)則開(kāi) 放外中斷。
2 波特率自適應(yīng)實(shí)現(xiàn)原理
2.1 波特率
對(duì)于8052單片機(jī),串行通信用定時(shí)器1或定時(shí)器2作波特率發(fā)生器,波特率取決于他們的溢出率。當(dāng)串行口在工作方式1,3,用定時(shí)器1作波特率發(fā)生器時(shí), 則波特率計(jì)算如下:
當(dāng)定時(shí)器1工作方式2時(shí),n=8,X為定時(shí)器1初值。
當(dāng)定時(shí)器1工作方式1時(shí),n=16,X為定時(shí)器1初值。
若用定時(shí)器2作波特率發(fā)生器時(shí),則波特率計(jì)算公式如下:
其中:X為定時(shí)器2的初值。
2.2 波特率自適應(yīng)原理
主機(jī)端要求和從機(jī)建立通信時(shí),先發(fā)送同步字符80H,從機(jī)根據(jù)此同步字符來(lái)計(jì)算當(dāng)前的通信速率,并設(shè)置此值為本從機(jī)的波特率,從而完成通信速率的自適應(yīng)。以串行通信方式1為例,他是一個(gè)10位的數(shù)據(jù)格式,如圖2所示。
所以,在發(fā)送同步字符80H時(shí),在數(shù)據(jù)線上他所呈現(xiàn)的電平狀態(tài)如圖3所示。
從機(jī)通過(guò)檢測(cè)本機(jī)RXD引腳的信號(hào),并利用定時(shí)器對(duì)RXD信號(hào)的低電平進(jìn)行寬度測(cè)量,其負(fù)脈寬時(shí)間TDOWN剛好是8位數(shù)據(jù)的寬度,這有利于波特率發(fā)生器初值的計(jì)算。采用定時(shí)器0方式1并置初值0對(duì)TDOWN進(jìn)行定時(shí),可得計(jì)數(shù)值TH0,TL0,用XT來(lái)表示,設(shè)從機(jī)晶振為ff,
評(píng)論