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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于AVR高性能單片機的以太網(wǎng)接口設計

          基于AVR高性能單片機的以太網(wǎng)接口設計

          作者: 時間:2009-05-06 來源:網(wǎng)絡 收藏

          頁2的寄存器是只讀的,頁3的寄存器不是NE2000兼容的,所以均不用設置。首先選擇為頁O,網(wǎng)卡芯片為停止模式,因為還沒有進行初始化,設置0x40~Ox4B為網(wǎng)卡的發(fā)送緩沖區(qū),共12頁,剛好存儲2個最大的數(shù)據(jù)包;0x4C~0x7F為網(wǎng)卡的接收緩沖區(qū),共52頁;剛開始時網(wǎng)卡沒有接收到任何數(shù)據(jù)包,因此BNRY指向第一個接收緩沖區(qū)的頁0x4C。設置完頁O的寄存器后切換為頁1,由于中沒有使用93C46,因此需要在程序中指定芯片的物理地址,寫入到PAR寄存器,然后啟動芯片開始工作。讀指針BN―RY和寫指針CURR主要用來控制緩沖區(qū)的存取過程,保證能正確讀出和寫入數(shù)據(jù)。
          負責的初始化及通過控制實現(xiàn)網(wǎng)絡協(xié)議,進行數(shù)據(jù)的接收和發(fā)送等通信任務,主程序按照數(shù)據(jù)幀分用的思路進行編寫,即將作為服務器端,初始化完成后使其處于監(jiān)聽狀態(tài)。當有數(shù)據(jù)從RJ45過來時,在接收和處理完數(shù)據(jù)幀后傳送給,單片機對數(shù)據(jù)包進行分析,如果是ARP數(shù)據(jù)包,則程序轉入ARP處理程序;如果是IP數(shù)據(jù)包且IP地址正確,則繼續(xù)分析若是ICMP包,則調用ICMP處理程序,若是UDP或TCP數(shù)據(jù)包,則解包后將數(shù)據(jù)存儲或從串口輸出。反之,當有數(shù)據(jù)要發(fā)送時,單片機按照各層協(xié)議格式將數(shù)據(jù)打包,送入RTL8019AS的緩存區(qū),由RTL8019AS將數(shù)據(jù)輸出到局域網(wǎng)中,主程序的框架如下:

          在嵌入后,已經(jīng)實現(xiàn)了以太網(wǎng)的接入,但要實現(xiàn)遠程控制,還需要實現(xiàn)應用層協(xié)議,這需要網(wǎng)絡層和傳輸層的支持,嵌入式在應用層上要求簡單,本系統(tǒng)實現(xiàn)了一個HTTP協(xié)議。由于單片機的資源有限,采用靜態(tài)網(wǎng)頁訪問的形式,使用HT―ML語言來編寫,網(wǎng)頁代碼存儲在Mega64的片內FLASH中。把要傳輸?shù)臄?shù)據(jù)、參數(shù)等存入網(wǎng)頁的相關位置,當有客戶端請求連接時,這些數(shù)據(jù)信息通過HTTP協(xié)議沿TCP連接發(fā)送至瀏覽器,這樣就可以在遠端PC機的瀏覽器中訪問存儲在系統(tǒng)中的網(wǎng)頁,從而實現(xiàn)遠程訪問及控制。


          3 結 語
          介紹了一種利用單片機實現(xiàn)以太網(wǎng)電路的方法,硬件電路少,結構簡單,使用方便。考慮到單片機的資源有限,只實現(xiàn)了與需要有關的部分協(xié)議,根據(jù)實際需求做適當?shù)男薷暮屯晟凭涂蓱糜谥T如遠程抄表、信息家電的遠程控制、智能小區(qū)等實時性要求不高的場合,為了提高數(shù)據(jù)傳輸速度和進行復雜的TCP/IP處理,可以擴展32 KB的外部RAM來提高單片機的數(shù)據(jù)吞吐量,同時外部RAM也可用作串行口的輸入輸出緩沖。

          低通濾波器相關文章:低通濾波器原理


          雙絞線傳輸器相關文章:雙絞線傳輸器原理

          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(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); })();