單片機串行通信波特率的自適應實(shí)現方法
比較式(3)和式(4),主機和從機波特率應設置相等,則可得從機波特率發(fā)生器T1的裝入初值為:
由式(5)可看出,從機波特率發(fā)生器裝入初值與晶振無(wú)關(guān),且當N=8時(shí)分母為28,此時(shí)后一項做除法運算最為方便,分子右移8位即可,在程序運算中只需丟棄分子的最后一個(gè)字節即可。
若使用定時(shí)器2作波特率發(fā)生器,則易得其初值應為:
3 波特率自適應法在IAP編程握手同步中的應用
SST89C54/58單片機可以方便地實(shí)現IAP(InApplication Programming),通過(guò)IAP功能可以在應用板上直接下載程序,不需任何編程器就可以完成單片機系統的開(kāi)發(fā)及單片機教學(xué)實(shí)驗。作者基于IAP模塊設計了一款專(zhuān)用的51單片機開(kāi)發(fā)學(xué)習系統,其成本不超過(guò)50元,為標準51,52系列單片機的開(kāi)發(fā)與學(xué)習提供了一種便捷而廉價(jià)的手段和方法。
使用IAP功能可以對產(chǎn)品的軟件進(jìn)行在線(xiàn)升級,而不需要其他硬件??梢赃@樣說(shuō),單片機系統只要有串行口,利用IAP功能通過(guò)串行口便可將PC機內的產(chǎn)品升級軟件下載到產(chǎn)品中去,而實(shí)現產(chǎn)品軟件升級換代。甚至在遠程通過(guò)Modem對產(chǎn)品進(jìn)行軟件升級,這也將是以后各種電子產(chǎn)品發(fā)展的必然趨勢。而在線(xiàn)升級離不開(kāi)通信速率的自動(dòng)適應。
同步握手中斷處理程序流程圖如圖4所示。從機在待機監控狀態(tài)時(shí),開(kāi)放外部中斷 0,當主機訪(fǎng)問(wèn)從機時(shí),先發(fā)送同步字節80H,再送FEH(也可為55H, AAH等),則當80H發(fā)出時(shí)從機RXD腳出現負跳變,觸發(fā)外部中斷0,啟動(dòng)定時(shí)器0對同步脈沖進(jìn)行測量,同時(shí)關(guān)閉外中斷0,并初始化串行口建立串行口數據接收,等待下一同步字節FEH,若同步成功則發(fā)應答信號,否則進(jìn)入監控程序繼續等待同步。所有數據收發(fā)完畢后再開(kāi)放外中斷0,進(jìn)入監控待機狀態(tài)。
4 結 語(yǔ)
在自制的SST89C5X系列單片機IAP仿真系統上對文中提出的方法反復進(jìn)行了測試,在從機主振為12 MHz條件下,從300~38 400 b/s范圍的各種常用波特率從機均很好地適應。當波特率低于120 b/s時(shí),定時(shí)器0會(huì )產(chǎn)生溢出,若主機可能用到此波特率,可以用T0中斷計數對計數值進(jìn)行修正。若采用查詢(xún)RXD引腳電平的方式,則圖1可進(jìn)一步簡(jiǎn)化,即可以不用外中斷0,這更能節約硬件資源。文中提出的方法可以很
方便地應用于多機分布式控制系統中,也可以應用于各種需要變波特率的場(chǎng)合。
參考文獻
[1]Silicon Storage Technology,Inc.Designconsiderations for the SSTFlashFlex51 family microcontroller[EB/OL].http://www.sst.com,2003-06-10.
[2]Silicon Storage Technology,Inc.SSTFlash-Flex51 microcontroller In-appliccationProgramming Basics[EB/OL].http://www.sst.com,2003-06-10.
[3]任貴勇.串行通信波特率的一種自動(dòng)檢測方法[J].計算機自動(dòng)測量與控制,2000,8(1):54-61.
[4]胡漢才.單片機原理及系統設計[M].北京:清華大學(xué)出版社,2002.
[5]萬(wàn)新恒.80C51系列單片機波特率自動(dòng)檢測的通用程序[J].自動(dòng)化與儀表,1997,12(5):45-46.
[6]楊亞江.一種簡(jiǎn)便的單片機串行通信參數自整定方法[J].電測與儀表,2002,39(437):51-54.
[7]張慶輝.串行通信波特率自動(dòng)檢測方法及軟件實(shí)現[J].微計算機信息,2002,18(12):57-58.
評論