劉宗銘,卓振泰,何明華*
(1.福州大學(xué)物理與信息工程學(xué)院,福州350002;2.福州大學(xué)電氣工程與自動(dòng)化學(xué)院,福州350002)
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,單個(gè)單片機(jī)系統(tǒng)越來越難以滿足實(shí)際應(yīng)用的需求,傳統(tǒng)的單片機(jī)多機(jī)互聯(lián)一般是基于RS232串行通信,該方式的通信速率較低,一般為9 600 bit/s;而且通信距離短,一般不能超過15 m[1]。如今在智能家居、控制等領(lǐng)域,以單片機(jī)為核心的各種智能監(jiān)控、測試系統(tǒng)因其高性價(jià)比等原因正得到越來越廣泛的應(yīng)用,尤其是智能家居系統(tǒng)遠(yuǎn)程監(jiān)控的提出,將家居監(jiān)控控制系統(tǒng)與互聯(lián)網(wǎng)的結(jié)合推向了新的高層。而智能家居的聯(lián)網(wǎng)就需要有一個(gè)高效、穩(wěn)定,主要是廉價(jià)的以太網(wǎng)接口設(shè)備[2-3]。
以太網(wǎng)是目前應(yīng)用非常廣泛的網(wǎng)絡(luò)通信技術(shù),借助以太網(wǎng)技術(shù)實(shí)現(xiàn)單片機(jī)與Internet的數(shù)據(jù)通信,此技術(shù)適應(yīng)不同應(yīng)用場合的需求,比如可以很好地解決傳統(tǒng)的智能家居系統(tǒng)以太網(wǎng)接口的成本問題[4]。本文將通過單片機(jī)和ENC28J60芯片實(shí)現(xiàn)單片機(jī)系統(tǒng)和Internet的數(shù)據(jù)通信,這對(duì)與嵌入智能家居系統(tǒng)的發(fā)展有著重要的作用。
目前市面上最小的嵌入式應(yīng)用以太網(wǎng)解決方案就是ENC28J60以太網(wǎng)控制器,它符合IEEE 802.3協(xié)議標(biāo)準(zhǔn)。該芯片采用10 Mbit/s的SPI(Serial Peripheral Interface)接口,內(nèi)部具有8 kbyte雙端口SRAM緩沖器,可實(shí)現(xiàn)對(duì)編程信息包高效存儲(chǔ),檢索以及修改,有利于提高系統(tǒng)的傳輸性能[5-7]。
ENC28J60是Microchip Technology(美國微芯科技公司)推出的符合IEEE 802.3協(xié)議規(guī)范的一款芯片。ENC28J60是28引腳獨(dú)立以太網(wǎng)控制器,帶有行業(yè)標(biāo)準(zhǔn)的SPI接口,并集成了媒體訪問控制器和10BASE-T以太網(wǎng)物理層器件,支持全雙工和半雙工模式,可編程填充和CRC生成,可編程8 kbyte雙端口SRAM緩沖器,可配置發(fā)送/接收緩沖器的大小,具有硬件管理的循環(huán)接受FIFO。在它內(nèi)部還提供了一個(gè)DMA模塊,可以實(shí)現(xiàn)數(shù)據(jù)的快速吞吐,數(shù)據(jù)傳輸速率高達(dá)10 Mbit/s[8-10]。ENC28J60和主控制器的通信通過SPI接口實(shí)現(xiàn),這使得嵌入式應(yīng)用系統(tǒng)的以太網(wǎng)接口變得靈活簡單。
ENC28J60采用標(biāo)準(zhǔn)的SPI串行接口,4條線與主控單片機(jī)連接。當(dāng)SCK為上升沿時(shí)命令和數(shù)據(jù)可通過SI引腳送入器件。在SCK的下降沿從SO引腳輸出數(shù)據(jù)。當(dāng)執(zhí)行操作時(shí)/CS引腳始終保持低電平,操作完成時(shí)恢復(fù)高電平[11]。由于主控制器運(yùn)行在5 V電壓下,當(dāng)SPI和中斷輸入由ENC28J60上的3.3 V輸出驅(qū)動(dòng)時(shí),它可能不符合規(guī)范要求,因此需要一個(gè)單向電平轉(zhuǎn)換器。這里使用一個(gè)廉價(jià)的帶有TTL電平輸入緩沖器的5VCMOS芯片74HCT08(4與門)來提供必要的電平轉(zhuǎn)換。如圖1,是系統(tǒng)整體框圖。
圖1 系統(tǒng)整體框圖
要實(shí)現(xiàn)整個(gè)系統(tǒng)的工作,主要的問題就是需要設(shè)計(jì)電源電路和復(fù)位電路。在系統(tǒng)中由于單片機(jī)工作在5 V電壓,而ENC28J60是工作在3.3 V電壓下的,為了此系統(tǒng)可以正常工作,必須給系統(tǒng)統(tǒng)一供電。因此必須設(shè)計(jì)一個(gè)5 V轉(zhuǎn)3.3 V的電源電路,在系統(tǒng)中電源電路采用專用電源芯片AMS1117-3.3,實(shí)現(xiàn)電壓的轉(zhuǎn)換。為系統(tǒng)提供所需的5 V和3.3 V工作電壓,圖2所示為系統(tǒng)電源電路。
圖2 系統(tǒng)電源電路
ENC28J60可以通過SPI方便地和微控制器連接而構(gòu)成嵌入式以太網(wǎng)通信接口,對(duì)于沒有SPI接口的微控制器也可以通過I/O口模擬SPI的方法實(shí)現(xiàn)。本設(shè)計(jì)是基于 STC89C52、ENC28J60和HR911105A的以太網(wǎng)通訊卡設(shè)計(jì)。并應(yīng)用C51編程實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)通信。ENC28J60工作電壓為3.3 V的器件,它被設(shè)計(jì)為易于集成到5 V的系統(tǒng)中。SPI的CS、SCK和SI輸入以及RESET引腳都可以承受5 V的電壓。因?yàn)橹骺刂破鬟\(yùn)行在5 V電壓下,因此當(dāng)ENC28J60上的3.3V CMOS輸出驅(qū)動(dòng)單片機(jī)SPI模擬端口和中斷輸入口時(shí)需要一個(gè)單向電平轉(zhuǎn)換器。系統(tǒng)中采用74HC08芯片來實(shí)現(xiàn)3.3V到5 V的電平轉(zhuǎn)換[12]。
差分接收引腳(TPIN+/TPIN-)以及差分發(fā)送引腳(TPOUT+/TPOUT-)與集成變壓器帶中心抽頭的RJ45插座HR911105A連接,ENC28J60的內(nèi)部模擬電路需要在RBIAS引腳與地之間外接一個(gè)2 kΩ(精度為1%)電阻。為降低功耗,ENC28J60中的一些數(shù)字電路工作在2.5 V標(biāo)稱電壓下,該電壓有其內(nèi)部一個(gè)2.5 V穩(wěn)壓器以產(chǎn)生,為使之工作穩(wěn)定,需在VCAP引腳與地之間連接一個(gè)10 μF的電容。ENC28J60與主控單片機(jī)STC89C52以及相應(yīng)外部器件的連接,如圖3所示。
STC89C52單片機(jī)通過SPI和以太網(wǎng)控制器ENC28J60相連,這樣完成了單片機(jī)與以太網(wǎng)之間數(shù)據(jù)的發(fā)送和接收。單片利用I/O口模擬SPI接口與ENC28J60通信,并完成了對(duì)ENC28J60的控制和發(fā)送/接收緩沖區(qū)的讀寫。以太網(wǎng)接口選用帶有網(wǎng)絡(luò)隔離變壓器功能的HR911105A來實(shí)現(xiàn)。LEDA和LEDB引腳支持復(fù)位時(shí)的自動(dòng)極性檢測。可以在這兩個(gè)引腳上,以拉電流或灌電流點(diǎn)亮LED的兩種方式連接LED。系統(tǒng)復(fù)位時(shí),ENC28J60將檢測LED的連接方式,并將LED驅(qū)動(dòng)為PHLCON寄存器配置的默認(rèn)狀態(tài)。如果在ENC28J60運(yùn)行時(shí)改變LED的極性,新極性將在下一次系統(tǒng)復(fù)位時(shí)才能被檢測到。復(fù)位時(shí)會(huì)自動(dòng)讀取LEDB上LED的連接狀態(tài),并確定如何初始化PHCON1.PDPXMD位。如果引腳采用拉電流的方式點(diǎn)亮LED,則復(fù)位時(shí)此位清零且PHY默認(rèn)為在半雙工模式下運(yùn)行。如果引腳采用灌電流的方式點(diǎn)亮LED,則復(fù)位時(shí)此位置1且PHY默認(rèn)為在全雙工模式下運(yùn)行。如果LEDB引腳上沒有連接LED,則PDPXMD位將復(fù)位為不確定值。在此設(shè)計(jì)中使用的是拉電流方式點(diǎn)亮LED的。
圖3 硬件電路圖
以太網(wǎng)設(shè)備驅(qū)動(dòng)是嵌人式網(wǎng)關(guān)的基礎(chǔ),ENC28J60驅(qū)動(dòng)就是通過對(duì)其片內(nèi)存儲(chǔ)器的訪問和控制,實(shí)現(xiàn)MAC幀的發(fā)送和接收ENC28J60的片內(nèi)存儲(chǔ)器分為控制寄存器、PHY寄存器、以太網(wǎng)緩沖器。ENC28J60使用包括初始化、發(fā)送和接收。
2.3.1 ENC28J60初始化
ENC28J60初始化流程如圖4所示,過程主要包括:進(jìn)行根據(jù)應(yīng)用特點(diǎn)配置收發(fā)緩沖區(qū),根據(jù)應(yīng)用配置相應(yīng)的接收過濾組合,對(duì)MAC進(jìn)行初始化設(shè)置,對(duì)PHY進(jìn)行初始化設(shè)置。在使用ENC28J60接收數(shù)據(jù)包前必須對(duì)8 kbyte雙端口SRAM緩沖器進(jìn)行初始化,因此要對(duì)接收緩沖器起始地址ERXST指針和結(jié)束地址ERXND指針編程。所有未被用作接收緩沖器的存儲(chǔ)空間都作為發(fā)送緩沖器,同時(shí)通過設(shè)置接收過濾控制寄存器ERXFCON,使能或禁止相應(yīng)的接收過濾器。系統(tǒng)上電復(fù)位后須查詢以太網(wǎng)狀態(tài)寄存器ESTAT的CLKRDY位,確保設(shè)置MAC和PHY寄存器前有足夠延時(shí)。若CLKRDY為1,表示PHY準(zhǔn)備就緒,可對(duì)MAC和PHY寄存器進(jìn)行相應(yīng)設(shè)置。
圖4 初始化ENC28J60流程圖
2.3.2 ENC28J60接收
接收過程主要包括接收設(shè)置與啟動(dòng),內(nèi)部接收與過濾,數(shù)據(jù)包讀取與處理。接收啟動(dòng)后,內(nèi)部自動(dòng)進(jìn)行接收和過濾,未濾除的數(shù)據(jù)包寫人循環(huán)接收緩沖器(其存儲(chǔ)結(jié)構(gòu)包括一個(gè)報(bào)頭、實(shí)際包數(shù)據(jù)、可能的填充字節(jié))并產(chǎn)生中斷;通過中斷服務(wù)分析報(bào)頭,讀取實(shí)際包數(shù)據(jù)。ENC28J60的數(shù)據(jù)接收程序流程圖如圖5所示。
圖5 接收數(shù)據(jù)包流程圖
2.3.3 ENC28J60發(fā)送
發(fā)送過程主要包括:發(fā)送準(zhǔn)備,發(fā)送,發(fā)送異常處理。ENC28J60自動(dòng)生成前導(dǎo)符和幀起始定界符、最小包的填充和有效CRC追加。在發(fā)送準(zhǔn)備過程中需要進(jìn)行最小包填充設(shè)置,CRC追加設(shè)置,包控制字節(jié)輸人,以及MAC幀有效字段輸人。發(fā)送過程是內(nèi)部過程。當(dāng)發(fā)送異常中止時(shí),需要根據(jù)MAC模塊自動(dòng)產(chǎn)生的7 byte發(fā)送狀態(tài)向量進(jìn)行相應(yīng)處理。如圖6所示,即為 ENC28J60的數(shù)據(jù)發(fā)送程序流程圖。
圖6 發(fā)送數(shù)據(jù)包流程圖
ENC28J60是目前體積最小的以太網(wǎng)控制芯片,它能提供以太網(wǎng)通信的相應(yīng)功能,而且體積小,可以根據(jù)需要設(shè)計(jì)出體積較小的網(wǎng)關(guān)模塊。文中采用51單片機(jī)及符合國際電工電子委員會(huì)制定的IEEE802.3協(xié)議的網(wǎng)絡(luò)芯片ENC28J60為硬件平臺(tái),實(shí)現(xiàn)了單片機(jī)上的以太網(wǎng)通信。PC設(shè)計(jì)好的網(wǎng)口與路由器連接后,通過PC機(jī)可以與單片機(jī)ping通。如圖7為PC機(jī)ping通單片機(jī)IP的現(xiàn)象,實(shí)驗(yàn)結(jié)果數(shù)據(jù)如表1所示。
圖7 PC機(jī)ping通單片機(jī)IP
表1 實(shí)驗(yàn)數(shù)據(jù)
從表1中可以看出PC機(jī)向單片機(jī)發(fā)送4個(gè)測試數(shù)據(jù)包,測試結(jié)果丟包率為0,說明網(wǎng)絡(luò)狀態(tài)相當(dāng)?shù)牧己谩?shí)際應(yīng)用結(jié)果表明,設(shè)計(jì)的以太網(wǎng)通信接口通信可靠性高、配置靈活,適合于嵌入式智能家居控制領(lǐng)域使用。用上述方法構(gòu)建的通信網(wǎng)關(guān)可實(shí)現(xiàn)以太網(wǎng)與SPI總線之間的協(xié)議轉(zhuǎn)換,為以太網(wǎng)與SPI總線網(wǎng)絡(luò)的互聯(lián)提供了一種傳輸速度快,成本低,穩(wěn)定性和安全性高的解決方案。
本設(shè)計(jì)的創(chuàng)新之處就在于應(yīng)用ENC28J60構(gòu)成嵌入式以太網(wǎng)模塊電路,克服了市場上已有以太網(wǎng)控制器封裝引腳多的缺點(diǎn),簡化了設(shè)計(jì),減小了占板空間。由此可以看出ENC28J60是極具特色的獨(dú)立以太網(wǎng)控制器。由ENC28J60構(gòu)成的嵌入式以太網(wǎng)模塊電路連接簡單,而且功能強(qiáng)大。它與目前大多數(shù)的以太網(wǎng)控制器相比具有明顯的優(yōu)勢:無需外擴(kuò)地址,無需外擴(kuò)數(shù)據(jù)總線。并且可以根據(jù)需要配合不同的微控制器將模塊做到足夠小的尺寸。這完全符合未來工業(yè)以太網(wǎng)控制器的發(fā)展趨勢?;贓NC28J60的以太網(wǎng)接口設(shè)計(jì),電路設(shè)計(jì)簡單,功能強(qiáng)大,可以靈活的應(yīng)用于通信行業(yè)、遠(yuǎn)程診斷、遠(yuǎn)程安保報(bào)警系統(tǒng)及智能家居遠(yuǎn)程監(jiān)控控制等場合,完全符合未來以太網(wǎng)控制器的發(fā)展趨勢,具有十分廣闊的運(yùn)用前景。
[1]吳俊杰,吳建輝.以太網(wǎng)MAC控制器的MII接口轉(zhuǎn)RMII接口的實(shí)現(xiàn)[J].電子器件,2008,31(2):712-715.
[2]緱延軍,鄭富全.嵌入式系統(tǒng)中的ENC28J60應(yīng)用[J].山東科學(xué),2007,20(2):75-79.
[3]李陽,吳成富,鄧紅德.基于DSP和ENC28J60的多串口與以太網(wǎng)數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)[J].測控技術(shù),2011,30(12):61-65.
[4]李偉堯.基于以太網(wǎng)控制器ENC28J60嵌入式TCP/IP技術(shù)的研究[J].科技信息,2009(30):239-240.
[5]李國峰,王云.利用ENC28J60芯片搭建智能家居系統(tǒng)的Web server環(huán)境[J].黑龍江科技信息,2009(16):8.
[6]張偉業(yè),黃云龍,陳國定.基于ENC28J60以太網(wǎng)通信接口的設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)電工程,2008,25(1):28-30.
[7]張慶輝,馬延立.STM32F103VET6和ENC28J60的嵌入式以太網(wǎng)接口設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012(9):23-25.
[8]張中央,陶乃彬.基于ENC28J60的嵌入式系統(tǒng)以太網(wǎng)接口設(shè)計(jì)[J].河南科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,28(3):49-53.
[9]陳雪梅,曾照福.基于ENC28J60的嵌入式以太網(wǎng)/CAN網(wǎng)關(guān)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009(6):24-27.
[10]于浩洋,邵國平,秦杰.基于ENC28J60以太網(wǎng)控制器的SPI接口設(shè)計(jì)[J].黑龍江工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2009,23(2):63-65.
[11]徐冬寅,欒玖華.利用ENC28J60實(shí)現(xiàn)嵌入式Web服務(wù)器[J].電腦知識(shí)與技術(shù),2009,25(26):7551-7552.
[12]闞偉.基于ENC28J60的以太網(wǎng)通信接口的設(shè)計(jì)[J].長江大學(xué)學(xué)報(bào),2012,9(3):99-101.