24年上半年做的一款产品使用微芯-Microchip的dsPIC33EP512GP806做主控MCU,使用CAN通信和多个外部模块通信,CAN芯片选用的也是微芯的MCP2557,按理说,CAN芯片只有TX,RX,CANH和CANL四根通信线,按照参考设计完成硬件设计后。供电正常后,就基本没啥问题,
软件写完程序后,通信也正常。我和软件的同事都觉得没啥问题。
但测试部门的同时通过示波器测试CAN波形,发现有一段CAN波形电位异常高,不符合CAN芯片的规格书要求。
我和测试部门的同事说,首先按照CANH和CANL显性电平和隐性电平的定义,实际测量的波形,都是符合要求的,显性电平在1.5V-3V以内的,隐性电平在-0.5V-0.05V以内的
但测试部门的同事说,为什么就有那么一截电平搞出来的。肯定是不正常的,你们研发需要给出一个明确的根因分析,要不然测试是不能通过的,即使通信正常也不行。
我和软件的同事交流后,了解到这高出一截的电平,发生在“ACK”的应答时刻。
在CAN总线网络中,当一帧保温被各个节点都收到的时候,即ACK阶段,多处CAN节点同事响应,就是都发消失,即下图的内部二极管都会导通。流过终端电阻120欧姆的电流被各个CAN极点均分,也就是平局到各个节点的电流都减小了。
下图的VDH,VDL的压降也减小了,电源电压一定的时候,响应的CANH-CANL的差分电压就增大了。所以在ACK应答时刻电平就偏高的。
经过这番讨论,测试部门的同事认可了。项目可以继续向前推进。我也对CAN通信的机制增加了认识。
|