电子说
在当今数字化时代,以太网连接在各类电子设备中扮演着至关重要的角色。ENC28J60作为一款具备SPI接口的独立以太网控制器,以其独特的功能和广泛的适用性,成为众多电子工程师的首选。本文将对ENC28J60进行全面深入的剖析,涵盖其特性、外部连接、内存组织、SPI接口等多个方面,旨在为工程师们提供一份详尽的设计与应用指南。
文件下载:ENC28J60T-I ML.pdf
ENC28J60专为与具备SPI接口的控制器搭配使用而设计,能够无缝融入各类以太网网络环境。它严格遵循IEEE 802.3规范,可全面兼容10/100/1000Base - T网络,具备多种实用特性。
CLKOUT引脚可作为主机控制器时钟或系统中其他设备的时钟源。其内部预分频器可将输出频率进行1、2、3、4或8分频,通过ECOCON寄存器进行配置。在电源上电初期,CLKOUT引脚保持低电平,待OST计数结束后,将输出默认频率6.25 MHz(主时钟除以4)。在改变频率时,会有2 - 8个OSC1时钟周期的延迟,期间CLKOUT引脚保持低电平。
ENC28J60的内存采用静态RAM实现,主要包括控制寄存器、以太网缓冲器和PHY寄存器三种类型。
控制寄存器用于ENC28J60的配置、控制和状态检索,可通过SPI接口直接读写。其内存被划分为四个32字节的存储体,通过ECON1寄存器中的BSEL<1:0>位进行选择。部分地址未被实现,写入这些地址将被忽略,读取返回‘0’。其中,地址1Ah的寄存器为保留寄存器,不应进行读写操作。
以太网缓冲器由8 Kbytes的存储单元组成,分为接收和发送缓冲器空间,其大小和位置可由主机控制器通过SPI接口进行编程设置。
PHY寄存器用于PHY模块的配置、控制和状态检索,所有PHY寄存器均为16位宽,共32个地址,但仅9个位置被实现。通过MIIM接口访问PHY寄存器,具体操作包括写入地址、数据,等待操作完成等步骤。
ENC28J60的操作完全依赖于外部主机控制器通过SPI接口发送的命令,共实现了七种指令。
用于读取ETH、MAC和MII寄存器的内容。对于ETH寄存器,发送RCR操作码和5位寄存器地址后,数据将立即从SO引脚移出;对于MAC和MII寄存器,先移出一个虚拟字节,然后再移出数据。操作结束后,将CS引脚置高。
允许主机控制器从集成的8 Kbyte发送和接收缓冲器内存中读取字节。发送RBM操作码和5位常量1Ah后,数据将从ERDPT指向的内存中移出。若ECON2寄存器中的AUTOINC位被置位,ERDPT指针将自动递增,实现连续读取。
用于向ETH、MAC和MII控制寄存器写入数据。发送WCR操作码和5位地址后,将数据写入指定寄存器。操作结束后,将CS引脚置高。
允许主机控制器向集成的8 Kbyte发送和接收缓冲器内存中写入字节。发送WBM操作码和5位常量1Ah后,将数据写入EWRPT指向的内存。若ECON2寄存器中的AUTOINC位被置位,EWRPT指针将自动递增,实现连续写入。
用于设置ETH控制寄存器中的最多8位。发送BFS操作码和5位地址后,将数据字节与指定寄存器内容进行按位或操作。
用于清除ETH控制寄存器中的最多8位。发送BFC操作码和5位地址后,将数据字节取反并与指定寄存器内容进行按位与操作。
允许主机控制器发出系统软复位命令。发送SRC操作码和5位软复位命令常量1Fh后,操作结束将CS引脚置高。
正常的IEEE 802.3兼容以太网帧长度在64 - 1518字节之间,由目的MAC地址、源MAC地址、类型/长度字段、数据有效负载、可选填充字段和CRC组成。在传输和接收数据时,ENC28J60会自动生成或去除前导码和帧起始分隔符字节,主机控制器通常无需处理这些内容。
在发送数据包前,需对MAC寄存器进行初始化设置。主机控制器需生成并写入除前导码、帧起始分隔符、填充和CRC(若已配置)之外的所有帧字段,并在数据包前添加一个单字节的每包控制字节。设置ETXST和ETXND指针,清除EIR.TXIF,设置EIE.TXIE和EIE.INTIE(若需要中断),然后设置ECON1.TXRTS开始传输。传输完成或因错误/取消而中止时,ECON1.TXRTS位将被清除,发送状态向量将被写入ETXND + 1位置,EIR.TXIF将被置位,并触发中断(若已启用)。
在接收数据包前,需初始化接收缓冲器、配置MAC和接收过滤器。启用接收功能后,未被过滤的数据包将被写入循环接收缓冲器。每个数据包前有一个6字节的头部,包含下一个数据包指针和接收状态向量。主机控制器可使用RBM命令从下一个数据包指针开始读取数据包内容,处理完数据包后,需推进接收缓冲器读取指针ERXRDPT,并将ECON2.PKTDEC位置1,以减少EPKTCNT寄存器的值。
为减轻主机控制器的处理负担,ENC28J60集成了多种接收过滤器,包括单播、模式匹配、Magic Packet™、哈希表、多播和广播过滤器。这些过滤器由ERXFCON寄存器配置,可通过ANDOR位进行逻辑与或逻辑或操作。通过合理配置过滤器,可自动拒绝不需要的数据包。
ENC28J60不支持自动双工协商,若要实现全双工通信,需与远程节点进行手动配置。
当MACON3.FULDPX = 0且PHCON1.PDPXMD = 0时,ENC28J60工作在半双工模式。在此模式下,同一时间只能有一个以太网控制器进行数据传输。若发生冲突,硬件将根据冲突发生的时间采取相应的处理措施:若在“冲突窗口”内发生冲突,将进行随机指数退避延迟后重新尝试传输;若在“冲突窗口”外发生冲突,则立即中止传输。默认情况下,半双工模式会将发送的数据包回环至自身,可通过设置PHCON2.HDLDIS位来停止此行为。
当MACON3.FULDPX = 1且PHCON1.PDPXMD = 1时,ENC28J60工作在全双工模式。在此模式下,数据包可同时进行发送和接收,不会发生冲突。默认情况下,全双工模式不会将发送的数据包回环至自身,若需要进行诊断,可设置PHCON1.PLOOPBK位。
在半双工模式下,设置EFLOCON.FCEN0位可启用流量控制。此时,以太网介质上会自动发送交替的‘1’和‘0’(55h)的连续前导码模式,阻止其他节点进行通信。当主机控制器发送数据包时,前导码模式将停止,发送完成或中止后,前导码模式将自动恢复。由于此模式可能对网络产生不利影响且效果不佳,建议仅在经过适当测试的封闭网络环境中使用。
在全双工模式下,通过发送IEEE 802.3规范定义的暂停控制帧来实现硬件流量控制。主机控制器需设置MACON1寄存器中的TXPAUS和RXPAUS位,当接收缓冲器空间不足时,将EFLOCON寄存器写入02h以开启流量控制,硬件将定期发送包含暂停定时器值的暂停帧;当有足够空间时,将EFLOCON寄存器写入03h以关闭流量控制,硬件将发送一个包含暂停定时器值为0000h的暂停帧。
ENC28J60支持多种复位方式,包括上电复位、系统复位、仅发送复位、仅接收复位和杂项MAC和PHY子系统复位。
当VDD上升超过一定阈值时,芯片内部会产生上电复位脉冲,使设备进入初始化状态。为确保正常复位,需满足VDD的最小上升速率要求。上电复位后,双端口缓冲器内存内容未知,但所有寄存器将加载为指定的复位值。部分功能在复位后需等待OSC启动定时器结束方可访问。
可通过RESET引脚或SPI接口的系统复位命令进行系统复位。复位后,所有PHY寄存器在复位结束后至少50 μs内不应进行读写操作,所有寄存器将恢复到默认复位值,双端口缓冲器内存状态保持不变。
通过向ECON1寄存器的TXRST位写入‘1’来执行仅发送复位。若正在发送数据包,硬件将自动清除TXRTS位并中止传输,仅复位发送逻辑。
通过向ECON1寄存器的RXRST位写入‘1’来执行仅接收复位。若正在接收数据包,硬件将自动清除RXEN位并中止接收,仅复位接收逻辑。
向PHCON1寄存器的PRST位写入‘1’可复位PHY模块。复位后,所有PHY寄存器内容将恢复到默认复位值,但PHY不能立即退出复位状态,需等待一段时间,待硬件自动清除PRST位后,主机控制器方可使用PHY。
ENC28J60具备多个中断源和一个中断输出引脚,通过EIE寄存器控制中断使能,EIR寄存器记录中断标志。当启用的中断发生时,中断引脚将保持低电平,直到主机控制器清除或屏蔽所有导致中断的标志。建议使用位字段清除(BFC)SPI命令来重置EIR寄存器中的标志位,以避免在写入命令期间意外改变标志。
ENC28J60支持Wake - On - LAN/Remote Wake - up功能,可通过配置接收过滤器和中断掩码寄存器,在接收到唤醒数据包(如Magic Packet)时唤醒处于低功耗模式的主机控制器。
ENC28J60集成的双用途DMA控制器可用于在8 Kbyte内存缓冲器内复制数据,也可计算与多种行业标准协议兼容的16位校验和。
为在缓冲器内复制内存,需适当编程设置EDMAST、EDMAND和EDMADST寄存器对,设置EIE.DMAIE和EIE.INTIE(若需要中断),清除EIR.DMAIF,确认ECON1.CSUMEN位已清除,然后设置ECON1.DMAST开始复制。复制完成后,DMA硬件将清除DMAST位,设置DMAIF位,并触发中断(若已启用)。
计算校验和时,需编程设置EDMAST和EDMAND寄存器对,清除EIR.DMAIF,设置EIE.DMAIE和EIE.INTIE(若需要中断),然后设置ECON1.CSUMEN和ECON1.DMAST开始计算。计算完成后,硬件将清除DMAST位,设置DMAIF位,并触发中断(若已启用),计算结果将存储在EDMACSH和EDMACSL寄存器中。
ENC28J60的内置自测试(BIST)模块可用于验证8 Kbyte内存缓冲器中每个位的正常运行。通过EBSTCON、EBSTSD、EBSTCSH和EBSTCSL四个寄存器来操作BIST控制器,支持随机数据填充、地址填充和模式移位填充三种操作模式。
全部0条评论
快来发表一下你的评论吧 !