一種嵌入式網(wǎng)絡接口設計
1 引言
本文引用地址:http://cafeforensic.com/article/149370.htm隨著Internet 的出現(xiàn)和以太網(wǎng)的迅速發(fā)展, 基于以太網(wǎng)的設備控制越來越多。目前市場上大部分以太網(wǎng)控制器采用的封裝均超過80 引腳, 如RTL8019AS、DM9008、CS8900A 等。這些器件不僅結構復雜, 面積龐大, 且系統(tǒng)開銷較大。近來, Microchip推出全球首枚28 引腳獨立以太網(wǎng)控制器ENC28J60, 可為嵌入式系統(tǒng)提供低引腳數(shù)、低成本、精簡的遠程通訊解決方案。
設計了以ENC28J60 為核心的以太網(wǎng)接口實現(xiàn)方案, 描述了該系統(tǒng)硬件架構的設計方法。在簡要介紹了以太網(wǎng)控制器ENC28J60 的結構、功能、外圍電路的基礎上, 對ENC28J60 與Atmega16 的SPI 通訊進行了闡述。此方案不僅成本低, 而且可以實現(xiàn)500Kbps 以上的傳輸速率, 滿足了嵌入式系統(tǒng)的Internet 控制要求。
ENC28J60 是帶有行業(yè)標準串行外設接口(Serial PeripheralInterface, SPI)的獨立以太網(wǎng)控制器。它符合IEEE 802.3 的全部規(guī)范, 采用了一系列包過濾機制以對傳入數(shù)據(jù)包進行限制。它還提供了一個內部DMA 模塊, 以實現(xiàn)快速數(shù)據(jù)吞吐和硬件支持的IP 校驗和計算。與主控制器的通信通過兩個中斷引腳(INT和WOL)和SPI 腳(SO、SI、SCK、CS)實現(xiàn), 數(shù)據(jù)傳輸速率高達10Mb/s.兩個專用的引腳(LEDA、LEDB)用于連接LED, 進行網(wǎng)絡活動狀態(tài)指示。圖1 所示為ENC28J60 的典型應用電路。
ENC28J60 由7 個主要功能模塊組成:SPI 接口, 充當主控制器和ENC28J60 之間通信通道; 控制寄存器, 用于控制和監(jiān)視ENC28J60; 雙端口RAM緩沖器, 用于接收和發(fā)送數(shù)據(jù)包; 判優(yōu)器, 當DMA、發(fā)送和接收模塊發(fā)出請求時對RAM緩沖器的訪問進行控制; 總線接口, 對通過SPI 接收的數(shù)據(jù)和命令進行解析;MAC 模塊:實現(xiàn)符合IEEE 802.3 標準的MAC 邏輯; PHY 模塊, 對雙絞線上的模擬數(shù)據(jù)進行編碼和譯碼。ENC28J60 還包括其他支持模塊, 諸如振蕩器、片內穩(wěn)壓器、電平變換器(提供可以接受5V 電壓的I/O 引腳)和系統(tǒng)控制邏輯。
根據(jù)以上說明, ENC28J60 應用于嵌入式網(wǎng)絡接口是非常合適的, 有廣闊的應用發(fā)展前景。
3 ENC28J60 在嵌入式網(wǎng)絡接口的應用
3.1 硬件電路設計
利用ENC28J60 可以構成不同功能的網(wǎng)絡終端節(jié)點, 如網(wǎng)絡服務器、帶Internet 功能的設備、遠程監(jiān)控(數(shù)據(jù)采集, 診斷)設備等。圖2 所示為基于ENC28J60 的嵌入式網(wǎng)絡接口的硬件電路原理圖。電路中有:2 個LED 狀態(tài)指示燈主要用來顯示網(wǎng)絡連接狀態(tài), 包括PHY 是否沖突、連接是否建立、是否接收數(shù)據(jù)、連接速度、雙工模式等; 必需的偏置電阻R3(2kΩ, 精度為1%);高速局域網(wǎng)電磁隔離模塊(即RJ45 以太網(wǎng)接口), 應用中,ENC28J60 的物理端口與隔離變壓器HR901170A 連接時必須符合IEEE802.3 對物理層規(guī)范的要求, 如RJ45 的插孔與隔離變壓器的間隔應盡量小, 輸出和輸入差分信號對的走線要有很好的隔離。
電路中的主控制器采用Atmel 公司的ATmega16 單片機,它具有先進的RISC(精簡指令集計算機)結構、16 kB 可編程Flash 存儲器、512 B 的EEPROM和1 kB 片內SRAM, 具有豐富的外設接口, 其SPI 接口允許ATmega16 與外設進行高速的同步數(shù)據(jù)傳輸。本設計中ATmega16 SPI 配置為主機模式,ENC28J60 為從設備。ATmega16 的SPI 工作模式由CPOL、CPHA 設置, 根據(jù)ENC28J60 的SPI 讀寫時序, ATmega16 的SPI工作模式應設置為模式0.ATmega16 通過將ENC28J60 的CS引腳置低實現(xiàn)與其的同步。SPI 時鐘由寫入到SPI 發(fā)送緩沖寄存器的數(shù)據(jù)啟動, SPI MOSI(PB5)引腳上的數(shù)據(jù)發(fā)送秩序由寄存器SPCR 的DORD 位控制, 置位時數(shù)據(jù)的LSB(最低位)首先發(fā)送, 否則數(shù)據(jù)的MSB(最高位)首先發(fā)送。我們選擇先發(fā)送MSB,同時接收到的數(shù)據(jù)傳送到接收緩沖寄存器, CPU 進行右對齊從接收緩沖器中讀取接收到的數(shù)據(jù)。應該注意, 當需要從ENC28J60 中讀取多個數(shù)據(jù)時, 即使ENC28J60 并不需要ATmega16 串行輸出的數(shù)據(jù), 每讀取一個數(shù)據(jù)前都要向SPI 發(fā)送緩沖器寫一個數(shù)據(jù)以啟動SPI 接口時鐘。由于SPI 系統(tǒng)的發(fā)送方向只有1 個緩沖器, 而在接收方向有2 個緩沖器, 所以在發(fā)送時一定要等到移位過程全部結束后, 才能對SPI 數(shù)據(jù)寄存器執(zhí)行寫操作; 而在接收數(shù)據(jù)時, 需要在下一個字節(jié)移位過程結束之前通過訪問SPI 數(shù)據(jù)寄存器讀取當前接收到的數(shù)據(jù), 否則第1 個數(shù)據(jù)丟失。
3.2 ENC28J60 軟件初始化
在使用ENC28J60 發(fā)送和接收數(shù)據(jù)包前, 必須對器件進行初始化設置。根據(jù)不同的應用, 一些配置選項可能需要更改。初始化設置工作包括接收和發(fā)送緩沖器、接收過濾器、晶振啟動時間、MAC 寄存器、PHY 寄存器。初始化芯片之前先關閉單片機的中斷輸入, 對RESET 引腳給定一個持續(xù)的低電平復位信號, 然后對相應的寄存器進行設置。設置完成所有需要的寄存器后, 判斷以太網(wǎng)狀態(tài)中的時鐘啟動標志位是否置位, 然后開中斷。
系統(tǒng)初始化后進入主程序循環(huán), 包括單片機的控制作用和網(wǎng)絡數(shù)據(jù)傳輸。對于以太網(wǎng)傳輸部分來說。主要有兩個作用:一是對要發(fā)送的數(shù)據(jù)按照以太網(wǎng)數(shù)據(jù)幀格式進行封裝并發(fā)送; 二是對接收的以太網(wǎng)數(shù)據(jù)幀進行解包, 供應用程序使用。
評論