请问:怎样用82C250实现CAN总线中继
我在做一个实验,想把CAN接口变成TTL电平,然后再变成CAN接口电平,从而使两个口正常通讯。<br /><br />两端都是CAN总线。即CANH1,CANL1;CANH2,CANL2;<br />怎么用2个82C250(或者再加一个CPLD或FPGA,即加一部分数字电路)把它们连接起来,以实现正常通讯。<br /><br />我最初想的是:一个80C250把CANH1,CANL1变成TXD1,RXD1;<br /> 另一个80C250把CANH2,CANL2变成TXD2,RXD2;<br /> 然后把 RXD1-TXD2, RXD2-TXD1。<br /><br />实际结果是行不通。<br /><br />但是我见到有人可以利用一个CPLD来处理TXD1,TXD2,RXD1,RXD2之间的关系来实现中继。<br /><br />我想问:从简单硬件上来说,RXD1-TXD2,RXD2-TXD1没有错误。<br /> 但为什么会错?是因为CAN协议和CAN工作原理导致的?<br /><br />另外,大家有什么想法?能不能说说?用82C250取代MAX485
用82C250取代MAX485可以克服485总线故有的缺点。由于没有用CAN控制器,通信协议要自己制定。我过去曾经做过试验,是可行的。杂志上也有介绍。这是利用了CAN总线的物理特性。介绍你一篇**:“CAN总线驱动器在UART分布式测控系统中的应用”,西安交大综合自动化所唐晓泉、韩崇昭,在《单片机应用技术8》可以找到,可参考。不过现在CAN控制器已不太贵了,采用CAN控制器,通信协议就省去很多心思。用82C250做CAN中继器
仅用82C250做CAN中继器可能用问题,82C250有个特点,收到一帧数据会自动回发,这是CAN总线协议规定的。如果不加单片机的控制的话是有问题的,我曾经也想用此方案做中继器,结果是失败的。以后用89C51+2片MCP2510+2片82C250是成功的,因为控制器会自动处理这个回发的数据帧。请你注意。这方面有一篇资料上提过,一时找不到了。如找到的话发给你。那就是网桥了
如果中间加了控制器,是不是成了存储-转发(第二层交换)?那比中继器——第一层交换慢多了。目前解决了2口的问题
感谢jdwang wxj1952<br />目前我已经成功解决了这个问题<br /><br />关键的地方是处理应答(即ACK)信号<br /><br />即1向2发了数据,2又要向1发ACK,那么用CPLD处理一下TXD1,RXD1,TXD2,RXD2就可以实现用2片82C250连接不同的CAN网络,实现一个物理层上的2口CAN HUB<br /><br />下面要解决的是8口CAN HUB的问题但是要注意延时
如果收发,电路里面延时太长,就会出问题<br /><br />
页:
[1]