<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 通用異步收發(fā)器MAX3100在單片機系統(tǒng)中的應用

          通用異步收發(fā)器MAX3100在單片機系統(tǒng)中的應用

          作者: 時間:2011-12-09 來源:網(wǎng)絡 收藏

          四、應用實例
          1.硬件設計
            4所示為78E58單片機采用SPI接口方式,實現(xiàn)高速串行數(shù)據(jù)收發(fā)的應用實例,在電路中用取代了以往常用的UART8251,以實現(xiàn)高性能的通信模式。78E58P1.0~P1.3分別接DIN、DOUT、SCLK以及 CS78E58 INTO IRQ相連,SHDN連高電平,使之保持在工作模式,MAX3100TXRX分別和MAX232T1I以及R1O連接,RTSCTS相連,通過MAX232電平轉換后與9針串行接口的第八腳相連用以控制計算機傳送數(shù)據(jù)。
            78E58單片機接收時,上位機傳過來的數(shù)據(jù)通過串行口由RS-232轉換TTL電平后,MAX3100串行接收,串行輸入到MCU中。78E58單片機發(fā)送時,MCU將要發(fā)送的數(shù)據(jù)串行送入MAX3100,通過RS-232轉換成232電平后串行輸出。

          RTS的狀態(tài)而不發(fā)送數(shù)據(jù),我們可以通過軟件設置TE為高電平, RTS為低電平,通過串行口通知計算機不要發(fā)送數(shù)據(jù)。在這批數(shù)據(jù)處理完之后,再設置 RTS為高,允許計算機發(fā)送數(shù)據(jù),繼續(xù)接收數(shù)據(jù)。
            同時我們還要考慮MAX3100在通知計算機不要發(fā)送數(shù)據(jù)后還有一批的數(shù)據(jù)在緩沖區(qū)內,這批數(shù)據(jù)要注意接收,而且這些數(shù)據(jù)應留有一個接收的時間余地。也就是說在通知計算機不要發(fā)送數(shù)據(jù)之后和開始執(zhí)行操作之前要延時一段時間,以保證數(shù)據(jù)的全部接收。

          五: 結論
            采用MAX3100作為擴展的UART,具有價格低廉,功耗小,實現(xiàn)容易的特點,而且比傳統(tǒng)的UART8251占用體積小,傳輸速度快,工作頻率高,具有比8251更優(yōu)越的性能。
            前面所給程序是通過端口發(fā)送與接收數(shù)據(jù)的關鍵,對于任何一種基于MCS-51單片機采用MAX3100實現(xiàn)串行收發(fā)的應用系統(tǒng)來說都是非常有幫助的。經(jīng)過實踐證明,該系統(tǒng)運行效果良好,數(shù)據(jù)傳送安全可靠,傳送快,應用廣泛。
            在實踐中發(fā)現(xiàn)在系統(tǒng)晶振采用40MHZ,振蕩器晶振選用1.8432MHZ時,C語言編寫的MAX3100接收程序工作在115200波特率時有數(shù)據(jù)丟失的情況,最高只能到57600波特率,用匯編語言編寫的程序則可以達到115200波特率。如果MAX3100晶振選用3.6864MHZ,用匯編語言編寫的程序可以達到其最高的波特率。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();