打印
[CAN-bus/DeviceNet]

请教一个can通讯的问题

[复制链接]
1741|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinalpha|  楼主 | 2007-9-4 11:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位老大,小弟碰到一个can的问题:
两个节点通过CAN总线互连,用的都是sj1000的BasicCAN。程序里接收函数放在500us中断里,发送函数放在3.3ms中断里。两个can控制器的配置看不出有啥问题。单收或单发都可以,就是不能全双工互连,有时候连上察看两个CAN的接收,开始还能正常接收,过段时间就死了。分析不出来,那位老大比较清楚的,指导小弟一下。谢了!

相关帖子

沙发
桂电飞天鼠| | 2007-9-4 16:17 | 只看该作者

用的是定时中断接收?

为何不用本身的中断方式接收呢?

使用特权

评论回复
板凳
sinalpha|  楼主 | 2007-9-4 16:49 | 只看该作者

为啥会死掉

因为以前用DSP 56807+sja1000做的时候用的定时中断,可以全双工通讯。现在换成at91的arm了,在vxworks上做的。不过以前的定时中断是20ms,现在是3.3ms。
好像can总线上数据冲突时会丢包,为啥会死掉呢?

使用特权

评论回复
地板
sinalpha|  楼主 | 2007-9-4 16:56 | 只看该作者

怎么实现互联

因为现在一个系统用的是arm+2个sja1000。一个系统2个can自己互连的时候,如果在2个can的发送子函数里面,当写完发送缓冲后加上一个延迟,2个can能成功互连。
但如果是两个系统,每个系统只用1个can来全双工互连,这个时候该怎么实现?

使用特权

评论回复
5
wxj1952| | 2007-9-4 21:55 | 只看该作者

很简单

打开所有中断,当任何中断发生时,记录IR值、TXERR值、和RXERR值,然后令程序停止退出,以观察变量。原因便知。

接上仿真器,看看程序死在哪里。

使用特权

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

本版积分规则

6

主题

10

帖子

0

粉丝