1. 车载PHY链路概述
车载网络里,PHY(物理层)是个容易被忽略的角色。很多人一上来就盯着协议栈、应用层看,但说实话——链路都握不上手,上面跑什么都是白搭。我个人习惯,排查任何通信故障,先看PHY。这一章咱们聊聊PHY在车载架构里到底干什么,以及几种主流协议的物理层特性。
1.1 PHY在车载网络架构中的角色
PHY就是“物理层收发器”。它的任务很纯粹:把数字信号变成能在线束上传输的模拟信号,反过来也一样。你可以把它理解成网络接口的“嘴巴和耳朵”。
- 信号转换:MAC层给的是数字比特流,PHY负责编码、调制、驱动差分对或单端线。
- 链路状态监测:PHY芯片内部有Link Detect逻辑,能判断对端是否在线、链路是否稳定。
- 协商握手:比如以太网的Auto-Negotiation,CAN的位时序同步,FlexRay的冷启动过程——都在PHY层面完成。
我遇到过一台样车,以太网死活连不上,查了三天发现是PHY的参考时钟频率配错了。嗯,PHY对时钟非常敏感,后面我们会专门讲。
核心记住:PHY是物理介质和MAC之间的桥梁。任何链路协商失败,第一步都得确认PHY是否工作正常。
1.2 常见车载协议的物理层特点
车载网络不是单一协议吃天下。不同场景用不同物理层,各有各的脾气。我列了三种最常见的:Ethernet、CAN、FlexRay,咱们一个个说。
| 协议 | 物理介质 | 拓扑结构 | 速率 | 典型应用 |
|---|---|---|---|---|
| Ethernet(100BASE-T1 / 1000BASE-T1) | 单对非屏蔽双绞线 | 点对点 | 100 Mbps / 1 Gbps | ADAS摄像头、网关、OTA |
| CAN(CAN 2.0 / CAN FD) | 双绞差分线 | 总线型 | 最高1 Mbps / 8 Mbps | 动力总成、车身控制 |
| FlexRay | 双通道差分线 | 星型或总线型 | 10 Mbps | 线控转向、底盘 |
一个小经验:CAN和FlexRay都是差分信号,抗干扰强,但FlexRay对线束的对称度要求更高。我曾经因为一根线缆的绞距不对,导致FlexRay节点时而同步失败,折腾了一周。
1.2.1 车载以太网物理层(100BASE-T1为例)
车载以太网和办公室以太网不一样。它只用了单对线,带宽受限,但省了成本和重量。物理层关键点:
- 编码方式:PAM3(3级脉冲幅度调制),不是传统的曼彻斯特。
- 自动协商(Auto-Negotiation):PHY之间交换能力信息,包括速率、双工模式、主从时钟。
- Link Up时序:上电后PHY需要先完成时钟同步,然后发送训练序列。如果这个阶段失败,MAC层永远看不到Link Up。
你想想看,如果两边的PHY主从配置冲突,自动协商就会一直翻转,链路永远起不来。这个坑我踩过不止一次。
1.2.2 CAN物理层
CAN的物理层相对简单,但细节不少:
- 差分电压:显性位(CAN_H比CAN_L高约2V),隐性位(两端电压相等)。
- 位时序:每个位被分成同步段、传播段、相位缓冲段1和2。如果总线长度或波特率设置不对,会导致采样点偏移。
- 总线终端电阻:标准CAN要求两端各120Ω,但容错CAN或低速CAN要求不同。我见过有人把终端电阻焊错位置,结果总线信号反射严重,丢帧率飙升。
注意:CAN链路协商失败不叫“协商”,而是“同步失败”或“总线关闭”。PHY层面的错误包括位错误、填充错误、CRC错误——跟以太网完全不同的诊断思路。
1.2.3 FlexRay物理层
FlexRay比CAN复杂得多,专门为确定性通信设计。物理层特点:
- 双通道冗余:通道A和B各自独立,可同时传输。
- 冷启动过程:启动时第一个节点发送冷启动帧,其他节点被动同步。这个过程中PHY需要正确识别起始帧的边沿。
- 总线监控器(Bus Guardian):部分FlexRay PHY内部有Bus Guardian,防止故障节点污染总线。如果Bus Guardian配置不对,节点可能被错误地静音。
说句实话,FlexRay的PHY调试比以太网还难,因为通道间延迟要求极高。我以前调一个线控转向项目,两个通道的偏斜超过5ns,直接导致同步失败。
1.3 本章知识结构图
下面这张图把PHY在车载网络中的位置、三大协议的物理层关键要素串起来了。你可以把它当成本章的地图。
看这张图:从中心“车载PHY链路”出发,三条分支对应三种协议。每个协议下面又列出了最关键的两个物理层诊断点。后面几章我们会逐个深入。
1.4 为什么本章很重要?
说白了,PHY链路协商失败是车载网络故障里最隐蔽的一类。很多人怀疑软件、怀疑配置,最后发现只是电阻焊错了、时钟偏了、线缆不达标。我自己的经验是:先看物理层,再谈协议层。
你想想看,如果PHY没握手成功,MAC层收到的一直是乱码或者没有载波,上层应用根本不知道发生了什么。所以从第一章开始,我们就要建立清晰的物理层概念——后面30章节,全是这个底子。