101、CAN总线基础回顾:物理层、数据链路层与经典帧结构
CAN总线基础回顾:物理层、数据链路层与经典帧结构从一次深夜调试说起凌晨两点,示波器屏幕上跳动的波形让我头皮发麻。一条1200米的CAN总线,挂载了32个节点,波特率500kbps,理论上应该能跑。但实际表现是:每隔十几秒就丢一帧,偶尔还蹦出个总线关闭错误。客户那边生产线已经停了两小时,电话一个接一个打过来。我盯着逻辑分析仪抓到的波形,发现显性电平的下降沿斜率明显变缓,隐性电平的回摆幅度也不对劲。这不是协议问题,是物理层在长距离下撑不住了。那次之后,我花了整整一周重新梳理CAN总线的物理层特性,才发现很多“理所当然”的设计,在极限工况下全是坑。今天这篇,就从最基础的物理层和数据链路层说起。别嫌啰嗦,这些基础决定了你能把总线拉到多远、挂多少节点、跑多快。后面几篇会逐步深入长距离通信的具体方案和极限测试方法。物理层:差分信号不是万能的CAN总线的物理层核心是差分信号传输。CAN_H和CAN_L两根线,显性时CAN_H比CAN_L高1.5V到2.5V,隐性时两者电压差接近0V。这个设计初衷是为了抗共模干扰,但很多人忽略了差分信号在长距离下的衰减特性。终端电阻的选型是个大坑。教科书上说120Ω,那是针对标准双绞线特性阻抗。实际工程中,线缆的阻抗可能从100Ω到150Ω不等。我见过有人用100Ω电阻,结果信号反射严重,波形上出现明显的振铃。更离谱的是有人直接不接终端电阻,说“短距离测试没问题”——等线缆拉到200米以上,总线直接瘫痪。正确的做法是:用示波器实