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 型号的时钟方案,设计前必须查数据手册确认时钟源方向,否则会出现双方都不驱动时钟的死锁。
二、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/MII 与 PHY 配置一致 | PHY 默认 MII,MCU 配成 RMII |
| REF_CLK 方向 | 确认时钟源唯一 | 双方都输出,冲突 |
| 差分阻抗 | 100Ω ±10% | 按单端 50Ω 走,阻抗失配 |
| 差分等长 | 对内 ≤5mil | 绕线导致长度差过大 |
| RBIAS | 1% 精度,紧贴引脚 | 用 5% 电阻或走线过长 |
| MDIO 上拉 | 1.5k~10k 到 I/O 电压 | 漏加上拉,管理不通 |
| 变压器隔离 | 1500Vrms 以上 | 选型耐压不足 |
| 地平面 | 差分对下方连续 | 跨分割,回流断裂 |
把接口信号、模拟侧无源器件和 PCB 约束三件事同时做对,PIC32 的以太网链路才能在 100Mbps 下稳定工作。实际调试时,如果出现链路能 up 但 ping 丢包,优先怀疑差分对布线和 REF_CLK 质量;如果 MDIO 读不到 PHY ID,先查上拉和 MDC 是否有波形。这些判断依据都来自上面这些硬件设计要点。