<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è) > 嵌入式系統 > 設計應用 > RS485/RS232轉換器實(shí)現的串行通信

RS485/RS232轉換器實(shí)現的串行通信

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

2.2PC機側RS485/RS232轉換器的設計

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

RC機側RS485/RS232轉換器的電路如圖4所示。

該電路首先通過(guò)MAX490芯片將單片機側經(jīng)遠距離傳輸的電流環(huán)信號轉換成TTL/CMOS標準的電平信號,然后通過(guò)光隔6N137隔離,得到兩個(gè)同樣是與TTL/CMOS電平相兼容的電平信號;最后,經(jīng)RS232芯片轉換成 RS232電平:其中RS232電平的邏輯“0”的電平范圍為-5V~-15V,邏輯“1”的電平范圍為+5V~+15V。這里RS232電平轉換芯片選用MAXIM公司的MAX232A[4],該芯片采用單電源(+5V)供電,RS232電平由內部電荷泵產(chǎn)生,其內部結構如圖5所示。


在RS485/RS232轉換器的設計過(guò)程中需要特別注意的是電源的設計。單片機側和PC機側的RS485芯片理論上可共用一個(gè)電源。實(shí)際上,如果穩壓電路安裝在單片機側,同時(shí)又將此電源直接拉至PC側的RS485/RS232轉換器中,由于電源線(xiàn)可能長(cháng)達上百米,電源線(xiàn)的線(xiàn)徑又不可能選得很粗。如此遠距離的傳輸將會(huì )導致電源電壓在PC機側有一個(gè)很大的落差,這樣,有可能造成PC機側的MAX490或光隔IC702工作不正常。一個(gè)比較好的解決辦法是首先直接將單片機側變壓器輸出的交流信號經(jīng)長(cháng)距離傳輸至RS485/RS232轉換器,然后經(jīng)整流和穩壓,作為PC機側MAX490和光隔 IC702的供電電源。此外,RS232和光隔左側的供電電源PCVCC可以利用PC機內部開(kāi)關(guān)電源的+5V輸出,或者由外部穩壓電源提供。

3、通信軟件的設計

利用上述硬件通信電路,可以實(shí)現符合RS485協(xié)議的串行通信,同時(shí)又對軟件的編寫(xiě)沒(méi)有任何額外要求,因為本電路改變了傳輸通道的信號傳輸方式。單片機側的通信可以采用查詢(xún)方式或串行中斷方式。在電參數測試儀中,為了保證上位機和下位機之間時(shí)序的嚴格一致,我們采用了查詢(xún)方式,這部分程序的編寫(xiě)較簡(jiǎn)單,具體可參閱文獻[1][3]。PC機側WINDOWS環(huán)境下的通信程序,可直接利用VC++提供的相應于串口的API函數完成RS232 通信編程,具體可參閱文獻[2][3]。

由于數據傳輸是在強干擾的環(huán)境中進(jìn)行的,而且傳輸距離又較遠,為了保證數據能高速、準確傳輸,軟件編程時(shí)可以考慮對大批量的數據進(jìn)行分組傳送,同時(shí)對每組數據進(jìn)行和校驗,檢查其傳輸的準確性。在實(shí)際使用中,設定每組數據的數據頭為單字節0AAH,中間為256個(gè)字節的采樣數據,數據最后一個(gè)字節為和校驗結果。PC機每接收到一組數據,均要進(jìn)行再次和校驗,,然后將PC機的校驗結果和單片機的校驗結果(該組數據的最后一個(gè)字節)相比較,若兩者不等則校驗失敗,PC機給單片機發(fā)重傳命令,要求單片機重傳本組數據;若兩者相等則校驗正常,PC機給單片機發(fā)確認認號,并準備接收下一組采樣數據,單片機則開(kāi)始新一輪采樣。

4、實(shí)際應用

在電參數測試儀的工作過(guò)程中,大約每隔一分鐘單片機和上位PC機之間就要經(jīng)過(guò)多次命令和數據的雙向傳遞,其數據量較大,每次約有7k字節左右。本系統單片機選用ATMEL公司的AT89C52,晶振頻率為110592MHz,串行通信方式為模式1,通信速率為57.6kBPS。上位機的通信和數據處理程序采用VC++6.0編寫(xiě)。單片機和PC機之間的距離約100米左右,傳輸線(xiàn)由普通的多芯電源線(xiàn)替代,且經(jīng)過(guò)有電焊機、電動(dòng)機、高壓靜電發(fā)生器等頻繁起動(dòng)的場(chǎng)合。采用上述硬件通信電路,同時(shí)考慮編程時(shí)的軟件糾錯,該儀器經(jīng)過(guò)多次24小時(shí)的不間斷運行,都沒(méi)有發(fā)生過(guò)死機現象,工作一切正常。調試時(shí),通過(guò)觀(guān)察上位PC機中設置的數據重傳計數器,發(fā)現數據重傳次數極少。

實(shí)踐證明本文設計符合RS485協(xié)議的串行通信電路,可以滿(mǎn)足高速率、高可靠、遠距離的串行通信,同時(shí)價(jià)格又比較便宜,不失為一種較為理想的串行通信方案。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: RS485RS232轉換器串行通

評論


技術(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>