2、物理层基础:信号与介质、编码方式、物理层标准
各位同学,咱们今天聊聊物理层。说白了,就是设备之间到底怎么“说话”的——是用电、用光,还是用空气?信号长什么样?怎么保证对方能听懂?
我刚开始做嵌入式那会儿,总觉得物理层是硬件工程师的事,软件写好协议栈就行了。结果第一次调RS485总线,设备死活不通,拿示波器一看,波形乱成一团。嗯,从那以后我再也不敢跳过物理层了。
2.1 信号与传输介质
信号分两种:模拟信号和数字信号。模拟信号连续变化,像老式电话线里的语音;数字信号只有高低电平,也就是0和1。咱们设备入网协议里,绝大多数场景用的是数字信号。
传输介质呢,我习惯分成三类:
- 双绞线:便宜、抗干扰还行。RS485、以太网都用它。我见过不少现场布线把双绞线跟强电走同一个线槽,结果通信丢包率飙升——记住,双绞线也要远离干扰源。
- 同轴电缆:抗干扰强,带宽高。早年以太网用粗缆细缆,现在主要用在视频监控和射频领域。
- 光纤:速度极快,距离极远,还不怕电磁干扰。缺点是施工门槛高,接头得用专用工具熔接。
2.2 编码方式:从NRZ到曼彻斯特
信号在介质上传输,不能直接丢一串高低电平就完事。你得考虑时钟同步、直流平衡、抗干扰。这就引出了编码方式。
2.2.1 NRZ(不归零编码)
NRZ最简单:高电平表示1,低电平表示0。每个比特占用一个固定时间窗口。
数据: 1 0 1 1 0 0 1
NRZ: ─── ─── ─── ─── ─── ─── ───
高 低 高 高 低 低 高
有什么问题?你想想看,如果连续发一串1,电平一直保持高,接收端怎么知道发了几个1?它得靠时钟来数。但收发双方的时钟不可能完全一致,时间长了就会累积误差,导致采样错位。
2.2.2 曼彻斯特编码
曼彻斯特编码在每个比特中间都有一次电平跳变。这个跳变既表示数据,又携带时钟信息。
- 从高到低跳变:表示1
- 从低到高跳变:表示0
数据: 1 0 1 1 0 0 1
曼彻斯特: ─┐ ┌─┐ ┌─┐ ─┐ ┌─┐ ─┐ ─┐ ┌─┐ ─┐
高 低 高 低 高 低 高 低 高 低 高 低 高
你看,每个比特中间都有跳变,接收端可以用这个跳变来同步时钟。而且电平在每两个比特之间都会回到中间值,直流分量也平衡了。
以太网10BASE-T用的就是曼彻斯特编码。我调试过一块老式网卡,用示波器看TX+和TX-之间的差分信号,曼彻斯特的跳变非常清晰,一眼就能看出数据流。
| 特性 | NRZ | 曼彻斯特 |
|---|---|---|
| 时钟同步 | 依赖外部时钟 | 自带时钟 |
| 直流平衡 | 差(长串1或0) | 好 |
| 带宽效率 | 高(1比特/周期) | 低(0.5比特/周期) |
| 抗干扰 | 一般 | 较好 |
| 典型应用 | UART、RS232 | 以太网10BASE-T |
2.3 物理层标准:RS232、RS485、以太网PHY
标准就是大家约定好的“方言”。同一个编码方式,配上不同的电气特性和接口,就成了不同的物理层标准。
2.3.1 RS232
RS232是老牌标准,PC串口就是它。单端信号,用-3V~-15V表示1,+3V~+15V表示0。传输距离一般15米以内,速率最高也就115200bps。
我最早接触设备入网,就是用RS232连PLC。一根三芯线(TX、RX、GND)就能通信,简单粗暴。但缺点也很明显:抗干扰差,不能多点组网。
2.3.2 RS485
RS485用差分信号传输,两根线(A和B)的电压差来决定逻辑状态。抗干扰能力强,传输距离可达1200米,还能挂32个节点(标准负载)。
工业现场总线、楼宇自控、智能仪表,到处都有RS485的身影。我做过一个项目,用RS485挂了20多个温湿度传感器,9600bps跑了一年多,没出过问题。
RS485总线拓扑(典型):
主机 ──┬── 节点1 ──┬── 节点2 ──┬── 节点3
│ │ │
120Ω终端 120Ω终端 120Ω终端
2.3.3 以太网PHY
以太网PHY是物理层收发器,负责把MAC层的数字信号编码成适合网线传输的模拟信号。常见的PHY芯片有RTL8211、KSZ8081等。
以太网PHY支持多种速率:10Mbps、100Mbps、1000Mbps。编码方式也升级了:100BASE-TX用4B/5B编码,1000BASE-T用PAM-5。
我调试过一块板子,PHY芯片的MDIO接口死活读不到寄存器。查了半天,原来是复位引脚没拉够时间——PHY芯片需要至少100ms的复位低电平。嗯,这种细节,数据手册里写得清清楚楚,但就是容易忽略。
| 标准 | 信号类型 | 最大距离 | 最大速率 | 节点数 | 典型场景 |
|---|---|---|---|---|---|
| RS232 | 单端 | 15米 | 115.2kbps | 2 | 调试口、短距串口 |
| RS485 | 差分 | 1200米 | 10Mbps | 32(标准) | 工业总线、楼宇自控 |
| 以太网PHY | 差分 | 100米 | 1000Mbps | 不限(交换机组网) | 局域网、互联网接入 |
2.4 本章知识体系
下面这张图,把物理层的基础脉络串起来了。你对照着看,心里就有谱了。
物理层是整个设备入网协议的基石。信号怎么传、用什么介质、怎么编码、走什么标准,每一步都影响最终通信的可靠性和效率。我建议你动手搭一个简单的RS485网络,用示波器看看波形,比看十遍书都管用。