打印
[CAN-bus/DeviceNet]

CAN SJA1000 最让工程师费解的问题??

[复制链接]
4432|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
335821223|  楼主 | 2011-5-18 22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人在用SJA1000做工业网络时遇到了一个问题,几个月来还是想不明白。

我用ARM做了一个以太网转CAN的集线器,ARM下面接了1个MAC和6个SJA1000。
在通信过程中,我的SJA允许两2-3天后,工作不正常了!!症状如下:

1.该SJA1000收一个数据包后把该包转发给服务器,服务器发回握手包,通过这个SJA1000发送给目标节点;这个过程花了1-2秒钟。

2.如果通过其他5个SJA1000进行通信,速度正常,大约10ms左右整个通信完成

3.我读取了这个不正常的SJA1000的接收、发送错误计数器,都为0,说明仍然处于主动错误状态。

4.我通过软件复位这个SJA1000,问题依旧。

5.我通过硬件复位这个SJA1000,问题依旧。

6.我重新启动这个设备,一切正常。

总结:
1.两三天下来,该CAN的通信数据包估计有200万左右,一般情况下,测了好几次,通信久了都出现这个问题。

2.读取发送和接收错误寄存器,都是0,说明该SJA1000仍然处于主动错误状态。

3.硬件复位、软件复位,该SJA1000故障仍然,只能重新上电才正常。

4.会不会是SJA1000本身质量问题?朋友们有没有遇到类似问题呢,我百思不得其解。
   如果说是软件问题(内存泄露),但也觉得不可能,其他5个都可以正常工作。

5.补充,各个SJA1000都会出现这个问题

相关帖子

沙发
lnskngdc| | 2011-5-19 00:22 | 只看该作者
会不会是地址有冲突?

使用特权

评论回复
板凳
335821223|  楼主 | 2011-5-19 22:23 | 只看该作者
不会有地址冲突,在软件上面已经有这一步的处理的了,如果冲突的话,无论是同一条线或者不同SJA1000下面的节点之间,都会有检测处理的。
谢谢你的回答,还要其他可能吗?

使用特权

评论回复
地板
lnskngdc| | 2011-5-20 07:27 | 只看该作者
那只能从你分配arm工作任务角度考虑了,我做过很多类型定制网桥,导致延迟的原因一般是因为程序里有执行其它不必要的东西,比如延时函数,计算地址,环形FIFO指针出错等等

使用特权

评论回复
5
335821223|  楼主 | 2011-5-20 19:06 | 只看该作者
4# lnskngdc

使用特权

评论回复
6
335821223|  楼主 | 2011-5-20 19:11 | 只看该作者
4# lnskngdc

今天继续做了实验,发现节点经过SJA发到服务器的数据速度正常,而服务器通过CAN集线器的SJA发往节点的数据要等大概1s钟才被收到。

特殊的是,如果在SJA出数据时,此刻其他节点向SJA发送数据到服务器,能够加速SJA发出数据包的速度。

所以你说的软件问题应该不太可能,问题就出在SJA1000发送时间比较长;这样看来有可能是下面节点工作不太正常,但即使重启了下面的所以节点,故障依旧。。

使用特权

评论回复
7
6091820503| | 2011-5-20 22:55 | 只看该作者
我也在搞CAN.先标记下

使用特权

评论回复
8
335821223|  楼主 | 2011-6-9 21:50 | 只看该作者
那只能从你分配arm工作任务角度考虑了,我做过很多类型定制网桥,导致延迟的原因一般是因为程序里有执行其它不必要的东西,比如延时函数,计算地址,环形FIFO指针出错等等 ...
lnskngdc 发表于 2011-5-20 07:27


确实是如四楼的大侠所说,是缓冲FIFO指针错乱导致的,至于为什么会错乱,暂时还不清楚,不过通过其他方法,问题解决了。

使用特权

评论回复
9
6091820503| | 2011-6-9 23:12 | 只看该作者
加油吧

使用特权

评论回复
10
6091820503| | 2011-6-9 23:38 | 只看该作者
哈哈,加油啊

使用特权

评论回复
11
niuzhenbo| | 2012-12-12 08:07 | 只看该作者
我现在也在做can通信开发项目,遇到和楼主所说的问题一样,请问一下楼主最后是怎么样解决的。

使用特权

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

本版积分规则

0

主题

17

帖子

1

粉丝