各位工程师: 1、我第一个问题是想请教:CAN总线的终端匹配电阻是如何计算的?我们都知道需要在总线两端加上120欧的终端电阻,但这个电阻的阻值是根据什么计算出来的,我在网上搜索了很久,也没有确定的答案。希望您能告诉我它的原理,或告诉我什么书或资料能找到上有就很感谢了啊! 还有通过背板的形式走CAN总线,PCB布线上面有什么讲究? 2、我的第二个问题就是讲述昨天我们在调试电路时遇到的奇怪现象,希望您能给我建议。 我们的现象:CAN总线让ARM程序跑死了。 我们设计了多个CPU模块,它们是通过CAN通信。这些模块电路板通过接插件连接到背板(Backplanes)上,背板上有CAN总线和5V的电源线。这些CPU模块中的主模块是AT91RM9200,CAN通信是MCP2510+TJA1050。而从模块是Infieon的XC164CS, CAN通信是TJA1050(cpu自己有can控制器)。供电系统是外部电源+24V通过DC-DC电源模块转换为5V,给各个模块供电。我们的实验是在背板上插上一个主模块,一个从模块,让他们通过CAN通信。 奇怪的现象是:给系统上电后必须再按下主模块的复位键才能建立起CAN通信。更奇怪的是如果去掉24V变5V的电源模块,直接让外部提供5V电源供给,每次上电不用复位都能成功建立CAN通信。这让我们开始把主要精力放在查电源模块问题上了。但随后进一步发现也许真正出问题并非一定是电源供给模块。应为我们通过程序验证,不能建立CAN通信是因为ARM(AT91RM9200),程序跑飞了,相当于死机了。而且是我们把从模块去掉,主模块虽然收不到数据但也不会跑死。 在这期间我们遇见了许多有趣的现象,比如我把示波器挂在主模块的CANH和CANL上,不会跑死,也收不到从模块来的数据。 并且我通过调整安放终端电阻的位置,还是没有任何效果。 后来我们通过在ARM里面加看门狗实现了上电CAN通信。但真正电路上的问题还是悬而未决啊!!! 我希望各位大侠,高工,给于我指点。更希望所有看了的人都能讨论。 |