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

发布者:DazzlingSpirit最新更新时间:2006-09-04 来源: EDN China关键字:寄存器  时钟  复位 手机看文章 扫描二维码
随时随地手机看文章

引言

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。

所有的供电引脚(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及其接口技术

上一篇:基于MPC860的多规程用户业务接入设备研制
下一篇:基于Intel8274的机载同步通讯系统设计

推荐阅读最新更新时间:2024-05-13 18:14

基于STM32单片机的USB时钟配置设计
1.首先要配置好系统的时钟如下: RCC_DeInit();//将外设RCC寄存器重设为缺省值 /*EnableHSE*/ RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振(HSE) /*WaittillHSEisready*/ HSEStartUpStatus=RCC_WaitForHSEStartUp();//等待HSE起振,等待外部的时钟起振 if(HSEStartUpStatus==SUCCESS) { /*EnablePrefetchBuffer*/ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能或者失能预取指缓存 /*F
[单片机]
arm,体系结构,处理器模式,通用寄存器(转)
arm 英国公司,指出售芯片技术授权。 arm是RISC芯片。(RISC精简指令集计算机) arm体系结构共定义了6个版本,指令集功能不断扩大。 arm体系结构的变种。 1。thumb指令集:(T变种)是将arm指令集的一个子集重新编码形成的。arm指令长度是32位的,thumb是16位。 2。长乘法指令:(M变种)增加了两条进行长乘法操作的arm指令。 3。增强型DSP指令:(E变种)增加一些附加指令用于增强处理器对一些典型的DSP算法的处理性能。 4。java加速器 Jazelle:(J变种)提供了java加速功能。 5。arm媒体功能扩展:(SIMD变种)提供了高性能的视音频处理技术。 处理器模式: 1。用户模式us
[单片机]
stm8l低功耗系列
最近干刚做了一个stm8的项目用的是L低功耗系列,其中遇到一个问题。外设寄存器的值怎么都写入不进去。用IAR仿真产看寄存器的值,不论写进去多少,都是初始值。后来把所有寄存器都写了一遍,发现有的能写进去,有的写不进去。比如GPIO的寄存器就能写进去。百思不得姐,偶然查看clock的库函数发现个函数是设置外设时钟的。这个系列,亦或者整个低功耗系列的每个外设是不是都需要在时钟寄存器中单独设置时钟。(以前所使用的芯片都是在外设寄存器中使能或者是禁使能)
[单片机]
exynos 4412 时钟配置
—————————————————————————————-------- 本文解决的问题: 1、宏观上几个大模块的时钟配置顺序。 2、小模块的时钟选择、分频和一般的配置顺序。 3、对小模块来说,官方手册推荐的时钟源选择问题。 4、本文只以手册的“ 推荐配置”进行说明,“自由玩法”不保证稳定性。 —————————————————————————————-------- 多路选择器选择原则: 1、尽量保持默认配置不动。 2、尽量选择前端频率最高的源。 3、其它手册要求的特殊情况。 —————————————————————————————-------- 几个符号: 左边深色的: 无抖动多路选择器,无抖动意
[单片机]
exynos 4412 <font color='red'>时钟</font>配置
基于AVR单片机的电子时钟
通过几天的AVR单片机学习,用AVR系列单片机中的ATMEGA16,LCD液晶屏LC1602,温度采集模块DS18B20,时钟模块DS1302,5V升压IC,和三个按键,以及一些电子元件完成了数字时钟系统的设计。在一块液晶显示屏上实现动态,时、分、秒、年、月、日、星期、温度数据的显示, 通过三个按键,S1调时键、S2时间加键、S3时间减键、实现时钟的年、月、日、星期、时、分、秒、的调整。本系统设计大部分功能由软件来实现,使电路简单明了。这次制作源代码,是从我已前的一个小制作基于51单片机的DS1302时钟上移植过来的所以制作没用多少时间。一开始用51单片机做这电子钟在调试时还是出了不少问题如,没考虑到51单片机P0口没有内至上拉电
[单片机]
STM8L探索套件学习笔记-RTC实时时钟(六)
RTC的时钟可以选择四种时钟HSE/HIS/LSE/LSI,如下图所示。相比STM32的RTC需要相关软件配合才能RTC功能。STM8L更加灵活,相关寄存器就有33个,而且是硬件实现的,缺点是没有独立的RTC供电的电源。 实时时钟的主要代码: void main(void) { u8 temp=0; /* Infinite loop */ /* Select LSE (32.768 KHz) as RTC clock source */ CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); CLK_PeripheralClockConfig(CLK_Perip
[单片机]
介绍下如何新建一个STM32寄存器版的工程
今天简单介绍下如何新建一个寄存器版的工程。 首先,新建一个文件夹用于存放工程项目。在文件夹中在分别新建CMSIS、inc、src、proj三个文件夹。CMSIS(Cortex Microcontroller Software Interface Standard)用于存放基于CMSIS应用程序的基本结构,CMSIS外设访问层的文件。inc用于存放头文件。src用于存放源文件。proj用于存放工程项目。 接着,打开官网下载的固件库文件,将需要的文件添加到CMSIS。最后添加完如下图所示。 点击project,新建工程项目。将工程项目保存到已经建好的文件夹中。选择对应的CPU型号。 弹出添加库文件,由于我们使用寄存
[单片机]
介绍下如何新建一个STM32<font color='red'>寄存器</font>版的工程
操作BASEPRI特殊功能寄存器时无效解决方法(上)
有STM32用户发现在操作BASEPRI特殊功能寄存器时,根本不起作用。比方,它目前配置了几个中断,优先级各不相同,按照STM32CubeMx里的配置分别为2、3、4不等,当他在BASEPRI寄存器里写这几个数字中的任意一个时,发现BASEPRI的数字始终是0,没有任何效果。 我们知道,通过配置BASEPRI寄存器非0值来给系统中的中断响应设置门槛,当中断优先级低于某个级别时将不会得到CPU的响应执行,也就是说只有中断优先级高于某个级别时才能得到响应。下面截图是来自ARM CORTEX M4技术手册中有关BASEPRI寄存器的描述。 从这里可以看到该寄存器的有效配置位有8位,对其写0无意义,或者说放弃设置中断响应门槛功
[单片机]
操作BASEPRI特殊功能<font color='red'>寄存器</font>时无效解决方法(上)
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved