<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 用單片機實(shí)現異步串行數據再生

用單片機實(shí)現異步串行數據再生

作者: 時(shí)間:2012-02-09 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

本文引用地址:http://dyxdggzs.com/article/172147.htm

在現代移動(dòng)通信的傳輸網(wǎng)絡(luò )中,普遍采用同步數字體系(SDH)光傳輸設備。很多移動(dòng)通信基站的光傳輸設備提供的輔助通道都保留接口,如:RS232、RS422方式。通信接口雖然效率低、速度慢,但具有技術(shù)簡(jiǎn)單,產(chǎn)品成本低、使用方便的優(yōu)點(diǎn),在計算機監控、智能化設備等方面仍有廣泛的應用。這些光傳輸設備一般在每個(gè)基站提供兩個(gè)口,分別通向鏈路上相鄰的兩個(gè)基站,稱(chēng)為端到端方式。通過(guò)這些輔助信道可傳輸一些基他設備的網(wǎng)管信息或基站的動(dòng)力環(huán)境監控信息。要想利用這種分段的輔助信道在鏈路上傳遞信息,必須在每個(gè)基站將兩個(gè)方向的口進(jìn)行溝通、連接。這樣,串行數據每經(jīng)過(guò)一個(gè)基站都要進(jìn)行一次“同步—”、“異步—同步”的轉換。

異步串行數據要通過(guò)同步數字體系傳送,必然要進(jìn)行碼速調整。由于異步通信的波特率(9600、4800等)一般都不是標準的通信碼速(64K、128K 等),在碼速調整的過(guò)程中,會(huì )改變每位數據對應的電平寬度,從而造成異步數據的波形畸變。隨著(zhù)經(jīng)過(guò)的基站數量的增加,波形的畸變逐漸累積。對于異步接口,通常使用的是稱(chēng)為起止式通信方式。在接收操作時(shí),接口電路使用自己的時(shí)鐘(通常是波特率的16倍或64倍)對信號進(jìn)行取樣,當確認收到一個(gè)起始位后,每隔 16個(gè)或64個(gè)時(shí)鐘對接收信號采樣一次,并移入移位寄位器,直到一個(gè)字符接收完畢。當數據的波形畸變累積到一定程度后,接收數據就會(huì )出現誤碼,嚴重時(shí)就會(huì )導致通信中斷。

出現這種情況后,最簡(jiǎn)單的辦法是降低通信波特率。但降低波特率并不能消除數據的波形畸變,只是有限地延長(cháng)了通信距離,代價(jià)是降低了系統數據的實(shí)時(shí)性。徹底的解決方案是在波形畸形嚴重到產(chǎn)生誤碼之前,對傳輸的異步串行數據進(jìn)行。

2 硬件設計

AT89C2051是ATMAL公司生產(chǎn)的一種MCS-51系列兼容產(chǎn)品,20個(gè)引腳封裝,片內集成了2K 字節的Flash Memory、128字節的RAM和一個(gè)全雙工的串行口。AT89C2051體積小、價(jià)格低廉,比很多串行口擴展芯片還便宜,片內的RAM還可以靈活地用作收發(fā)數據的緩存,很適合作為異步串行數據器。MAX202用于TTL-RS232電平轉換,如果使用的是RS422接口,則可將MAX202換成 MAX490完成TTL-RS422電平轉換。MAX818是AT80C2051的上電復位和WATCHDOG電路。硬件原理圖見(jiàn)圖1。

22.jpg

兩個(gè)AT89C2051的功能是將他們從RXD管腳收到的數據再按設定的波特率從TXD管腳發(fā)送出去。這樣,從COM1口來(lái)的信號被D1接收后,發(fā)送到 COM2口,從COM2口來(lái)的信號被D2接收后,發(fā) 送到COM1口。通過(guò)異步串行數據器的串行數據都經(jīng)過(guò)了AT80C2051的轉發(fā),經(jīng)過(guò)了一次:串-并”(接收)、“并-串”(發(fā)送)的轉換。在“并-串”轉換(發(fā)送)的過(guò)程中,數據在精確的波特率時(shí)鐘的作用下從發(fā)送移位寄存器中移出,消除了接收數據中的波形畸變,從而完成了異步串行數據的再生功能。通過(guò)改變AT89C2051上P17、P16、P15三個(gè)引腳的電平可設定通信的波特率。

3 軟件設計

基于上述硬件設計,兩個(gè)AT89C2051的功能是完全相同的,因此,它們的軟件也是完全相同的。在進(jìn)行了變量初始化之后,根據P17、 P16、P15三個(gè)管腳的電平,設置串行口的波特率。波特率范圍是150、300、600、1200、2400、4800、9600、 19200BPS。因為沒(méi)有其他任務(wù),串行口的操作采用了簡(jiǎn)潔的查詢(xún)方式。軟件中,需要在RAM中為接收數據設置一個(gè)FIFO緩沖區,否則在轉發(fā)過(guò)程中容易出現溢出現象導致數據丟失。程序流程圖見(jiàn)圖2。

AT89C2051與MCS-51指令集兼容,可通過(guò)C語(yǔ)言編寫(xiě),大大提高了編程效率。本設計中的軟件在Keil μ Vision2 V205集成環(huán)境中編譯、調試通過(guò)。目標代碼僅150字節左右,因此軟件功能還有擴充的余地。

以下是C語(yǔ)言源程序清單:

23.jpg

24.jpg

25.jpg

26.jpg

4 結語(yǔ)

該設計產(chǎn)品已在多個(gè)現場(chǎng)作用,性能良好。一般情況下,每隔三到四個(gè)基站增加一個(gè)異步串行數據再生器,可保證整個(gè)通信鏈路穩定工作在9600BPS狀態(tài)下。

用AT89C2051異步串行數據的再生,硬件成本低、工作可靠,軟件編程方便、簡(jiǎn)潔。如果增加光耦,還可收發(fā)端的電氣隔離。在通信規約的支持下,通過(guò)擴充軟件功能可使AT89C2051自動(dòng)適應各種通信波特率。お

參考文獻
[1]陳建鐸.Intel單片機應用技術(shù)[M].陜西科學(xué)技術(shù)出版社,1991



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>