[CAN-bus/DeviceNet] 请问:怎样用82C250实现CAN总线中继

[复制链接]
3514|5
 楼主| lht2006 发表于 2007-8-27 12:40 | 显示全部楼层 |阅读模式
我在做一个实验,想把CAN接口变成TTL电平,然后再变成CAN接口电平,从而使两个口正常通讯。<br /><br />两端都是CAN总线。即CANH1,CANL1;CANH2,CANL2;<br />怎么用2个82C250(或者再加一个CPLD或FPGA,即加一部分数字电路)把它们连接起来,以实现正常通讯。<br /><br />我最初想的是:一个80C250把CANH1,CANL1变成TXD1,RXD1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;另一个80C250把CANH2,CANL2变成TXD2,RXD2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后把&nbsp;&nbsp;RXD1-TXD2,&nbsp;&nbsp;RXD2-TXD1。<br /><br />实际结果是行不通。<br /><br />但是我见到有人可以利用一个CPLD来处理TXD1,TXD2,RXD1,RXD2之间的关系来实现中继。<br /><br />我想问:从简单硬件上来说,RXD1-TXD2,RXD2-TXD1没有错误。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但为什么会错?是因为CAN协议和CAN工作原理导致的?<br /><br />另外,大家有什么想法?能不能说说?
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 | 显示全部楼层

那就是网桥了

如果中间加了控制器,是不是成了存储-转发(第二层交换)?那比中继器——第一层交换慢多了。
 楼主| lht2006 发表于 2007-8-28 23:12 | 显示全部楼层

目前解决了2口的问题

感谢jdwang&nbsp;&nbsp;wxj1952<br />目前我已经成功解决了这个问题<br /><br />关键的地方是处理应答(即ACK)信号<br /><br />即1向2发了数据,2又要向1发ACK,那么用CPLD处理一下TXD1,RXD1,TXD2,RXD2就可以实现用2片82C250连接不同的CAN网络,实现一个物理层上的2口CAN&nbsp;HUB<br /><br />下面要解决的是8口CAN&nbsp;HUB的问题
 楼主| lht2006 发表于 2007-8-28 23:26 | 显示全部楼层

但是要注意延时

如果收发,电路里面延时太长,就会出问题<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

20

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部