001、CAN总线基础与单片机CAN模块概述:从物理层到协议层一、一次让我熬夜到凌晨三点的CAN调试去年做某国产车规级ECU项目,CAN通信死活起不来。示波器抓波形,差分信号幅值正常,CANH对地2.5V,CANL对地2.5V,逻辑分析仪却显示总线一直处于“显性”状态。折腾了四个小时,最后发现是CAN收发器的STB引脚被默认拉高了——芯片进入了待机模式。这种低级错误,说出来丢人,但确实暴露了一个问题:很多人对CAN模块的理解停留在“调库调参”层面,物理层和协议层之间的断层才是真正的坑。今天这篇笔记,就从物理层开始,把CAN总线的骨架搭起来,再深入到单片机CAN外设的硬件架构。不搞教科书式的逐条罗列,只讲调试时真正需要记住的东西。二、物理层:差分信号不是玄学,是数学CAN总线的物理层用两条线——CANH和CANL,传输差分信号。逻辑“显性”(Dominant)对应差分电压约2V(CANH≈3.5V,CANL≈1.5V),逻辑“隐性”(Recessive)对应差分电压约0V(两条线都约2.5V)。这里有个关键点:显性电平会覆盖隐性电平,这是CAN总线仲裁机制的物理基础。实际调试中,用万用表测CANH和CANL对地电压是最快的诊断手段。正常静默状态,两条线都应该是2.5V左右。如果CANH被拉到3.5V以上且CANL被拉到1.5V以下,说明总线上有节点在持续发送显性位——大概率是某个节点的CAN控制器出了故障,或者波特率不匹配导致总线错误累积,进入了“总线关闭”状态。终端电阻是另一个容易翻车的