打印
[CAN-bus/DeviceNet]

是CAN总线让ARM跑死了吗?

[复制链接]
3493|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
陈定一|  楼主 | 2007-8-16 09:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师:
   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通信。但真正电路上的问题还是悬而未决啊!!!
       我希望各位大侠,高工,给于我指点。更希望所有看了的人都能讨论。
      
       

相关帖子

沙发
wxj1952| | 2007-8-16 12:21 | 只看该作者

书上都有。

所有问题前人都遇到过,并且有理论分析和解决方案。

问题1、参考《微型计算机数据传输基础与实践》【日】宫琦诚一著  邮电出版社
 
问题2、北航出版的《单片机的抗干扰设计》。名字不十分确切。需要的话,我去查一下。你说的现象都讲了。其实不过是开机延时就解决了。24V电源上电比5V电源慢,所以CPU要延时等待其稳定后才能工作。还有其他好多,自己看吧。 

使用特权

评论回复
板凳
陈定一|  楼主 | 2007-8-16 14:39 | 只看该作者

感谢上面师兄

《单片机的抗干扰设计》,我这本书看过。但还了。可惜我没有看到具体这种情况。希望师兄继续指点。

使用特权

评论回复
地板
wxj1952| | 2007-8-16 21:21 | 只看该作者

看来我是在其他书上看到的。

其实看门狗(外部)的作用之一,就是把上电时的不稳定缓升阶段变成陡峭的上升沿。而5V开关电源上升沿很陡了,所以两者都行。开机延时就是为了躲过这段不稳定上升阶段。三者的目标都是解决同一个问题。CPU技术手册上明确要求了上电复位时的电源上升沿时间,很少有人注意过。你可以先加一段一秒钟延时试试。看看效果。问题证实之后,再把不稳定因素去掉,几方面同时保障系统工作可靠。

我再看看是哪本书,反正讲得挺清楚的。

使用特权

评论回复
5
ourdoctor| | 2007-8-19 21:51 | 只看该作者

re

问题和回答都一样精彩!

使用特权

评论回复
6
ji_dan| | 2012-9-22 20:18 | 只看该作者
确实是高手提出来的问题啊~!!学习了~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

82

帖子

0

粉丝