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

          新聞中心

          EEPW首頁 > 網(wǎng)絡(luò)與存儲 > 設(shè)計應(yīng)用 > ARM7微型嵌入式Web服務(wù)器的設(shè)計與實現(xiàn)

          ARM7微型嵌入式Web服務(wù)器的設(shè)計與實現(xiàn)

          作者: 時間:2016-12-22 來源:網(wǎng)絡(luò) 收藏


          本文引用地址:http://www.ex-cimer.com/article/201612/332831.htm

          1 引言

            隨著計算機(jī)、網(wǎng)絡(luò)通信和Internet技術(shù)的飛速發(fā)展和不斷進(jìn)步,嵌入式系統(tǒng)在家庭和工業(yè)應(yīng)用廣泛。如何將嵌入式系統(tǒng)和工業(yè)控制系統(tǒng)接人Internet,綜合利用嵌入式系統(tǒng)資源,實現(xiàn)嵌入式系統(tǒng)的遠(yuǎn)程管理和控制,已成為關(guān)注的研究課題,而實現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡(luò)化則成為嵌入式系統(tǒng)的發(fā)展趨勢。

          以太網(wǎng)以其成本低、速度快、應(yīng)用普遍、有廣泛的硬件和軟件支持等優(yōu)點為實現(xiàn)管理控制網(wǎng)絡(luò)一體化提供可能,在現(xiàn)場設(shè)備內(nèi)置WEB服務(wù)器,使現(xiàn)場設(shè)備具有網(wǎng)頁發(fā)布功能,將Internet技術(shù)直接引入現(xiàn)場設(shè)備。

            本設(shè)計是基于ARM7的微型嵌入式Web服務(wù)器。目前市場上大部分以太網(wǎng)控制器封裝均超過80引腳,而ENC28J60是業(yè)界最小的以太網(wǎng)控制器,只有28引腳,這樣既能提供相應(yīng)功能,又大大簡化相關(guān)設(shè)計,減小空間,其標(biāo)準(zhǔn)的SPI串行接口只需4條總線即可實現(xiàn)與單片機(jī)連接,有利于在小型系統(tǒng)上實現(xiàn)以太網(wǎng)功能。在研究和分析TCP/IP協(xié)議的基礎(chǔ)上,合理簡化TCP/IP協(xié)議,選擇實現(xiàn)ARP、IP、ICMP、TCP和HTTP協(xié)議。

          2 系統(tǒng)硬件設(shè)計

            ENC28J60的硬件連接如圖1所示。ENC28J60的硬件設(shè)計包括復(fù)位電路、時鐘振蕩器、網(wǎng)絡(luò)變壓器和其他外部元件以及LED配置單元模塊。


          2.1復(fù)位電路

            當(dāng)ENC28J60的RESET引腳為低電平時ENC28J60工作在復(fù)位模式。RESET引腳內(nèi)部有弱上拉電阻,應(yīng)外接一只10 kΩ的上拉電阻。

          2.2 時鐘振蕩器

            ENC28J60工作頻率為25 MHz。在OSC1和OSC2引腳之間連接無源晶體振蕩器。ENC28J60要求使用平行切割的晶體。本設(shè)計采用連接至OSC1引腳的外部25 MHz有源晶體振蕩器驅(qū)動,此時3.3V的外部時鐘連接OSC1引腳,OSC2引腳可使用一只接地電阻或斷開OSC2引腳以減少系統(tǒng)噪聲。

          2.3 網(wǎng)絡(luò)變壓器和其他外部元件

            實現(xiàn)以太網(wǎng)接口控制,還需多個標(biāo)準(zhǔn)外部元件:網(wǎng)絡(luò)變壓器、偏置電阻、儲能電容和去耦電容。

            差分輸入引腳(TPIN+/TPIN-)需用一個變比為1:1的網(wǎng)絡(luò)變壓器實現(xiàn)10BASET。差分輸出引腳(TPOUT+/TPOUT-)需用一個變比為1:1、帶中心抽頭的脈沖變壓器實現(xiàn)。變壓器需具有2 kV或更高的隔離能力,以防止靜電干擾。本設(shè)計采用Pulse公司的集成以太網(wǎng)隔離變壓器H1102。

            差分輸入/輸出引腳都需串聯(lián)2只49.7 Ω、精度為1%的電阻和1只0.01μF的電容,本設(shè)計采用并聯(lián)兩只100 Ω電阻獲得49.7 Ω、精度為1%的電阻。

            所有的電源電壓引腳必須連接至外部同一個33 V電源。同理,所有的接地必須連接至同一外部地。每個電源電壓引腳和地之間應(yīng)連接1只0.1μF的陶瓷去耦電容,該電容應(yīng)盡可能地靠近電源電壓引腳放置。

          2.4 LED配置

            LEDA引腳和LEDB引腳在復(fù)位時支持極性自動檢測,既可直接驅(qū)動LED,又可灌電流驅(qū)動。復(fù)位時ENC28J60檢測LED的連接,并按照PHLCON寄存器的默認(rèn)設(shè)置驅(qū)動。本設(shè)計LEDB采用拉電流的方式點亮LED。復(fù)位時該位清零且PHY默認(rèn)在半雙工模式下工作。

          3 系統(tǒng)軟件設(shè)計

          3.1 SPI接口

            ENC28J60與微控制器MCU的連接通過SPI接口實現(xiàn),支持10 Mb/s。但ENC28J60只支持SPI模式00,即CPOL=0和CPHA=0。另外,在空閑狀態(tài)時SPI端口要求SCK為低電平,且不支持時鐘極性選擇。以下為SPI接口初始化的源代碼:

          3.2 TCP/IP協(xié)議棧的實現(xiàn)

            考慮到單片機(jī)RAM存儲空間的限制和具體應(yīng)用要求,合理簡化TCP/IP協(xié)議棧,選擇實現(xiàn)ARP、IP、ICMP、TCP和HTTP協(xié)議。圖2所示為精簡的TCP/IP協(xié)議棧。


          3.2.1 物理層接口的實現(xiàn)

            物理層接口為ENC28J60的驅(qū)動程序,硬件方面是用ENC28J60的電路實現(xiàn)電纜的物理鏈接、介質(zhì)訪問控制、幀的發(fā)送與接收等功能,而與上層協(xié)議接口即為驅(qū)動程序,實現(xiàn)發(fā)送與接收數(shù)據(jù)幀。以下是其兩個函數(shù)原型:


          3.2.2 網(wǎng)絡(luò)層協(xié)議的實現(xiàn)

            網(wǎng)絡(luò)層的協(xié)議包括ARP、IP、ICMP協(xié)議。網(wǎng)絡(luò)間連接需知雙方物理地址,而ARP協(xié)議是地址解析協(xié)議,實現(xiàn)IP地址到物理地址的轉(zhuǎn)化。網(wǎng)際協(xié)議(IP)負(fù)責(zé)將消息從一個主機(jī)傳送到另一個主機(jī)。ICMP協(xié)議是Internet控制消息協(xié)議,用于IP主機(jī)、路由器之間傳遞控制消息??刂葡⑹侵妇W(wǎng)絡(luò)是否暢通、主機(jī)是否可達(dá)、路由是否可用等網(wǎng)絡(luò)本身消息。圖3所示是ping命令測試遠(yuǎn)程用戶和設(shè)計的微型嵌人式Web服務(wù)器后的響應(yīng)情況。


          3.2.3 TCP、HTTP協(xié)議的實現(xiàn)

            傳輸控制協(xié)議(TCP)負(fù)責(zé)收集信息包,并且將其按適當(dāng)?shù)拇涡騻鬏?,接收端接收后再將其正確還原。傳輸協(xié)議同時保證了數(shù)據(jù)包在傳送中準(zhǔn)確無誤。而HTTP是基于TCP協(xié)議的超文本傳輸協(xié)議,嵌人式Web服務(wù)器在與遠(yuǎn)程用戶端建立TCP連接后發(fā)送網(wǎng)頁數(shù)據(jù),在HTTP協(xié)議發(fā)送流程中,由于TCP報文數(shù)據(jù)字段有長度限制,網(wǎng)頁資源一股被分成若干段進(jìn)行分段傳送。在遠(yuǎn)程用戶端打開IE瀏覽器,在地址欄輸入嵌人式Web服務(wù)器的地址。




          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();