打印
[CAN-bus/DeviceNet]

请问:怎样用82C250实现CAN总线中继

[复制链接]
2093|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lht2006|  楼主 | 2007-8-27 12:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在做一个实验,想把CAN接口变成TTL电平,然后再变成CAN接口电平,从而使两个口正常通讯。

两端都是CAN总线。即CANH1,CANL1;CANH2,CANL2;
怎么用2个82C250(或者再加一个CPLD或FPGA,即加一部分数字电路)把它们连接起来,以实现正常通讯。

我最初想的是:一个80C250把CANH1,CANL1变成TXD1,RXD1;
              另一个80C250把CANH2,CANL2变成TXD2,RXD2;
              然后把  RXD1-TXD2,  RXD2-TXD1。

实际结果是行不通。

但是我见到有人可以利用一个CPLD来处理TXD1,TXD2,RXD1,RXD2之间的关系来实现中继。

我想问:从简单硬件上来说,RXD1-TXD2,RXD2-TXD1没有错误。
        但为什么会错?是因为CAN协议和CAN工作原理导致的?

另外,大家有什么想法?能不能说说?

相关帖子

沙发
jdwang| | 2007-8-28 16:51 | 只看该作者

用82C250取代MAX485

用82C250取代MAX485可以克服485总线故有的缺点。由于没有用CAN控制器,通信协议要自己制定。我过去曾经做过试验,是可行的。杂志上也有介绍。这是利用了CAN总线的物理特性。介绍你一篇**:“CAN总线驱动器在UART分布式测控系统中的应用”,西安交大综合自动化所唐晓泉、韩崇昭,在《单片机应用技术8》可以找到,可参考。不过现在CAN控制器已不太贵了,采用CAN控制器,通信协议就省去很多心思。

使用特权

评论回复
板凳
jdwang| | 2007-8-28 17:15 | 只看该作者

用82C250做CAN中继器

仅用82C250做CAN中继器可能用问题,82C250有个特点,收到一帧数据会自动回发,这是CAN总线协议规定的。如果不加单片机的控制的话是有问题的,我曾经也想用此方案做中继器,结果是失败的。以后用89C51+2片MCP2510+2片82C250是成功的,因为控制器会自动处理这个回发的数据帧。请你注意。这方面有一篇资料上提过,一时找不到了。如找到的话发给你。

使用特权

评论回复
地板
wxj1952| | 2007-8-28 18:22 | 只看该作者

那就是网桥了

如果中间加了控制器,是不是成了存储-转发(第二层交换)?那比中继器——第一层交换慢多了。

使用特权

评论回复
5
lht2006|  楼主 | 2007-8-28 23:12 | 只看该作者

目前解决了2口的问题

感谢jdwang  wxj1952
目前我已经成功解决了这个问题

关键的地方是处理应答(即ACK)信号

即1向2发了数据,2又要向1发ACK,那么用CPLD处理一下TXD1,RXD1,TXD2,RXD2就可以实现用2片82C250连接不同的CAN网络,实现一个物理层上的2口CAN HUB

下面要解决的是8口CAN HUB的问题

使用特权

评论回复
6
lht2006|  楼主 | 2007-8-28 23:26 | 只看该作者

但是要注意延时

如果收发,电路里面延时太长,就会出问题

使用特权

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

本版积分规则

5

主题

20

帖子

0

粉丝