3. PIC32以太网MAC与PHY接口硬件设计

PIC32 系列 MCU 内部集成的是以太网 MAC 控制器,它只负责数据链路层的帧组装、CRC 校验、地址过滤与 DMA 搬运,并不产生线上的差分模拟信号。真正把数字帧转换成双绞线上可传输的模拟波形,需要外接一颗 PHY 芯片。MAC 与 PHY 之间的接口就是本节的核心:选 RMII 还是 MII、信号怎么连、PHY 到 RJ45 之间如何加变压器、PCB 上怎么布线,任何一环处理不当都会表现为链路能协商但丢包、或干脆连不上。

一、MII 与 RMII 的信号定义与取舍

MII(Media Independent Interface)是 IEEE 802.3 定义的标准接口,10/100Mbps 下使用 4 位数据通路,发送方向有 TXD[3:0]、TXEN、TXCLK,接收方向有 RXD[3:0]、RXDV、RXER、RXCLK,再加 CRS、COL 两个载波侦听与冲突指示信号,以及 MDC/MDIO 管理接口。它的特点是每个方向都有独立的时钟:发送用 TXCLK,接收用 RXCLK,均由 PHY 提供,频率为 25MHz(100Mbps)或 2.5MHz(10Mbps)。信号多、引脚占用大,但时序裕量充足,对布线要求相对宽松。

RMII(Reduced MII)把数据位宽从 4 位压缩到 2 位,时钟频率提高到 50MHz,收发共用同一个 REF_CLK。信号精简为 TXD[1:0]、TXEN、RXD[1:0]、CRXDV(即原来的 RXDV)、RXER、CRS_DV 复用、以及 MDC/MDIO。引脚数从 MII 的约 16 根降到 9 根左右,非常适合引脚紧张的 PIC32 封装。代价是时钟频率翻倍,建立/保持窗口变窄,对 REF_CLK 的抖动和走线等长更敏感。

选择原则很直接:如果 PIC32 引脚富余、板子空间足够、且希望降低时序风险,选 MII;如果引脚紧张、成本敏感、PCB 面积受限,选 RMII,但必须保证 50MHz 参考时钟质量。需要注意的是,RMII 的 REF_CLK 可以由 PHY 提供,也可以由 PIC32 输出,具体取决于所选 PHY 和 PIC32 型号的时钟方案,设计前必须查数据手册确认时钟源方向,否则会出现双方都不驱动时钟的死锁。

PIC32 MAC 与 PHY 接口信号连接示意 PIC32 MAC 帧组装 / CRC / DMA TXD[3:0] / TXD[1:0] TXEN RXD[3:0] / RXD[1:0] RXDV / CRS_DV RXER TXCLK / RXCLK / REF_CLK MDC / MDIO (MII 全信号 / RMII 精简) PHY 芯片 编码 / 解码 / 驱动 TXD 接收 TXEN 接收 RXD 发送 RXDV 发送 RXER 发送 时钟输出 MDC / MDIO (如 LAN8720 / DP83848) 发送数据 接收数据 时钟(PHY→MAC 或 MAC→PHY) 管理接口(双向) RMII:2 位数据 + 50MHz 共用 REF_CLK MII:4 位数据 + 独立 TXCLK/RXCLK

二、PHY 连接电路与变压器、RJ45 选型

PHY 与 PIC32 之间的数字侧连接相对固定,真正决定信号完整性和抗干扰能力的是 PHY 的模拟侧。PHY 的 TX+/TX−、RX+/RX− 是差分对,不能直接接到 RJ45,中间必须经过网络隔离变压器。变压器的作用有三:一是实现电气隔离,把网线上的共模高压与板内地隔开,保护 PHY 和 MCU;二是提供共模抑制,减少 EMI;三是完成阻抗匹配,典型为 1:1 匝比、100Ω 差分阻抗。

变压器选型要看几个参数:匝比(常见 1:1)、电感量(通常 350μH 以上)、插入损耗、回波损耗、耐压(常见 1500Vrms 隔离)、以及是否集成共模扼流圈。带共模扼流的型号能显著改善 EMC 表现。RJ45 连接器则分带变压器和不带变压器两种:带变压器的 RJ45(如带集成 magnetics 的型号)能省掉独立变压器、缩小面积,但成本略高、散热稍差;分离方案灵活、便于调试,但占用更多 PCB 面积。工业环境建议选带屏蔽外壳的 RJ45,并配合屏蔽网线使用。

PHY 的模拟侧还需要若干无源器件:TX 差分对通常串接 49.9Ω 或 50Ω 电阻到地或到电源,具体接法由 PHY 数据手册规定;RX 差分对一般直接进变压器。PHY 的 RBIAS 引脚需要一只精密电阻(常见 12.4kΩ 或 6.49kΩ,1% 精度)设定内部偏置电流,这只电阻必须靠近引脚、走线短且远离噪声源。此外,PHY 的电源去耦不能省:每个电源引脚配 0.1μF,整片再配 10μF,模拟电源与数字电源之间用磁珠或 0Ω 电阻隔离。

三、PCB 布局布线注意事项

以太网部分最容易出问题的就是布线。以下几条是必须遵守的硬约束:

  • 差分对等长、等距、紧耦合:TX+/TX− 和 RX+/RX− 各自作为一对,走线长度差控制在 5mil 以内,线间距保持恒定,全程 100Ω 差分阻抗。不要为了绕开过孔而让一对线分开走。
  • 参考平面完整:差分对下方必须有连续的地平面,不允许跨分割。跨分割会破坏回流路径,导致共模辐射和误码。
  • 远离噪声源:差分对要远离晶振、DC-DC 开关电源、时钟线和复位线,间距至少 3 倍线宽。PHY 的 25MHz 或 50MHz 时钟线尤其要包地处理。
  • 变压器与 RJ45 就近放置:变压器到 RJ45 的走线尽量短,这段是模拟差分信号,越长越容易引入干扰。变压器下方禁止铺铜,避免耦合。
  • RBIAS 电阻紧贴引脚:走线不超过几毫米,周围包地,不与其他信号并行。
  • MDC/MDIO 上拉:MDIO 是双向开漏信号,需要 1.5kΩ~10kΩ 上拉到 PHY 的 I/O 电压,MDC 由 MAC 驱动,一般不需要上拉。
RMII 的 REF_CLK 是 50MHz,如果由 PIC32 输出,务必确认该引脚支持 50MHz 输出且抖动满足 PHY 要求;如果由 PHY 输出,则要检查 PIC32 的 REF_CLK 输入是否容忍 PHY 的时钟电平标准(常见 3.3V LVCMOS)。

四、一个可参考的连接检查清单

在投板前,建议按下面这份清单逐项核对,避免低级错误导致整板返工:

检查项要求常见错误
接口模式RMII/MII 与 PHY 配置一致PHY 默认 MII,MCU 配成 RMII
REF_CLK 方向确认时钟源唯一双方都输出,冲突
差分阻抗100Ω ±10%按单端 50Ω 走,阻抗失配
差分等长对内 ≤5mil绕线导致长度差过大
RBIAS1% 精度,紧贴引脚用 5% 电阻或走线过长
MDIO 上拉1.5k~10k 到 I/O 电压漏加上拉,管理不通
变压器隔离1500Vrms 以上选型耐压不足
地平面差分对下方连续跨分割,回流断裂

把接口信号、模拟侧无源器件和 PCB 约束三件事同时做对,PIC32 的以太网链路才能在 100Mbps 下稳定工作。实际调试时,如果出现链路能 up 但 ping 丢包,优先怀疑差分对布线和 REF_CLK 质量;如果 MDIO 读不到 PHY ID,先查上拉和 MDC 是否有波形。这些判断依据都来自上面这些硬件设计要点。