高速CAN通信异常。针对该问题做了调查。同时整理下以前CAN调试的一起问题,总结下的经验,与大家共享。如有错漏,请指出。 一.该项目高速CAN异常主要有两个原因:
1)三个节点都有终端电阻,根据ISO11898,高速CAN终端电阻需要根据总线拓扑结构来定,只需要2个终端电阻。
2)波特率异常,MCU时钟设置不精确,导致1M波特率有错误帧。
二.经验总结:
误区一:CAN网络只要通信正常就说明终端电阻匹配正常。
一般情况下,不要终端电阻或匹配异常,低速网路也可以正常通信,但高速CAN网络必须要终端电阻。低速CAN网络终端匹配电阻大于>500欧姆(常用560欧姆),高速CAN网络终端匹配电阻为120欧姆。影响低速CAN网络的主要因素是总线的负载电容,影响高速CAN网络的主要因素是终端电阻。且低速CAN网络和高速CAN网络的拓扑结构也有很大差异。如下图:
误区二:高速CAN网络中,每个节点都需要匹配电阻。
终端电阻是相对于CAN网络来讲,而不是节点。根据ISO11898,高速CAN终端电阻需要根据总线拓扑结构来定,网络的两端一定要有终端电阻。
误区三:使用kvaser做测量,CAN网络必须要3个以上的节点才能正常通信。
在我们原来使用时,发现过这种情况,必须挂上额外的节点,CAN网络才能正常通信,这是因为kvaser中做了光耦隔离,kvaser节点中并没有终端电阻。只要在网络中接入终端电阻,通信就可以正常。
误区四:挂上kvaser会导致高速CAN网络通信异常。
这个的主要原因是CAN网络中的波特率异常,导致kvaser发送错误帧。kvaser内部做了光耦隔离,对总线的干扰影响相对较小。
误区五:只要使用两根双绞线,CAN就可以正常通信。
CAN能否正常通信,主要看总线的拓扑结构,匹配电阻和负载电容。低速CAN错误连接可能会正常通信.ISO11898规定,高速CAN总线长度不能超过40m,高速CAN匹配电阻为120欧姆,同时要求节点CAN支线长度不能超过0.3m;
ISO11898规定,低速CAN总线长度不超过10km,支线不超过6m.
![](http://mm.263.com/wm2e/mail/mailOperate/mailOperateAction_mailInnerFileDownloadImg.do?mailCodeType=img&emailIdentity=0053c87c450f37d7@008b@50f9936c8c755097&folderId=10&usr=jiamingz@hwtc.com.cn&sid=MWo3aTNhMW0waTFuNGc2ejlA&innercid=image002.jpg@01CFA26B.E39CFAF0)
注:kvaser是可连接PC的CAN调试器。
|