新型以太网控制器ENC28J60及其接口技术

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

摘要 介绍新型独立以太网控制器ENC28J60的结构、功能以及与外部接口的软硬件设计。ENC28J60以太网控制器采用标准的SPI串行接口,只需4条连线即可实现与单片机连接,有利于在小型系统上实现以太网功能。对于没有SPI接口的芯片通过模拟SPI接口的方式亦十分方便。

关键词 Ethernet ENC28J60 SPI 接口

引言

  ENC28J60是Microchip Technology(美国微芯科技公司)近期推出的28引脚独立以太网控制器。

  在此之前,嵌入式系统开发可选的独立以太网控制器都是为个人计算机系统设计的,如RTL8019、AX88796L、DM9008、CS8900A、LAN91C111等。这些器件不仅结构复杂,体积庞大,且比较昂贵。目前市场上大部分以太网控制器的封装均超过80引脚,而符合IEEE 802.3协议的ENC28J60只有28引脚,既能提供相应的功能,又可以大大简化相关设计,减小空间。

图1  ENC28J60的硬件连接

1  结构和功能

  采用业界标准串行外设接口(SPI)的以太网控制器ENC28J60具有以下主要特征:

  ◆ 符合IEEE 802.3协议。内置10 Mbps以太网物理层器件(PHY)及媒体访问控制器(MAC),可按业界标准的以太网协议可靠地收发信息包数据。
  ◆ 具有可编程过滤功能。特殊的过滤器,包括Microchip的可编程模式匹配过滤器,可自动评价、接收或拒收Magic Packet,单播(Unicast)、多播(Multicast)或广播(Broadcast)信息包,以减轻主控单片机的处理负荷。
  ◆ 10 Mbps SPI接口。业界标准的串行通信端口,使得低至18引脚的8位单片机也具有网络连接功能。
  ◆ 可编程8 KB双端口SRAM缓冲器。以高效的方式进行信息包的存储、检索和修改,以减轻主控单片机的内存负荷。该缓冲存储器提供了灵活可靠的数据管理机制。

2  硬件设计

  ENC28J60的硬件设计需要注意复位电路,时钟振荡器,振荡器启动定时器,时钟输出引脚,变压器、终端和其他外部器件,输入/输出电平等几个方面。(图1可供参考)

2.1  复位电路

  ENC28J60有上电复位(Power-on Reset)功能,RESET引脚上的低电平使ENC28J60进入复位模式;RESET引脚内部有弱上拉电阻。ENC28J60的硬件连接如图1所示。

2.2  时钟振荡器

  ENC28J60需要一个25 MHz的晶振,接在OSC1和OSC2脚上;也可由外部时钟信号来驱动。此时3.3 V的外部时钟接在OSC1脚上,OSC2断开或者通过一个电阻接地来降低系统噪声。

2.3  振荡器启动定时器

  ENC28J60内部有一个振荡器启动时钟OST(Oscillator Startup Timer),上电7 500个时钟周期(300 μs),OST期满后内部的PHY方能正常工作。这时不能发送或者接收报文。上位机可通过检测ENC28J60内部ESTAT寄存器中的CLKRDY位的状态来决定是否可设置发送或接收报文。

  需要注意的是,当ENC28J60上电复位或者从PowerDown模式下唤醒时,必须检测ESTAT寄存器中的CLKRDY是否置位。只有CLKRDY置位后才能发送、接收报文,访问相关寄存器。

2.4  时钟输出引脚

  CLKOUT引脚可为系统中的其他设备提供时钟源。上电后CLKOUT引脚保持低电平,复位结束后OST计数。OST期满后,CLKOUT输出频率为6.25 MHz的时钟。

  时钟输出功能通过ECOCON寄存器禁止、调整和使能。时钟输出可设置为1、2、3、4、8分频,上电后默认为4分频。ECOCON寄存器配置改变以后,CLKOUT引脚有80~320 ns的延迟(保持低电平),然后按照设定输出固定频率的时钟信号。

  软件或者RESET引脚上的复位信号不会影响ECOCON寄存器的状态。PowerDown模式也不会影响时钟的输出。当禁止时钟输出时,CLKOUT引脚保持低电平。

2.5  变压器、终端和其他外部器件

  为了实现以太网接口ENC28J60,需要几个标准的外部器件: 脉冲变压器、偏置电阻、储能电容和去耦电容。

  差分输入引脚(TPIN+/TPIN-),需要一个1∶1变比的脉冲变压器来实现10BASET。差分输出引脚(TPOUT+/TPOUT-),需要一个变比为1∶1、带中心抽头的脉冲变压器。变压器需要有2 kV或更高的隔离能力,防静电。对变压器的详细要求请参考芯片手册第16章“电气特性”。每个部分都需要通过2个50 Ω、精度为1%的电阻和1个0.01 μF的电容串联后接地。

  笔者采用的是中山汉仁公司的集成以太网隔离变压器RJ45插座HR901170A。

  ENC28J60内部的模拟电路需要在RBIAS引脚和地之间跨接1个2 kΩ、1%的偏置电阻。部分数字电路工作在2.5 V,以降低功耗;ENC28J60内部集成1个2.5 V的调节器来产生所需的电压,需在VCAP引脚和地之间接1个10 μF的电容保证供电的稳定性(该2.5 V调节器不是为外部负载设计的)。

  所有的供电引脚(VDD、VDDOSC、VDDPLL、VDDRX、VDDTX)必须接在外部的同一个3.3 V电源上;同理,所有的地(VSS、VSSOSC、VSSPLL、VSSTX)必须接在同一个外部地上。每个供电引脚和地之间应当接1个0.1 μF的陶瓷电容去耦(电容要尽可能接近供电引脚)。

  驱动双绞线接口需要较大的电流,所以电源线应尽可能宽,与引脚的连接尽可能短,以降低电源线内阻的消耗。

2.6  输入输出电平

ENC28J60是一个3.3 V的CMOS器件,但它设计得非常容易统一到5 V系统中去:SPI、CS、 SCK、SI输入和RESET引脚一样,都可承受5 V电压。当SPI和中断输入与3.3 V驱动的CMOS输出不兼容时,可能需要一个单向的电平转换器。74HCT08 (四与门), 74ACT125(四三态缓冲器)和许多具有TTL电平输入的5 V CMOS缓冲器芯片都可以提供所需的电平转换。

2.7  LED配置

  LEDA和LEDB引脚在复位时支持极性自动检测。既可直接驱动LED,又可灌电流驱动。复位时ENC28J60检测LED的连接,并按照PHLCON寄存器的默认设置来驱动。运行过程中的LED极性转换直到下一次系统复位后才能被检测到。LEDB的连接比较特殊,在复位过程中检测它的连接,决定如何初始化PHCON1寄存器的PDPXMD位。如果LEDB直接驱动LED,则PHCON1.PDPXMD位被清零,PHY工作在半双工模式;如果LEDB吸收反向电流点亮LED,则PHCON1.PDPXMD被置位,PHY工作在全双工模式;如果LEDB没有连接,则PHCON1.PDPXMD复位后的值不确定。这时主控制器必须适当设置该位,以使PHY工作在所需的状态(半双工或全双工)。

3  软件接口

3.1  SPI接口

  SPI接口( Serial Peripheral Interface )是一种同步、全双工串行接口,基于主从配置,是一个4线接口——主出/从入(MOSI),主入/从出(MISO),串行时钟(SCK),从机选择(SSEL)。

  在同一总线上可以有多个主机或者从机,但同一时刻只能有一个主机和一个从机能够进行通信。在一次数据传输过程中,数据是同步进行发送和接收的:主机向从机发送1字节数据,从机也向主机返1字节数据。数据传输原则上是全双工的;但实际上,大多数情况下只有一个方向上的数据流包含有意义的数据。

  SPI格式的主要特性是SCK信号的无效状态和相位,数据传输的时钟由主机提供。常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于从机输出数据位的时钟相位。CPOL和CPHA的设置决定了数据取样的时钟沿。
取决于CPOL和CPHA的设置不同,SPI共有4种模式,如表1所列。

表1  SPI的4种模式

3.2  ENC28J60与单片机的连接

  ENC28J60与微控制器MCU的连接是通过SPI实现的,支持10 Mbps。对于没有SPI接口的芯片可通过用I/O口模拟SPI接口的方式实现。ENC28J60仅支持SPI模式0,0。

  微控制器可通过SPI接口发送命令,访问ENC28J60的寄存器或读写接收/发送缓冲区,完成相关操作。复位也可通过SPI接口由软件实现,软件复位不影响RESET引脚的状态。

  ENC28J60有两个中断输出,分别用于事件中断触发和网络唤醒主机。

  CPU采用LPC2138用宏定义实现SPI口读写操作。SOSPDR为SPI数据寄存器,该双向寄存器为 SPI提供发送和接收的数据,发送数据通过写该寄存器提供,SPI接收的数据可从该寄存器读出。SOSPSR为SPI状态寄存器。在对SPI接口进行操作之前需对其初始化。下面给出读/写SPI接口的源代码。

#define READSPI( Val )
{
  S0SPDR = 0x00;
  while( 0 == (S0SPSR & 0x80));
  Val = S0SPDR;
}
#define WRITESPI( Val )
{
  if ( 0 == (S0SPSR & 0x40) ) {
    S0SPDR = Val;
    while( 0 == (S0SPSR & 0x80) );
  }
}

  亦可用LPC2138的SSP来连接ENC28J60,需将其设置为SPI模式。应当注意到SSP有8帧的收/发 FIFO,如果处理不当将造成读/写错误。因为缓冲区的存在可能破坏读/写ENC28J60的时序。

  对于没有SPI接口的单片机可采用普通I/O口模拟的方法实现SPI主机。此时须注意静态时时钟的无效状态和相位,以及输出数据位出现的时间;对ENC28J60操作期间片选必须保持有效(低电平),操作结束后返回低电平。根据ENC28J60的读/写波形很容易写出模拟SPI主机的程序。笔者曾在AT89S51上实现了模拟SPI主机读/写MCP2515的操作。

4  结论

  笔者在LPC2138+ENC28J60+HR901170A平台上实现了以太网通信。相对于其他方案,该系统极为精简。对于没有开放总线的单片机,虽然有可能采用模拟并行总线的方式连接其他以太网控制器,但不管从效率还是性能上,都不如用SPI接口或采用通用I/O口模拟SPI接口连接ENC28J60的方案。

  可以看出,ENC28J60是极具特色的独立以太网控制器:SPI接口使得小型单片机也能具有网络连接功能;集成MAC和PHY无需其他外设;具有可编程过滤功能,可自动评价、接收或拒收多种信息包,减轻了主控单片机的处理负荷;内部继承可编程的8 KB双端口SRAM缓冲器,操作灵活方便。不足之处为仅支持10BASET。

参考文献

[1]  Microchip Technology Inc. ENC28J60 StandAlone Ethernet Controller with SPI Interface. http://www.microchip.com/.
[2]  Philips Semiconductors. LPC213x User Manual. http://www.philipsmcu.com/.

[3]  周立功,张华,等. 深入浅出ARM7——LPC213x/LPC214x(上册). 北京:北京航空航天大学出版社,2005

 
以太网控制器学习(ENC28J60为例) 关于uip移植,主要参考了文档1:《STM32开发指南》第五十七章 ENC28J60网络实验以及文档2:uip源码分析,本文只记录个人移植过程中所学到的知识。 一.以太网控制器 以太网控制器也叫以太网适配器,就是俗称的网卡,以太网控制器使用一个特定的物理层和数据链路层标准。文档1使用的是ENC28J60,自己项目中用的是W5200。之前没接触过,用到了也没有好好学习,整好趁此机会学习一下。 阅读详情

相关推荐

LWIP的RAW API UDP通信详解(stm32f103---enc28j60)

目录LWIPLWIP简介LWIP主要特性ENC28J60ENC28J60简介![ENC](https://img-blog.csdnimg.cn/20190515175543191.png#pincenter)ENC28J60特点无操作系统LWIP移植在说移植之前,先说下几个重要的函数功能和数据结构enc28j60.c文件主要结构体*netif*结构体定义(netif.h)只列出了比较重要的字段l...

weixin_42149196的博客 5761

STM32 UDP部分,基于ENC28J60以太网模块,项目笔记

1.前言 嵌入式以太网开发是一个很有挑战性的工作。通过几个月的学习,我个人觉得大致有两条途径。第一条途径,先通过高级语言熟悉socket编程,例如C#或C++,对bind,listen,connect,accept等函数熟悉之后,应用 lwIP。第二种途径,通过分析嵌入式以太网代码,结合TCPIP协议栈规范逐步实践代码。第一种途径效率高,开发周期短,编写出来的代码性能稳定,第二种途径花的时间长,...

小灰灰的博客 8372

STM32 + LWIP + Enc28J60 + 组播实现

最近需要用到LWIP的组播,我用的是 STM32F103VC + ENC28J60  + LWIP。LWIP中是支持组播的,下面记录下实现方法。 1.既然ENC28J60要接收组播数据,首先要保证能接收到,检查ERXFCON 寄存器是不是过滤掉了你的组播数据,我之前的设置是:    ENC28J60_Write(ERXFCON,ERXFCON_UCEN|ERXFCON_CRCEN|ERXFCO

大浪淘沙 9247

enc28j60是带SPI接口的独立以太网控制器(即网卡),兼容IEEE 802.3,集成MAC和10 BASE-T PHY.而KSZ8081只是PHY芯片和网口扫盲三:以太网芯片MAC和PHY的关系

1.概述 enc28j60是带SPI接口的独立以太网控制器,兼容IEEE 802.3,集成MAC和10 BASE-T PHY,最高速度可达10Mb/s。基于enc28j60控制器的理解可阅读文章: ENC28J60学习笔记,在该文章内详细介绍控制器的使用方法,本文不对使用方法进行讲解,只提供代码下载路径: github开源地址。 在使用该控制器时,会涉及SPI通信协议。以OSI模型为标准,还会涉及物理层、链路层、网络层等知识。下面分别介绍。 2.spi通信协议 SPI(Serial Peripheral I

二进制模----细微行动改变影响世界 3377

RT-Thread—STM32—enc28j60

RT-Thread—STM32—enc28j60 概述 本教程主要是讲解如何使用ENC28J60模块介入以太网 本例程的模板使用通用模板环境搭建里面的模板RT-Thread—STM32—环境搭建 文末也有我移植好的例程,不过建议大家从头开始移植,加深印象^_^ 配置 打开工程目录,在ENV下输入menuconfig进入图形化配置界面 配置SPI2 使用ENC28J60软件包 使用l...

iot小胡的博客 2172

STM32与ENC28J60以太网通信程序实战

远程控制是一种技术,允许用户通过网络从一个位置控制或操作另一地点的计算机或设备。它在多个领域都有着广泛的应用,如IT支持、工业自动化、智能家居等。远程控制的需求分析主要考虑几个关键点:系统的可靠性、安全性、易用性和响应速度。可靠性:远程控制系统必须能够稳定运行,在各种网络环境下都能保证控制的实时性和准确性。安全性:远程控制操作往往涉及敏感数据,因此必须保证数据传输的加密与认证机制,防止数据泄露和非法控制。易用性:远程控制的用户界面应该直观简洁,使得非技术人员也能轻松使用。

weixin_42402664的博客 885

ENC28J60以太网控制器与uIP协议栈在51单片机上的应用实践

本文还有配套的精品资源,点击获取 简介:ENC28J60是一款面向8位微控制器的以太网控制器,支持10Base-T标准,拥有完整的MAC层功能和全双工通信能力。本资源包详细介绍了如何将uIP0.9轻量级TCP/IP协议栈移植到8051单片机上,包括硬件连接、驱动程序编写、初始化配置、中断服务程序编写等关键步骤。通过这一系列的操作,开发者可以实现在51单片机上基于ENC28J...

weixin_42602726的博客 1566

ENC28J60以太网控制器的程序代码实现

网络通信领域中,ENC28J60以其高集成度、高可靠性以及广泛的适用性,成为一款广泛应用的以太网控制器。本章将带您初步了解ENC28J60的基本功能、特点以及在实际开发中的潜在价值。ENC28J60是由Microchip公司生产的一款10Base-T以太网控制器,它内置了MAC(媒体访问控制)和PHY(物理层设备),支持全双工通信,最高可支持28引脚的封装形式,使其非常适合嵌入式系统设计。它的出现大大简化了微控制器与以太网的连接过程,降低了开发难度,同时提供了较高的性能。

weixin_35797963的博客 1074

新型以太网控制器 ENC28J60

最近小菜接了小项目,最近一直在研究以太网控制: 新型以太网控制器 ENC28J60 。下面小菜给大家收集中的这款控制器资料。       ENC28J60是Microchip  Technology(美国微芯科技公司)近期推出的28引脚独立以太网控制器。在此之前,嵌入式系统开发

菜没有盐的专栏 2130

STM32微控制器与ENC28J60以太网控制器集成

STM32微控制器是STMicroelectronics(意法半导体)生产的一款基于ARM Cortex-M内核的高性能32位微控制器。由于其高性能、高集成度和低功耗的特性,STM32广泛应用于工业控制、医疗设备、智能家居、汽车电子等领域。其丰富的外设、灵活的时钟系统和多样的通信接口为嵌入式系统设计提供了便利。

weixin_35753431的博客 952

Arduino与ENC28J60以太网控制器的连接指南

ENC28J60是一款独立以太网控制器芯片,它与主控制器通过SPI接口连接,为各种嵌入式设备提供了便捷的网络接入能力。它使用小型的封装,支持以太网标准IEEE 802.3,并且内置了MAC(介质访问控制器)和PHY(物理层设备),简化了网络接口设计。串行外设接口(SPI)是一种高速、全双工的通信协议,广泛用于微控制器和各种外围设备之间的连接。SPI的特点是它有一个主设备和多个从设备,以及使用四条线进行通信:MISO(主输入/从输出)、MOSI(主输出/从输入)、SCLK(时钟线)和SS(从设备选择)

weixin_28988985的博客 1161

ENC28J60以太网控制器应用详解与实战

ENC28J60是一款由Microchip Technology公司生产的独立以太网控制器,具备完整的IEEE 802.3兼容MAC和10Base-T PHY,常用于微控制器网络接口设计。它通过SPI接口与主控制器进行数据交换,从而提供网络连接能力。ENC28J60以低成本和高性能著称,在嵌入式系统中用于实现网络连接功能。SPI(Serial Peripheral Interface)是一种常见的串行通信协议,被广泛用于微控制器(MCU)和各种外围设备之间的通信。

weixin_30533301的博客 797

嵌入式以太网第一部分——ENC28J60网卡驱动

目录: 1:概述 2:enc28j60寄存器描述和读写寄存器例程 3:缓冲器描述和读写缓冲器例程 4:发送和接受数据包例程  概述: 1:以太网是实现LAN的一种技术,它允许嵌入式系统连接到一个LAN中,并可通过使用网关经Internet连接到外部世界,以太网的主要目的是向LAN发送和从LAN接收以太网帧,在TCP/IP协议族中,不包括以太网协议,可以理解它为TCP/IP中

3123

stm32f103zet6+enc28j60上移植lwip,建立TCP客户端通信

是时候写一波了,调了一个星期的裸机以太网通信。最终成功在stm32f103zet6+enc28j60上移植lwip,成功建立裸机端的TCP客户端,和PC端的TCP服务器进行通信。       开头说点虚的。             1、人生可能本身就是平淡无趣的,习惯于此,无大喜也无大悲。但追求的那点意义莫不过不甘心如此的碌碌无为,强行经历更大的痛苦、纠结、甚至无望,浪费时间和精力,在最终实现

yypz10000的专栏 7855

全志A20与ENC28J60以太网控制器驱动程序开发详解

嵌入式系统驱动程序是嵌入式设备的灵魂,它负责操作系统与硬件之间的通信,确保硬件资源得以有效管理和利用。在本章节,我们将探讨驱动程序在嵌入式系统中的关键作用、驱动程序与硬件交互的主要方式以及开发过程中应当遵循的基本原则。ENC28J60是一个广泛应用于嵌入式系统的以太网控制器,具有独特的特性和应用领域。接下来将详细介绍ENC28J60的技术参数、主要应用场景,并与传统以太网控制器进行性能对比和功耗及成本效益分析。

weixin_42514540的博客 1133

ENC28J60以太网之uIP协议

广东省电子设计大赛准备的,智能家居网关,外围单片机通信数据需要使用TCP/IP通信,故采用ENC28J60模块。        在嵌入式系统中,以太网控制器通常也是研究热点之一,MicroChip公司的ENC28J60在嵌入式系统中应用价值较高,该芯片集成了MAC控制器和PHY,使用SPI接口,适合在引脚资源比较紧张的嵌入式系统中加入以太网连接功能,本文主要介绍了MicroChip公司的ENC2

Sun_Rise2011的专栏 6613

单片机 STM32 HAL 网络模块 ENC28J60

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

嵌入式单片机实验室 2586

基于enc28j60的学习心得

1.概述 enc28j60是带SPI接口的独立以太网控制器,兼容IEEE 802.3,集成MAC和10 BASE-T PHY,最高速度可达10Mb/s。基于enc28j60控制器的理解可阅读文章:ENC28J60学习笔记,在该文章内详细介绍控制器的使用方法,本文不对使用方法进行讲解,只提供代码下载路径:github开源地址。 在使用该控制器时,会涉及SPI通信协议。以OSI模型为标准,还会涉及

技术搬运工 1万+

基于Proteus的ENC28J60以太网控制器仿真与原理图设计

有人质疑:“仿真终究是假的,怎么能代替真实测试?没错,仿真不能完全取代实测,但它是一个极其高效的前期验证工具。它可以帮你:- 快速验证SPI通信是否正常- 提前发现寄存器配置错误- 模拟各种网络异常(丢包、延迟、乱序)- 减少硬件迭代次数,节省时间和成本更重要的是,对于学生和刚入门的开发者而言,Proteus + ENC28J60这套组合提供了一个零风险的学习路径——你可以大胆尝试、反复修改,直到理解每一个比特的意义。而这,正是技术成长最宝贵的土壤。🌱。

weixin_42128315的博客 763
上一篇: NOR flash和NAND flash的区别
下一篇: Solaris第一次亲密接触
zieckey
博客等级 码龄20年 76粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值