ENC28J60

ENC28J60 是在嵌入式开发、物联网、单片机联网中常见的一种芯片。
我们来从硬件、软件、应用三个角度讲清楚它。


🧩 一、基本定义

ENC28J60Microchip(微芯科技) 公司生产的一款
独立的以太网控制器芯片(Ethernet Controller)
内部带有 MAC + PHY 模块,通过 SPI 接口 与主控 MCU 通信。

换句话说:

它是一个 “让单片机能上网的网卡芯片”


🧩 二、核心功能与规格

项目内容
通信接口 SPI(最高 20 MHz)
网络接口 10Base-T(10 Mbps 以太网)
工作电压 3.3V
内部 RAM 8KB(用于收发缓冲区)
MAC + PHY 内置
引脚 28 脚(典型封装 SSOP28)
其他功能 CRC校验、自动包过滤、全/半双工、唤醒模式

🧩 三、典型使用场景

应用举例
🏠 智能家居 MCU 控制灯、空调并通过局域网通信
⚙️ 工控监测 STM32/AVR 上传数据到服务器
🌐 物联网 无需 WiFi,直接用网线连接到路由器
💡 教学实验 常用于以太网协议学习、TCP/IP 栈移植实验

🧩 四、典型连接示意

 
┌─────────────────────┐ │ 单片机 MCU │ │ ┌───────────────┐ │ │ │ SPI接口 (MOSI,│ │ │ │ MISO, SCK, CS)│ │ │ └───────────────┘ │ └──────────┬────────┘ │ SPI总线 ▼ ┌─────────────────────┐ │ ENC28J60 芯片 │ │ 内置MAC + PHY + RAM │ └──────────┬────────┘ │ RJ45 ▼ ┌────────────┐ │ 以太网接口 │ └────────────┘

🧩 五、软件层面怎么用

1️⃣ MCU侧驱动

MCU(如 STM32、AVR、PIC)通过 SPI 读写 ENC28J60 的寄存器与缓冲区。

典型库函数:

 
void ENC28J60_Init(void); void ENC28J60_SendPacket(uint8_t* data, uint16_t len); uint16_t ENC28J60_ReceivePacket(uint8_t* buffer);

2️⃣ TCP/IP 协议栈

ENC28J60 不包含 TCP/IP 协议栈,只负责收发以太帧。
因此需要软件实现协议栈,例如:

  • uIP(轻量级 TCP/IP 栈)

  • lwIP(广泛使用于 STM32、RTOS)

  • Microchip TCP/IP Stack


🧩 六、ENC28J60 与常见替代品对比

芯片通信接口速度是否内置协议栈备注
ENC28J60 SPI 10 Mbps ❌ 无 低速但常见
W5500 (WIZnet) SPI 100 Mbps ✅ 有(硬件TCP/IP) 性能更好
LAN8720 RMII 100 Mbps ❌ 无 需MCU带MAC(如STM32F107)
RTL8201F MII/RMII 100 Mbps ❌ 无 常用于ARM或Linux系统

🧩 七、实际项目例子

💡 例子1:STM32 + ENC28J60 + lwIP

 
int main(void) { ENC28J60_Init(); lwip_init(); netif_add(...); tcp_listen(...); while (1) { ENC28J60_Service(); sys_check_timeouts(); } }

MCU 通过 SPI 与 ENC28J60 通信,lwIP 实现 TCP/IP 协议,实现简单的 Web 服务器或 Modbus TCP。


🧩 八、优缺点总结

优点缺点
SPI接口简单,易用 仅支持 10Mbps
不依赖操作系统 无硬件TCP/IP协议栈,MCU负担大
成本低(约10元) 对 MCU 性能有要求
教学和实验价值高 不适合高负载网络应用

posted on 2025-10-18 23:09  lydstory  阅读(34)  评论(0)    收藏  举报

导航