打印
[CAN-bus/DeviceNet]

关于CAN总线接收的问题,请高手帮忙

[复制链接]
2705|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qiutie|  楼主 | 2007-1-29 16:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用AT89C51、SJA1000、TJA1040搭建的CAN总线控制电路中采用MAX708同时给单片机和和SJA100复位。遇到如下问题:
1.发送正常,但接收不正常(其中接收的每个字节中只是低四位正确,而高四位不正确,例如发送:0XAA 0XBB 0XCC 0XDD 0XEE,0XFF,0X11,0X22,收到的数据为0X6A 0X6B 0X4C 0X6D 0X6E,0X4F,0X01,0X02)
2.另外还有个问题:我上面的实验是在仿真器下调试运行的,我将程序代码下载到AT89C51RD2中,在单片机却不能正常运行,我测了单片机的晶振和SAJ1000晶振都是正常的。复位信号也正常,在单片机中不对SAJ1000操作的程序代码是正常的,就是对SJA1000操作的代码是不好用的。
请高手帮忙给看一下,先谢了!

相关帖子

沙发
wxj1952| | 2007-1-30 11:41 | 只看该作者

很简单

1、读一下SJA1000内部发送缓存,即地址64H~76H的内容。或者仿真器XDATA地址0064H~0076H的内容即清楚了。然后是接收方相应内部RXB......。

2、加入开机延时0.5秒。

使用特权

评论回复
板凳
qiutie|  楼主 | 2007-1-31 19:26 | 只看该作者

现在的问题是发送正常,而接收不正常,并且不稳定!

现在的问题是发送正常,而接收不正常,并且不稳定!就是第一个问题还没有得到解决,接收每一帧都有误码,例如:从端发送的数据为:0x11 0x22 0x33 0x44 0xaa 0xbb 0xcc 0xdd ,则单片机端接收的数据为:0x11 0x22 0x83 0x44 0xaa 0x6b 0xcc 0xcd 
调了好几天了,这个问题还是没有得到解决

使用特权

评论回复
地板
zysunol| | 2007-1-31 20:15 | 只看该作者

查查波特率设置

双方波特率设置一样吗?

使用特权

评论回复
5
qiutie|  楼主 | 2007-1-31 21:15 | 只看该作者

波特率设置应没有问题的

波特率设置应没有问题的,因为发送的数据是正确的,就是接收的数据不完全正确

使用特权

评论回复
6
wxj1952| | 2007-2-1 20:25 | 只看该作者

应该发试验数据

1、发55,aa,00,ff,这些特殊数据,另外,如果发送33得到83,那就发送83,看看得到几?总不会得到33吧,如此来分析找到原因。
2、换块板子,有没有不同的结果。

使用特权

评论回复
7
qiutie|  楼主 | 2007-2-2 17:54 | 只看该作者

又焊了一块板子

又焊了一块板子,还是老样子,在basicCAN下还是老样子,我的接收端只支持BasicCAN,所以没有办法在peliCAN下测试,估主没有办法了,是不是我在画PCB的时侯引起信号干扰r线没有处理好

使用特权

评论回复
8
wxj1952| | 2007-2-2 21:08 | 只看该作者

倒提醒了我一个好主意

要知道,Peli和Basic节点是可以互相通信的。例如你接收端只支持BasicCAN,那么你可以在发送端用PeliCAN标准帧发送。(或者在接收端用Peli标准帧进行接收,无论发送方是Basic/Peli帧都可以的)要知道两者是兼容的!注意到两者的接收缓存格式是一样的。它们在内部会自动转换为一致。到了总线上,帧格式都一样了。

这样做的意义在于,你在发送/接收端用Basic和Peli两种程序进行实验,很少可能犯同样的错误。由此肯定软件的正确性。

3、总线上是否接了120欧姆电阻?

使用特权

评论回复
9
qiutie|  楼主 | 2007-2-4 08:37 | 只看该作者

我又焊了第三块板,新的问题又出现了...

我又焊了第三块板,新的问题又出现了.
我先介绍一下我的电路结构:AT89S52扩展了32K的RAM(P0口接一个573),P0口10K上拉接SJA1000,所有的片选信号接74hc138。

经过多次实验发现:当RAM测试正常的情况下,CAN总信的通信就会出现上述问题。当RAM测试不正常时,也就是RAM不好用的情况下,CAN上的通信完全正常。现在我怀疑电路设计上是否正确,CAN是否要重新放一个573进行锁存,若放573,573电路接法是否与RAM的接法相同。

使用特权

评论回复
10
wxj1952| | 2007-2-4 19:55 | 只看该作者

硬件设计问题!

论坛上争论过的问题。SJA1000已经把373锁存器集成到芯片内了,要再加一个573也没什么不可以。

很想看看设计电路图。

使用特权

评论回复
11
qiutie|  楼主 | 2007-2-5 19:49 | 只看该作者

电路已经上传

电路已经上传

使用特权

评论回复
12
wxj1952| | 2007-2-8 18:43 | 只看该作者

没看到电路.

使用特权

评论回复
13
qiutie|  楼主 | 2007-2-10 10:52 | 只看该作者

上面的问题搞定,现在又出了新问题

上面的问题我查到了原因,是由RAM和SJA1000地址冲突引起的;
现在出了一个小问题,CAN总线在10K,20K,80K下我进行了两块板通信测试,数据正常,但是我在做5K的通信实验时就不好用了,其中5K时BTR0=0X7F,BTR1=0XFF,请大家帮忙看一下。

使用特权

评论回复
14
yizaisong| | 2007-3-1 14:02 | 只看该作者

to qiutie

to qiutie 
我是刚刚接手一个CAN总线的小项目,能否借你原理图一览,
谢谢
信箱YZS1980@SOHU.COM

使用特权

评论回复
15
kekechong| | 2007-3-2 10:03 | 只看该作者

SJA1000接收问题

我的问题更严重,就是不能接收,接收端一点反应也没有,总线上有信号,该从哪里里下手呢???真急呀!

使用特权

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

本版积分规则

3

主题

16

帖子

0

粉丝