参考:https://zhuanlan.zhihu.com/p/689336144
有时候看到CAN总线H和L的差值波形的最后一位电平会变高很多,这是什么原因呢?
实际上这是正常的现象,最后一位是ACK位。问题描述为:CAN总线ACK电平偏高。
下面分析下原因:
如上是CAN收发器的典型内部结构图
总线显性时(逻辑为0),收发器内部Q1、Q2导通,CANH、CANL之间产生压差;隐性时(逻辑为1),Q1、Q2截止,CANH、CANL处于无源状态,压差为0。
按照标准,在总线输出为显性时,CANH=3.5V,CANL=1.5V,差分分电平:CANH-CANL=2V,总线网络电阻为60欧,流经终端电阻的电流约为33mA(2V/60欧);
然而,CAN收发器在输出显性时,CANH电平并不是标准的3.5V,而是5V(VCC)通过一个二极管降压得到的,二极管的压降由负载电流决定。
上图所示的VDH为CANH对应的二极管压降,VDL为CANL对于的二极管压降,流过的电流越大,二极管的压降就越大。可知:
CANH的电压=5V-VDH
CANL的电压=0V+VDL
在CAN总线网络中,当一帧报文被各个节点接收时,在ACK阶段,多个CAN节点同时响应(都发显性),流过终端电阻的电流被各个CAN节点均分,那么平均到每个节点的电流就减小了,如下图所示,VDH、VDL的压降也减小,相应CANH-CANL的差分电压就增大了,即ACK应答电平会出现偏高的现象。
这是一种正常现象,并不是总线出现了什么问题。