据我们所知,CAN一致性测试中,有一项测试叫“CANL对地短路测试”,但是我们测试的时候发现被测设备有时候在对地短路时也能正常通讯,究竟怎么回事呢?
我们都知道CAN总线采用差分传输,这样可以极大的避免信号的反射和干扰,从而抑制共模干扰,也是CAN容错性能好的原因之一,CAN的波特率最大可以到1Mbps。根据波特率的大小我们把CAN总线分为单线CAN、低速CAN、高速CAN。
表1 CAN 总线类型
CAN 的通讯质量也跟其传输距离有关,如图1,做CAN的工程师都知道CAN总线上任意两个节点的最大传输距离与其波特率有关,CAN 的波特率越大,传输距离就越短,因为传输线缆本身可以看成一个阻容结构的器件,线缆越长,寄生电容跟电阻就越大。
图1 CAN波特率跟传输距离的关系
既然线缆都会有寄生电容,那寄生电容对CAN总线的影响是怎么样的呢?我们用CANScope模拟给总线上加不同的电容,通过眼图来看看会发生什么,如图2,可以看到随着电容的增大,显性位跟隐性位的下降沿变得越来越缓。
图2 线缆不同电容对波形的影响
当总线上CANL对地短路后,那么CAN传输就只有CANH这条线维持了,这种情况下CAN总线就类似于单线CAN,差分传输的优势就荡然无存,那么我们就看看在高速CAN下,CANL短路会出现什么情况。
我们选择波特率500kbps的通信速率,用ZLG的CANScope发送CAN报文,CAN卡接收报文。
先调整Stressz的设置,模拟总线长度为10m,终端电阻为120欧姆,Stressz的设置如图3所示。
图3 模拟线缆长度为10m
打开CANScope报文接收,可以正常接收报文,将CANL线短接到GND后,从示波器上看CANL电压为0V,但是报文正常接收,如图4:从示波器上差分电压还能够进行清晰的辨识。
图4 CANL短路通讯正常
但是实际应用现场,CAN总线的传输距离比较长,当我们模拟总线长度为120m时,我们再看看通讯质量,先把Stressz设置为线缆长度为120m。如图5所示。
图5 模拟120m线缆长度
打开CANScope报文接收,如图6所示,未短路时可以正常接收报文,将CANL线短接到GND后,从示波器上看CANL电压为0V,报文出现大量的错误。
图6 CANL短路出现错误
为什么在线缆长度变长后CANL对地短路后会出现错误呢? 问题就在于线缆长度变长后带来的寄生电容变大使总线电平的下降沿变得很缓,本来就脆弱的差分传输信号,在CANL挂掉后,CANH单线传输无法承担传输的重任,所以就出现了报文错误。如图7:我们对总线做边沿统计,可以看到下降沿最大达到638ns。根据GMW3122的标准,高速CAN 的边沿区间为30~350ns。
所以在高速CAN的CANL对地短路后,由于差分传输优势没有了,在大的下降沿影响下,导致接收节点无法正常接收报文。而CANL没有短路时,CAN总线依然可以利用差分传输的优势,让节点正常收到正确的报文。
图7 边沿统计