基于ENC28J60的嵌入式網(wǎng)絡(luò )接口的設計
摘要: 設計了以ENC28J60 為核心的以太網(wǎng)接口實(shí)現方案, 描述了該系統硬件架構的設計方法。在簡(jiǎn)要介紹了以太網(wǎng)控制器ENC28J60 的結構、功能、外圍電路的基礎上, 對ENC28J60 與Atmega16 的SPI 通訊進(jìn)行了闡述。此方案不僅成本低, 而且可以實(shí)現500Kbps 以上的傳輸速率, 滿(mǎn)足了嵌入式系統的Internet 控制要求。
本文引用地址:http://dyxdggzs.com/article/148258.htm1 引言
隨著(zhù)Internet 的出現和以太網(wǎng)的迅速發(fā)展, 基于以太網(wǎng)的設備控制越來(lái)越多。目前市場(chǎng)上大部分以太網(wǎng)控制器采用的封裝均超過(guò)80 引腳, 如RTL8019AS、DM9008、CS8900A 等。這些器件不僅結構復雜, 面積龐大, 且系統開(kāi)銷(xiāo)較大。近來(lái), Microchip推出全球首枚28 引腳獨立以太網(wǎng)控制器ENC28J60, 可為嵌入式系統提供低引腳數、低成本、精簡(jiǎn)的遠程通訊解決方案。
2 ENC28J60 網(wǎng)絡(luò )接口體系結構
ENC28J60 是帶有行業(yè)標準串行外設接口(Serial PeripheralInterface, SPI)的獨立以太網(wǎng)控制器。它符合IEEE 802.3 的全部規范, 采用了一系列包過(guò)濾機制以對傳入數據包進(jìn)行限制。它還提供了一個(gè)內部DMA 模塊, 以實(shí)現快速數據吞吐和硬件支持的IP 校驗和計算。與主控制器的通信通過(guò)兩個(gè)中斷引腳(INT和WOL)和SPI 腳(SO、SI、SCK、CS)實(shí)現, 數據傳輸速率高達10Mb/s.兩個(gè)專(zhuān)用的引腳(LEDA、LEDB)用于連接LED, 進(jìn)行網(wǎng)絡(luò )活動(dòng)狀態(tài)指示。圖1 所示為ENC28J60 的典型應用電路。

ENC28J60 由7 個(gè)主要功能模塊組成:SPI 接口, 充當主控制器和ENC28J60 之間通信通道; 控制寄存器, 用于控制和監視ENC28J60; 雙端口RAM緩沖器, 用于接收和發(fā)送數據包; 判優(yōu)器, 當DMA、發(fā)送和接收模塊發(fā)出請求時(shí)對RAM緩沖器的訪(fǎng)問(wèn)進(jìn)行控制; 總線(xiàn)接口, 對通過(guò)SPI 接收的數據和命令進(jìn)行解析;MAC 模塊:實(shí)現符合IEEE 802.3 標準的MAC 邏輯; PHY 模塊, 對雙絞線(xiàn)上的模擬數據進(jìn)行編碼和譯碼。ENC28J60 還包括其他支持模塊, 諸如振蕩器、片內穩壓器、電平變換器(提供可以接受5V 電壓的I/O 引腳)和系統控制邏輯。
根據以上說(shuō)明, ENC28J60 應用于嵌入式網(wǎng)絡(luò )接口是非常合適的, 有廣闊的應用發(fā)展前景。
3 ENC28J60 在嵌入式網(wǎng)絡(luò )接口的應用
3.1 硬件電路設計
利用ENC28J60 可以構成不同功能的網(wǎng)絡(luò )終端節點(diǎn), 如網(wǎng)絡(luò )服務(wù)器、帶Internet 功能的設備、遠程監控(數據采集, 診斷)設備等。圖2 所示為基于ENC28J60 的嵌入式網(wǎng)絡(luò )接口的硬件電路原理圖。電路中有:2 個(gè)LED 狀態(tài)指示燈主要用來(lái)顯示網(wǎng)絡(luò )連接狀態(tài), 包括PHY 是否沖突、連接是否建立、是否接收數據、連接速度、雙工模式等; 必需的偏置電阻R3(2kΩ, 精度為1%);高速局域網(wǎng)電磁隔離模塊(即RJ45 以太網(wǎng)接口), 應用中,ENC28J60 的物理端口與隔離變壓器HR901170A 連接時(shí)必須符合IEEE802.3 對物理層規范的要求, 如RJ45 的插孔與隔離變壓器的間隔應盡量小, 輸出和輸入差分信號對的走線(xiàn)要有很好的隔離。

電路中的主控制器采用Atmel 公司的ATmega16 單片機,它具有先進(jìn)的RISC(精簡(jiǎn)指令集計算機)結構、16 kB 可編程Flash 存儲器、512 B 的EEPROM和1 kB 片內SRAM, 具有豐富的外設接口, 其SPI 接口允許ATmega16 與外設進(jìn)行高速的同步數據傳輸。本設計中ATmega16 SPI 配置為主機模式,ENC28J60 為從設備。ATmega16 的SPI 工作模式由CPOL、CPHA 設置, 根據ENC28J60 的SPI 讀寫(xiě)時(shí)序, ATmega16 的SPI工作模式應設置為模式0.ATmega16 通過(guò)將ENC28J60 的CS引腳置低實(shí)現與其的同步。SPI 時(shí)鐘由寫(xiě)入到SPI 發(fā)送緩沖寄存器的數據啟動(dòng), SPI MOSI(PB5)引腳上的數據發(fā)送秩序由寄存器SPCR 的DORD 位控制, 置位時(shí)數據的LSB(最低位)首先發(fā)送, 否則數據的MSB(最高位)首先發(fā)送。我們選擇先發(fā)送MSB,同時(shí)接收到的數據傳送到接收緩沖寄存器, CPU 進(jìn)行右對齊從接收緩沖器中讀取接收到的數據。應該注意, 當需要從ENC28J60 中讀取多個(gè)數據時(shí), 即使ENC28J60 并不需要ATmega16 串行輸出的數據, 每讀取一個(gè)數據前都要向SPI 發(fā)送緩沖器寫(xiě)一個(gè)數據以啟動(dòng)SPI 接口時(shí)鐘。由于SPI 系統的發(fā)送方向只有1 個(gè)緩沖器, 而在接收方向有2 個(gè)緩沖器, 所以在發(fā)送時(shí)一定要等到移位過(guò)程全部結束后, 才能對SPI 數據寄存器執行寫(xiě)操作; 而在接收數據時(shí), 需要在下一個(gè)字節移位過(guò)程結束之前通過(guò)訪(fǎng)問(wèn)SPI 數據寄存器讀取當前接收到的數據, 否則第1 個(gè)數據丟失。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論