STM32以太网开发之网络模块ENC28J60

发布网友 发布时间:2024-12-11 22:04

我来回答

1个回答

热心网友 时间:2024-12-11 23:03

ENC28J60概述


ENC28J60是一款集成了MAC控制器和PHY收发器的以太网控制器,它能够通过SPI接口方便地与微控制器(MCU)通信以实现以太网扩展。该器件符合IEEE 802.3标准,具备包过滤机制、内部DMA模块、以及支持硬件校验和计算的能力。通过SPI与主控制器连接,数据传输速率可达10Mb/s,并提供两个专用引脚用于LED指示网络活动状态。图1-1展示了ENC28J60的简化框图,而图1-2为典型应用电路。实现10Mbps以太网连接只需ENC28J60、两个脉冲变压器和少量无源元件即可。


ENC28J60主要功能模块包括:



SPI接口:作为主控制器与ENC28J60之间的通信通道。
控制寄存器:用于控制和监控ENC28J60。
双端口RAM缓冲器:用于接收和发送数据包。
判优器:管理对RAM缓冲器的访问。
总线接口:解析通过SPI接收的数据和命令。
MAC模块:实现IEEE802.3标准的MAC逻辑。
PHY模块:对双绞线上的模拟数据进行编码和译码。

数据包格式


符合IEEE 802.3标准的以太网帧长度一般在字节至1518字节之间,由5至6个字段组成:目标MAC地址、源MAC地址、类型/长度字段、数据有效负载、可选填充字段和循环冗余校验(CRC)字段。此外,前导字段和帧起始定界符在发送时自动生成,在接收时被剥离。



前导字段/帧起始界定符:在发送数据时自动生成,在接收数据时自动剥离。
目标地址:六字节字段,包含数据包的目标设备MAC地址。可为组播、广播或单播地址。
源地址:六字节字段,包含创建数据包的节点MAC地址。需要主控制器生成唯一MAC地址。
类型/长度:两字节字段,定义数据包的协议类型。可作为长度字段,指定数据字段长度。
数据:可变长度字段,范围在0至1500字节之间。
填充:用于满足IEEE 802.3规范要求,当数据有效负载较小时添加。
CRC校验:四字节字段,包含通过计算生成的CRC值,用于验证数据包完整性。

发送和接收数据包


发送数据包时,主控制器负责生成所有帧字段并写入缓冲存储器。ENC28J60将自动生成前导符、帧起始定界符、填充(如果需要)和CRC字段。接收数据包时,必须初始化接收缓冲器,配置接收过滤器,并使能接收功能。主控制器可通过中断和接收状态向量来监控数据包接收情况。


初始化


使用ENC28J60发送和接收数据包前需进行初始化设置。包括接收缓冲器初始化、设置接收过滤器、等待振荡器起振时间、MAC和PHY寄存器初始化等。初始化通常在复位后立即完成。


接收缓冲器初始化


接收缓冲器初始化涉及编程ERXST和ERXND指针,用于确定接收缓冲器的起始和结束地址。ERXST建议用偶地址编程,以支持大量数据和频繁数据包交换的应用。预留至少7个字节用于跟踪接收数据。发送缓冲器通常不需要特定初始化。


等待振荡器起振时间


在执行初始化操作后,应确保经过足够的时间,查询ESTAT.CLKRDY位以确保振荡器完全起振。


MAC初始化


配置MAC寄存器以设置发送特性。初始化顺序不重要。


PHY初始化


配置PHY寄存器以适应不同应用需求,包括双工模式控制、LED输出配置等。确保与MAC配置相匹配,实现正确的双工操作。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com