于海波,付江波,李金濤
(北京中電科電子裝備有限公司,北京100176)
隨著科技的發(fā)展,工業(yè)生產(chǎn)中的數(shù)據(jù)采集與控制設(shè)備逐步走向網(wǎng)絡(luò)化。以單片機為核心的智能檢測及控制系統(tǒng)因其具有低廉的價格,而被廣泛的應(yīng)用。應(yīng)用單片機實現(xiàn)網(wǎng)絡(luò)通信有多種解決方案,一些以太網(wǎng)接口設(shè)計方案是通過MCU擴展以太網(wǎng)控制器來實現(xiàn)的,這種設(shè)計方案應(yīng)用起來較為困難,硬件電路設(shè)計復雜,單片機系統(tǒng)開銷較大,而且其整體性能不穩(wěn)定。而另外一些采用集成以太網(wǎng)MAC層和物理層16位單片機MC9612NE64來設(shè)計通過,如RTL8019AS,CS8900等的以太網(wǎng)控制器,它們的封裝均超過80個引腳,不僅結(jié)構(gòu)復雜,體積龐大,而且價格較貴,很難滿足智能檢測控機制系統(tǒng)的實際應(yīng)用要求。為了解決以上的不足,本文采用AVR系列單片機Atmega16與Microchip公司生產(chǎn)的以太網(wǎng)控制芯片ENC28J60來實現(xiàn)以太網(wǎng)模塊的設(shè)計,為實現(xiàn)智能檢測及控制系統(tǒng)的網(wǎng)絡(luò)化提供良好的解決方案。
AVR系列單片機汲取PIC和8051單片機的優(yōu)點[1],采用了CMOS技術(shù)和RISC架構(gòu),實現(xiàn)高速低功耗及休眠等功能。AVR系列單片機集成了8051和PIC單片機的優(yōu)點,具有多個固定中端向量地址入口,并帶有可設(shè)置的啟動復位延時計數(shù)器。AVR系列單片機外圍資源較為豐富,帶有A/D采集模塊、SPI模塊、PWM模塊等。本文采用的是ATMEGA16,數(shù)據(jù)吞吐率高達16MISP/MHz。系統(tǒng)內(nèi)部具有16K字節(jié)可編程Flash,512字節(jié)EEPROM,1K字節(jié)SRAM,32個通用I/O口線,32個通用工作寄存器。
以太網(wǎng)芯片ENC28J60有28個引腳,硬件設(shè)計符合IEEE802.3標準。內(nèi)置10Mbps以太網(wǎng)物理層器件(PHY)及媒介接入控制器(MAC),可以和標準以太網(wǎng)可靠地進行收發(fā)數(shù)據(jù)。它具有可編程填充和CRC自動校驗功能;具有可編程過濾功能,包括Microchip的可編程模式匹配過濾器;具有自動評價、接收或拒絕單播、多播或廣播信息包的功能;其內(nèi)部具有8KB可編程雙端口SRAM緩沖器,從而實現(xiàn)了信息包的存儲,基于上述功能ENC28J60可有效地減少了主控器內(nèi)存的負荷,ENC28J60的SPI接口通訊速度可達10 Mbps。
系統(tǒng)硬件設(shè)計如圖1所示,AVR單片機AT-mega16與ENC28J60通過SPI接口進行數(shù)據(jù)傳輸,ATmega16與ENC28J60進行SPI通信時需配制成主機模式,ENC28J60配置成從機模式。ENC28J60供電電壓為3.3 V,SPI的信號輸入引腳CS,SCK、SI以及 RESTE可承受5 V電壓,可以直接與單片機相連。而SO和INT只能承受3.3 V電平,可以使用74HCT08(與門),74ACT125(三態(tài)緩沖器)或其他帶有TTL電平輸入緩沖器的5 V CMOS芯片來提供必要的電平轉(zhuǎn)換,本文采用一個74HCT08(與門)實現(xiàn)信號的電平轉(zhuǎn)換。
圖1 硬件設(shè)計電路圖
系統(tǒng)軟件設(shè)計包括兩部分,系統(tǒng)軟件設(shè)計的層次結(jié)構(gòu)如圖2所示。
(1)單片機系統(tǒng)的初始化和ENC28J60驅(qū)動程序的編寫。
該部分主要是對單片機的外圍控制寄存器進行初始化,提供所需的應(yīng)用接口。這部重點在于對ENC28J60的硬件初始化及對其進行讀寫的操作,表1列出ENC28J60的SPI指令命令代碼及格式。AVR單片機通過SPI緩沖器向ENC28J60寫入相應(yīng)格式的命令代碼,就可以實現(xiàn)與ENC28J60的數(shù)據(jù)通信,其中PHY寄存器不能通過SPI接口直接操作,而是需要通過特殊功能寄存器MII完成讀寫操作。
本文采用如下的C語言程序?qū)NC28J60控制寄存器進行了初始化,完成了對控制寄存器的讀寫操作。其它對ENC28J60操作函數(shù)與此類似,由于篇幅有限,不在此進行詳述
圖2 系統(tǒng)軟件設(shè)計層次
表1 ENC28J60的SPI指令集
(2)uIP協(xié)議棧在AVR單片機上的移植。
uIP協(xié)議棧是專門為8/16位嵌入式微處理器設(shè)計的小型TCP/IP協(xié)議棧,獲得BSD授權(quán),并遵循RFC標準。它完全由C語言編寫,具有良好的互操作性和完整的原代碼及注釋,可免費應(yīng)用。
uIP協(xié)議棧有多個版本,本文采用的是uIP0.9版本。本文用到的 uip.c、uip.h、uip_arp.c、uip_arp.h、uip_arich.h文件位于/uip目錄下。uip.c和uip.h實現(xiàn)了 IP、TCP、ICMP 協(xié)議,uip_arp.c和 uip_arp.h 實現(xiàn)了ARP協(xié)議。其中uip_arch.c是校驗和文件,uippopt.h為參數(shù)配置文件,根據(jù)系統(tǒng)的需要,修改相應(yīng)的參數(shù),從而完成對uIP協(xié)議棧的移植。
本文采用AVR單片機和ENC28J60網(wǎng)絡(luò)接口芯片的設(shè)計方案,實現(xiàn)了單片機系統(tǒng)與以太網(wǎng)的通信。隨著智能數(shù)據(jù)采集與控制系統(tǒng)對數(shù)據(jù)傳輸質(zhì)量要求的不斷提高,基于單片機系統(tǒng)的以太網(wǎng)接口方案的設(shè)計將會得到廣泛的應(yīng)用。
[1]張永濤 黃丹丹 李歐.uIP協(xié)議分析及應(yīng)用[J].信息工程大學學報,2006,7(2):148-149.