当前位置:首页 >> 信息与通信 >>

基于ENC28J60的嵌入式网络接口的设计


电子设计
文章编号 :1008- 0570(2008)05- 2- 0306- 03

中 文 核 心 期 刊 《 微 计 算 机 信 息 》( 嵌 入 式 与 S OC )2008 年 第 24 卷 第 5-2 期

基于 ENC28J 60 的嵌入式网络接口的设计
De s ig n o f e m b e d d

e d n e tw o rk in te rfa ce b a s e d o n ENC28J 60
(长沙民政学院 )

刘 琼 朱志伟 周志光

LIU Qiong ZHU Zhi-wei ZHOU Zhi-guang
摘要 : 设 计 了 以 ENC28J60 为 核 心 的 以 太 网 接 口 实 现 方 案 , 描 述 了 该 系 统 硬 件 架 构 的 设 计 方 法 。在 简 要 介 绍 了 以 太 网 控 制 器 功 外 此 ENC28J60 的 结 构 、 能 、 围 电 路 的 基 础 上 , 对 ENC28J60 与 Atmega16 的 SPI 通 讯 进 行 了 阐 述 。 方 案 不 仅 成 本 低 , 而 且 可 以 实 现 500Kbps 以 上 的 传 输 速 率 , 满 足 了 嵌 入 式 系 统 的 Internet 控 制 要 求 。 关键词 : 嵌入式系统; ENC28J 60 ; SPI 中图分类号 : TP393 文献标识码 : A

技 术 创 新

Abstr act: A solution of ethernet interface based on the core of ENC28J60 and its architecture of hardware is illustrated. Following a brief introduction of the structure, functions and external connections of the ENC28J60.The solution how to make ENC28J60 communicate with Atmega16 are expatiated. This solution not only can reduce the cost but also can obtain the transmitted rate of 500Kbps,and can satisfy the requirements of controlling embedded system through Internet. Key wor ds: Embedded system; ENC28J 60; SPI
发 器 , 当 DMA、 送 和 接 收 模 块 发 出 请 求 时 对 RAM 缓 冲 器 的 访 问 进 行 控 制 ; 总 线 接 口 , 对 通 过 SPI 接 收 的 数 据 和 命 令 进 行 解 析 ; MAC 模 块 :实 现 符 合 IEEE 802.3 标 准 的 MAC 逻 辑 ; PHY 模 块, 对双绞线上的模拟数据进行编码和译码。ENC28J60 还包括 其他支持模块, 诸如振荡器、 片内稳压器、 电平变换器 (提 供 可以 接受 5V 电压的 I/O 引脚 )和系统控制逻辑。 根据 以 上说 明 , ENC28J60 应 用于 嵌 入 式网 络 接 口 是 非 常 合适的, 有广阔的应用发展前景。

1 引言
随着 Internet 的 出现 和 以 太网 的 迅 速发 展 , 基 于以 太 网 的 设备控制越来越多。目前市场上大部分以太网控制器采用的封 装 均 超 过 80 引 脚 , 如 RTL8019AS、 DM9008、 CS8900A 等 。 这 些 近来, Microchip 器件不仅结构复杂, 面积庞大, 且系统开销较大。 推出全球首枚 28 引脚独立以太网控制器 ENC28J60, 可为嵌入 式系统提供低引脚数、 低成本、 精简的远程通讯解决方案。

2 ENC28J 60 网 络 接 口 体 系 结 构
ENC28J60 是 带 有 行 业 标 准 串 行 外 设 接 口 (Serial Peripheral Interface , SPI)的独立以太网控制器。它符合 IEEE 802.3 的全部
规范 , 采 用了 一 系 列包 过 滤 机制 以 对 传入 数 据 包进 行 限 制。 它 还提供了一个内部 DMA 模块, 以实 现 快 速数 据 吞 吐和 硬 件 支 持的 IP 校验和计算。 与主控制器的通信通过两个中断引脚 (INT 和 WOL)和 SPI 脚 (SO、 、 、 实 现 , 数 据 传 输 速 率 高 达 10 SI SCK CS) Mb/s。 两 个 专 用 的 引 脚 (LEDA、 LEDB)用 于 连 接 LED, 进 行 网 络 活动状态指示。图 1 所示为 ENC28J60 的典型应用电路。

3 ENC28J 60 在嵌入式网络接口的应用
3.1 硬件电路设计 利用 ENC28J60 可以构成不同功能的网络 终 端 节点 , 如 网 络服务器、 Internet 功 能 的 设备 、 程 监控 (数 据 采集 , 诊 断 )设 带 远 备等。图 2 所示为基于 ENC28J60 的嵌入式网 络 接 口的 硬 件 电 路 原 理 图 。 电 路 中 有 :2 个 LED 状 态 指 示 灯 主 要 用 来 显 示 网 络 连 接状 态 , 包 括 PHY 是 否 冲 突、 接 是 否 建 立 、 否 接 收 数 据 、 连 是 连 接 速 度 、 工 模 式 等 ; 必 需 的 偏 置 电 阻 R3(2kΩ 精 度 为 1%); 双 , 高 速 局 域 网 电 磁 隔 离 模 块 ( 即 RJ45 以 太 网 接 口 ), 应 用 中 , ENC28J60 的 物 理 端 口 与 隔 离 变 压 器 HR901170A 连 接 时 必 须 符合 IEEE802.3 对 物 理 层 规 范 的 要 求 , 如 RJ45 的 插 孔 与 隔 离
变 压 器的 间 隔 应尽 量 小 , 输出 和 输 入差 分 信 号对 的 走 线要 有 很 好的隔离。 电路中的主控制器采用 Atmel 公司的 ATmega16 单片机,

图 1 ENC28J60 的典型应用电路 ENC28J60 由 7 个 主 要 功 能 模 块 组 成 :SPI 接 口 , 充 当 主 控 制器和 ENC28J60 之间通信通道; 控制寄存器, 用于控 制 和 监视

它具有先进的 RISC(精简指令集计算机 )结构、 kB 可编程 16

Flash 存储器、 B 的 EEPROM 和 1 kB 片内 SRAM, 具有丰富 512
的外设接口, 其 SPI 接口允许 ATmega16 与外设进行高速的同 步数据传输。本设计中 ATmega16 SPI 配置为主机模式,

ENC28J60 ; 双 端 口 RAM 缓 冲 器 , 用 于 接 收 和 发 送 数 据 包 ; 判 优
刘 琼 : 副教授 基金项目 : 湖南省教育厅科技攻关项目名称 :(05D007) 嵌入式 TCP/IP 协议单片机技术在信息家电网络中的应用
-

ENC28J60 为从设备。 ATmega16 的 SPI 工作模式由 CPOL、 CPHA 设置, 根据 ENC28J60 的 SPI 读写时序, ATmega16 的 SPI
工 作 模 式 应 设 置 为 模 式 0 。 ATmega16 通 过 将 ENC28J60 的 CS 《现场总线技术应用 200 例》

306 - 360 元 / 年 邮局订阅号: 82-946

您的论文得到两院院士关注 引脚 置 低实 现 与 其的 同 步 。 SPI 时钟 由 写 入到 SPI 发 送 缓 冲 寄 存器的数据启动 , SPI MOSI(PB5)引 脚 上的 数 据 发送 秩 序 由寄 存 器 SPCR 的 DORD 位 控 制 , 置 位 时 数 据 的 LSB(最 低 位 )首 先 发 送, 否则数据的 MSB(最高位 )首先发送。我们选择先发送 MSB, 同时接 收到 的 数 据传 送 到 接收 缓 冲 寄存 器 , CPU 进 行右 对 齐 从 接收缓冲器中读取接收到的数据。应该注意, 当需要从

电子设计
命令。 拉高 CS 引脚电平可结束 WBM 命令。 WBM 操作期间, 在

SO 引脚一直为高阻态, WBM 操作时序, 请参见图 3 。

ENC28J60 中 读 取 多 个 数 据 时 , 即 使 ENC28J60 并 不 需 要 ATmega16 串 行 输 出 的 数 据 , 每 读 取 一 个 数 据 前 都 要 向 SPI 发
送缓冲器写一个数据以启动 SPI 接口时钟。由于 SPI 系 统 的发 送方向只有 1 个缓冲器, 而在接收方向有 2 个缓冲器, 所以在 发 送 时 一定 要 等 到移 位 过 程 全 部 结 束 后 , 才 能 对 SPI 数 据 寄 存 器执行写操作; 而在接收数据时, 需要在下一个字节移位过程 结束之前通过访问 SPI 数据寄存器读取当前接收到的数据, 否 则第 1 个数据丢失。 图 3 写缓冲存储器时序图

ENC28J60 内 的 MAC 在 发 送 时 会 自 动 生 成 前 导 符 和 帧 起
始定界符。 此外, MAC 可根据配置生成填充 (如果 需 要 )和 CRC 字 段 。主控 制 器 必须 生 成 所有 其 他 帧字 段 , 并 将它 们 写 入 缓 冲 存 储器 , 以 待 发送 。此 外 , ENC28J60 还要 求 在 待 发 送 的 数 据 包 前添加一个包控制字节。主控制器应 :1. 正确编程 ETXST 指针, 使之 指 向存 储 器 中未 用 的 单元 。它 将 指向 包 控 制字 节 , 在 本 设 计 方 案 中 , 指 针 应 编 程 为 0120h ; 2. 使 用 WBM SPI 命 令 写 入 包 控 制 字 节 、 标 地 址 、 MAC 地 址 、 型 / 长 度 和 数 据 有 效 负 目 源 类 载; 3. 正确编程 ETXND 指针。它应指向数据有效负载的最后一 个 字 节 , 在 本 设 计 方 案 中 , 指 针 应 编 程 为 0156h ; 4. 将 EIR.TXIF 位清零、 EIE.TXIE 位 和 EIE.INTIE 位置 1 允 许 在发 送 完 成后 将 产 生 中断 (如 果 需 要 ); 5. 将 ECON1.TXRTS 位 置 1 开 始 发 送 。 如 果 在 TXRTS 位 置 1 时 正 在 进 行 DMA 操 作 , ENC28J60 会 等 待

图 2 基于 ENC28J60 的嵌入式网络接口的硬件电路原理图

3.2 ENC28J60 软件初始化 在使用 ENC28J60 发送和接收数据包前, 必须对器件进行
初始化设置。根据不同的应用, 一些配置选项可能需要更改。初 始化设置工作包括接收和发送缓冲器、 接收过滤器、 晶振启动时 初始化芯片之前先关闭单片机的 间、 MAC 寄存器、 PHY 寄存器。 中断输入, 对 RESET 引脚给定一个持续的低电平复位信号, 然 后对相应的寄存器进行设置。 设置完成所有需要的寄存器后, 判 断以太网状态中的时钟启动标志位是否置位, 然后开中断。 系统 初 始化 后 进 入主 程 序 循环 , 包 括 单片 机 的 控制 作 用 和 网络 数 据传 输 。对 于以 太 网 传输 部 分 来说 . 主 要 有两 个 作 用 :一 是对 要发 送 的 数据 按 照 以太 网 数 据帧 格 式 进行 封 装 并发 送 ; 二 是对接收的以太网数据帧进行解包, 供应用程序使用。

DMA 操作完成再发送。 这种等待是必需的 , 因 为 DMA 和 发 送 引 擎 共 享 同 一 个 存 储 器 访 问 端 口 。 同 样 如 果 在 TXRTS 已 置 1 后 , ECON1 中 DMAST 位 才 置 1 , DMA 在 TXRTS 位 清 零 前 不 会 采取任何动作。 如果正在进行发送, 不应通过 SPI 读 取或 写 入 如 任何待发送的字节。 主控制器将 TXRTS 位清零可取消发送。 果 数 据 包 发 送 完 成 或 因 错 误 取 消 而 中 止 发 送 , ECON1.TXRTS 位会被清零, 一个 7 字节的发送状态向 量 将被 写 入 由 ETXND + 1 指向的单元, EIR.TXIF 会被置 1 并产生中断 (如果允许 )。要验 证数据包是否成功发送, 应读取 ESTAT.TXABRT 位 。如 果该 位 置 1 , 主控制器在查询发送状态向量的各个字段 外 , 还 应查 询 ESTAT.LATECOL 位, 以确定失败的原因。下面给出写数据包的 源代码 : void encWriteBuffer(unsigned int len,unsigned char *data) { PORTB &=  ̄CS_ENJ; // send write command SPDR = ENC28J60_WRITE_BUF_MEM; while(! (SPSR & (1<<SPIF))); while(len- - ) { // write data SPDR = *data++; while(! (SPSR & (1<<SPIF))); } PORTB |= CS_ENJ; } 3.3 ENC28J60 接收数据包
假设接收缓冲器已完成初始化, MAC 已正确配置而 且接 收 过 滤器 已 配 置为 接 收 以太 网 数 据包 , 主 控 制器 应 该 :1. 如果 需 要 在接 收 到 数据 包 时 产生 一 个 中 断 , 就 要 将 EIE.PKTIE 位 和 EIE. 邮局订阅号: 82-946 360 元 / 年 - 307-

技 术 创 新

3.3 ENC28J60 发送数据包
在进 行 数据 包 发 送或 接 收 时, 要 先 对 写 缓 冲 存 储 器 (Write

Buffer Memory, WBM)命 令 掌 握 。 WBM 允 许 主 控 制 器 将 字 节 写
入 8KB 发 送 和 接 收 缓 冲