ENC28j60.docVIP

  • 12
  • 0
  • 约1.74千字
  • 约 6页
  • 2017-02-08 发布于重庆
  • 举报
ENC28j60

基于ENC28j60的以太网设计 刘伯伟 前言:本次设计采用ENC28j60模块和UIP协议,实现TCP服务器、TCP客户端以及WEP服务器等功能。 关键字:UIP协议,TCP,WEP ENC28J60 是带有行业标准串行外设接口( Serial Peripheral Interface, SPI)的独立以太网控制器。它可作为任何配备有 SPI 的控制器的以太网接口。 ENC28J60 符合 IEEE 802.3 的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。 它还提供了一个内部 DMA 模块,以实现快速数据吞吐和硬件支持的 IP 校验和计算。 与主控制器的通信通过两个中断引脚和SPI 实现,数据传输速率高达 10 Mb/s。两个专用的引脚用于连接 LED,进行网络活动状态指示。 ENC28j60共有三种不同类型的寄存器——控制寄存器,以太网寄存器和PHY寄存器,不同的寄存器以不同的字母开头,以E、MA和MI加以区分。操作这三种不同的寄存器需要不同的组合命令。寄存器被分布在4个不同的bank中,也就是说存在地址相同的寄存器,但是这些寄存器却位于不同的分区中,在操作寄存器之前必须选中正确的bank。注意是有5个寄存器在4个bank的位置相同(EIE、 EIR、ESTAT、ECON1、ECON2)。 下图是ENC28j60的相关的寄存器: ENC28j60的寄存器操作分为2+2+2部分,分别为写寄存器和读寄存器部分,读缓冲区和写缓冲区部分,写PHY寄存器和读PHY寄存器部分。读写寄存器的分为两步,第一步为选定寄存器的BANK编号,第二步使用写命令或读命令,操作指定地址的寄存。 ENC28j60的应用电路如下图: ENC28J60 由七个主要功能模块组成: 1) SPI 接口,充当主控制器和 ENC28J60 之间通信通道。 2) 控制寄存器,用于控制和监视 ENC28J60。 3) 双端口 RAM 缓冲器,用于接收和发送数据包。 4) 判优器,当 DMA、发送和接收模块发出请求时对 RAM 缓冲器的访问进行控制。 5) 总线接口,对通过 SPI 接收的数据和命令进行解析。 6) MAC(Medium Access Control)模块,实现符合 IEEE 802.3 标准的 MAC 逻辑。 7) PHY(物理层)模块,对双绞线上的模拟数据进行编码和译码。 ENC28J60 网络模块采用 ENC28J60 作为主芯片,单芯片即可实现以太网接入,利用该模块,基本上只要是个单片机,就可以实现以太网连接。ENC28J60 网络模块原理图如下图所示: uIP协议的介绍: uIP是一个简单好用的嵌入式网络协议栈,易于移植且消耗的内存空间较少,非常适合学习和使用。可以肯定的说uIP是嵌入式以太网学习的好起点,但不一定是终点。 uIP 在系统中的位置: 从上图可以看出, uIP 协议栈主要提供 2 个函数供系统底层调用: uip_input 和 uip_periodic。另外和应用程序联系主要是通过 UIP_APPCALL 函数。当网卡驱动收到一个输入包时,将放入全局缓冲区 uip_buf 中,包的大小由全局变量 uip_len约束。同时将调用 uip_input()函数,这个函数将会根据包首部的协议处理这个包和需要时调用应用程序。当 uip_input()返回时,一个输出包同样放在全局缓冲区 uip_buf 里,大小赋给 uip_len。如果 uip_len 是 0,则说明没有包要发送。否则调用底层系统的发包函数将包发送到网络上。 uIP 周期计时是用于驱动所有的 uIP 内部时钟事件。当周期计时激发,每一个 TCP 连接都会调用 uIP 函数 uip_periodic()。类似于 uip_input()函数。 uip_periodic()函数返回时,输出的 IP 包要放到 uip_buf 中,供底层系统查询 uip_len 的大小发送。 实验结果: 网络ping通图 通过以太网实现灯的亮图 通过以太网控制LED灭

文档评论(0)

1亿VIP精品文档

相关文档