嵌入式以太网硬件架构由SoC内部MAC、外部PHY芯片和RJ45接口组成,通过MII/RMII接口实现数据传输,MDIO接口负责PHY配置与状态监控。
一、整体架构
一个完整的嵌入式以太网通信链路由以下三部分组成:
- SoC 内部 MAC
- 外部 PHY 芯片
- RJ45 接口(含/不含磁性模块)
关键角色分工如下:
- MAC:负责处理帧的封装与拆解、CRC校验、地址过滤等逻辑层功能。
- PHY:完成数字信号到模拟差分信号的转换,实现物理层的通信。
- RJ45 + 变压器:提供电气隔离、阻抗匹配以及物理连接。
二、MII 接口(Media Independent Interface)
MII接口是一种介质独立接口,用于连接以太网MAC和PHY芯片。其基本信息包括:
- 全称:介质独立接口
- 标准:IEEE 802.3定义
- 速率支持:10 Mbps / 100 Mbps
- 数据位宽:4位并行
- 信号线数量:16根
主要信号定义有:TX_CLK(发送时钟)、RX_CLK(接收时钟)、TX_EN(发送使能)、TX_ER(发送错误)、TXD[3:0](发送数据)、RX_DV(接收数据有效)、RX_ER(接收错误)、RXD[3:0](接收数据)、CRS(载波侦听)、COL(冲突检测)。
然而,MII接口的缺点在于引脚数量多,占用资源大,因此在一些小型化、低成本的设备中逐渐被RMII接口所取代。
三、RMII 接口(Reduced MII)
RMII接口是MII接口的精简版本,旨在简化设计并降低引脚数和布线复杂度。其基本信息如下:
- 全称:精简的介质独立接口
- 目的:简化MII接口,降低引脚数和布线复杂度
- 信号线数量:7根
- 数据位宽:2位并行
- 时钟频率:固定为50 MHz
主要信号定义包括:REF_CLK(参考时钟)、TX_EN(发送使能)、TXD[1:0](发送数据)、RXD[1:0](接收数据)、CRS_DV(载波侦听/接收数据有效)。
RMII接口的优势在于引脚数量少,能够节省PCB面积和SoC I/O资源,非常适合资源受限的平台。但其限制在于不支持冲突检测,仅支持全双工模式。
四、MDIO 接口(Management Data I/O)
MDIO接口是一种管理数据输入/输出接口,用于配置、监控和调试PHY芯片。其基本信息如下:
- 作用:配置、监控、调试PHY芯片
- 类型:两线串行总线(类似于I²C)
主要信号线包括:MDC(管理数据时钟)和MDIO(双向数据线)。
MDIO接口的特性包括支持最多32个PHY设备,每个PHY设备必须有唯一的器件地址。它主要用于上电初始化、查询链路状态、读取错误计数等操作。
五、RJ45 接口与网络变压器
RJ45接口是一种标准的8P8C插座,用于插入以太网水晶头。网络变压器则位于PHY芯片和RJ45接口之间,起到电气隔离、共模噪声抑制和阻抗匹配的作用。
网络变压器有两种实现方式:外置变压器和内置变压器。外置变压器需要额外的磁性模块芯片,而内置变压器则将磁性模块集成在RJ45座内(如HR911105A型号)。
此外,RJ45接口上通常有两个指示灯:绿色灯表示链路建立成功,黄色或橙色灯表示正在收发数据。
六、I.MX6ULL ENET 接口特性
I.MX6ULL处理器具有两个独立的ENET控制器(即两个MAC),支持10/100 Mbps的速率,并符合IEEE 802.3-2002标准。其主要特性包括协议加速(硬件加速TCP/IP、UDP、ICMP等协议头部处理)、RMON支持(远程网络监控,提供流量统计和错误计数)、灵活的PHY接口支持(标准MII、MII-Lite、RMII)以及其他功能如可编程MAC地址、单播/多播地址过滤、魔术帧唤醒、专用DMA和支持IEEE 1588等。
对于开发者来说,Linux内核已经提供了i.MX6ULL ENET驱动的支持,因此无需重写MAC驱动。重点在于正确配置设备树中的相关参数即可。
七、总结对比
MII和RMII接口各有特点。MII接口采用4位并行数据传输机制,在100Mbps速率下时钟频率为25MHz;而在10Mbps速率下则为2.5MHz。相比之下,RMII接口使用2位宽数据收发通道,并通过提升时钟频率至50MHz来维持等效带宽。由于RMII接口减少了约一半的物理连接需求且成本更低,因此更适合于引脚资源受限的MCU设计和小型网络设备中应用广泛。然而需要注意的是,RMII接口不支持冲突检测功能,只能工作在全双工模式下。
八、典型连接示意
[I.MX6ULL SoC]
│
├── ENET_MAC
│ ├── RMII: TX_EN, TXD[1:0], RXD[1:0], CRS_DV, REF_CLK (50MHz)
│ └── MDIO: MDC, MDIO
│
[PHY 芯片](例如LAN8720或KSZ8081)
│
├── 差分信号:TXP/TXN, RXP/RXN
│
[网络变压器](可能集成于RJ45内)
│
[RJ45 插座 HR911105A] ←─(带有Link/Act LED指示灯)
│
[网线 → 路由器]
开发建议:
- 新项目应优先考虑使用RMII接口配合内置变压器的RJ45插座方案;
- 确保在设备树文件中明确指定`phy-mode = "rmii"`;
- 使用示波器检查REF_CLK是否为稳定的50MHz时钟信号;
- 利用`ethtool eth0`命令查看当前链路状态及协商结果等信息。