3. 100BASE-T1标准解析
好,咱们进入第三章。这一章我打算把车载以太网硬件架构里最核心的几个模块拆开来讲。说白了,就是搞清楚三件事:PHY芯片怎么挑、MAC和PHY之间怎么连、管理总线怎么玩。
很多刚入行的工程师,拿到原理图就开始画,结果PHY选型踩坑、接口时序对不上、MDIO读写不稳定。嗯,这些我都经历过。今天咱们就把这些坑提前填上。
3.1 PHY芯片选型:不只是看速率
PHY芯片,物理层收发器,负责把MAC出来的数字信号变成差分模拟信号扔到双绞线上。100BASE-T1的PHY,和传统100BASE-TX的PHY完全不是一回事。
选型时我重点看这几个维度:
| 选型维度 | 关键参数 | 我的经验 |
|---|---|---|
| 速率标准 | 100BASE-T1 / 1000BASE-T1 | 目前主流是100M,ADAS域开始上1000M |
| 接口类型 | MII / RMII / RGMII / SGMII | 100M常用RMII,引脚少;1000M必须RGMII |
| 工作温度 | -40°C ~ +105°C / +125°C | 车内环境,至少Grade 2(-40~105) |
| EMC性能 | 共模抑制比、辐射发射 | 这个最容易被忽略,上车后EMC整改很痛苦 |
| 唤醒/休眠 | 支持本地唤醒、远程唤醒 | 车载必须支持,否则静态功耗过不了 |
| 诊断功能 | 链路检测、线缆开路/短路检测 | 我建议选带Link Quality Indicator的 |
核心观点:100BASE-T1 PHY和传统以太网PHY最大的区别在于——它只用一对差分线,而且必须兼容车载的12V/24V电源环境。选型时优先看有没有通过OPEN Alliance TC1一致性测试。
市面上主流的100BASE-T1 PHY芯片,我列几个常用的:
- 博通 BCM89811:老牌选手,稳定,但价格偏高
- 美满 88Q1010:性价比不错,我项目里用得最多
- 恩智浦 TJA1101:和S32K系列配合很好,生态成熟
- 瑞萨 R-Car配套PHY:适合R-Car SoC平台
选型时还有个坑——封装。有些PHY是QFN封装,手工焊接难度大,量产良率也受影响。我建议优先选带散热焊盘的,散热和接地都好处理。
3.2 MAC与PHY接口:MII/RMII/RGMII
MAC(媒体访问控制器)和PHY之间的接口,决定了数据怎么传、传多快。车载以太网里,常见的就三种:MII、RMII、RGMII。
先看一张接口对比表:
| 接口类型 | 数据位宽 | 时钟频率 | 引脚数 | 适用速率 |
|---|---|---|---|---|
| MII | 4位 | 25MHz | 16~18 | 10/100M |
| RMII | 2位 | 50MHz | 9~10 | 10/100M |
| RGMII | 4位(DDR) | 125MHz | 12~14 | 10/100/1000M |
MII:最原始的接口,16根线。100M速率下时钟25MHz,数据4位并行。优点是时序宽松,缺点是引脚太多。车载ECU里引脚资源宝贵,现在很少用了。
RMII:精简版MII,数据线从4根减到2根,时钟提到50MHz。引脚少了一半,但需要外部提供50MHz参考时钟。我个人的习惯是,100BASE-T1项目优先选RMII,引脚少、布线简单。
RGMII:千兆接口,数据在时钟的上升沿和下降沿都采样(DDR),所以125MHz时钟就能达到1000M速率。车载千兆以太网(1000BASE-T1)必须用RGMII。但要注意,RGMII的时序要求很严格,PCB走线必须等长,我见过太多因为走线不等长导致链路不通的案例。
注意:RGMII接口的TX和RX时钟是独立的,而且需要内部或外部加延迟(通常2ns左右),否则数据采样窗口会错位。我曾经在一个项目里忘了加这个延迟,结果1000M死活不通,降速到100M才能工作。查了两天才找到原因。
下面这张图,是我画的MAC-PHY接口架构关系:
3.3 SMI/MDIO管理总线
数据接口负责传数据,那配置和状态怎么管?靠的就是SMI(串行管理接口),也叫MDIO/MDC。
MDIO是数据线,MDC是时钟线。MAC通过这两根线读写PHY内部的寄存器。标准规定,MDC最高频率2.5MHz,但实际很多PHY支持到12.5MHz甚至更高。
MDIO的帧格式是这样的:
| 前导码(32位1) | 起始码(01) | 操作码(10读/01写) | PHY地址(5位) | 寄存器地址(5位) | 转向(2位) | 数据(16位) |
嗯,看着复杂,但实际驱动里都是封装好的。你只需要知道:读操作32个时钟,写操作32个时钟。
实战技巧:调试MDIO时,我习惯用示波器抓MDC和MDIO的波形。正常读操作,MDIO在MDC上升沿采样,32个时钟后数据就出来了。如果波形不对,先查上拉电阻——MDIO是开漏输出,必须外接上拉(通常1.5kΩ~4.7kΩ到3.3V)。
PHY寄存器地址空间是5位,所以最多支持32个PHY地址。车载ECU里,一个MAC通常只挂一个PHY,地址设成0x01或0x02就行。如果多个PHY共用一条MDIO总线,地址不能冲突。
常用的PHY寄存器:
| 寄存器地址 | 名称 | 功能 |
|---|---|---|
| 0x00 | BMCR(基本控制寄存器) | 复位、环回、速率设置、自动协商使能 |
| 0x01 | BMSR(基本状态寄存器) | 链路状态、自动协商完成、远端故障 |
| 0x02~0x04 | PHY标识符 | 芯片型号和版本号,用于驱动匹配 |
| 0x05 | ANAR(自动协商通告寄存器) | 通告本端支持的能力 |
| 0x06 | ANLPAR(链路伙伴能力寄存器) | 读取对端支持的能力 |
调试时,我建议先读0x01寄存器,看bit2(链路状态)是不是1。如果是0,说明物理层没通,查线缆、查供电、查共模电感。如果bit2是1但数据不通,再查自动协商结果。
避坑指南:我曾经在一个项目里,PHY的MDIO地址设成了0x00,结果和MAC的默认地址冲突,导致读写混乱。后来查手册才发现,有些PHY的默认地址是0x00,必须通过硬件引脚或EEPROM改掉。所以,上电后第一件事,确认PHY地址没冲突。
3.4 硬件架构实战要点
最后,我把硬件架构设计时容易踩的坑总结一下:
- 时钟源选择:RMII需要50MHz参考时钟,可以由MAC提供,也可以由外部晶振提供。我建议由MAC提供,省一颗晶振,也减少EMI源。
- 复位电路:PHY的复位引脚必须可靠,RC复位时间常数要够(通常>1ms)。上电后,等MAC初始化完成再释放PHY复位。
- 共模电感:100BASE-T1必须用共模电感(CMC),抑制共模干扰。选型时注意共模阻抗和差模带宽,别为了省钱用普通电感。
- ESD保护:MDI接口(连接器侧)必须加ESD/TVS管,车载环境静电放电很常见。我一般选双向TVS,结电容<5pF,不影响信号质量。
- PCB布局:PHY芯片尽量靠近连接器,MDI走线要短、要等长、要远离时钟和电源。差分对阻抗控制在100Ω±10%。