我想知道是否有可能使低速容错CAN网络(100 high )适应高速CAN网络。我需要这个连接一个较新的信息娱乐板(CIC)到我的K-罐在我的宝马e60汽车。我已经通过Arduino和MCP2515盾牌(在工作台上)唤醒并控制了中投公司。你知道是否有可能吗?谢谢!
发布于 2016-11-14 13:43:33
最容易做的事情可能是简单地取代CAN收发信机IC的信息娱乐板你要放在车里,一个与你已经在车内的公共汽车类型。不同的收发器集成电路通常是可替换的,所以没有问题。
然而,即使有匹配的收发器,数据比特率也需要匹配,因此您需要确定板卡使用的比特率和车辆总线使用的比特率。
如果比特率不匹配,就没有必要更换收发信机IC -在这种情况下,唯一的解决方案可能是创建一个双向存储转发适配器/网关。
人们可以使用Arduino来构建这样一个网关,但是它必须有两个CAN总线“屏蔽”子板--每个总线一个,其中每个子板都带有一个适合它连接的总线的CAN收发器,以及它的CAN控制器配置到适当的比特率。
每个CAN控制器通过SPI连接到Arduino。多个从设备非常可能共享单个SPI总线,主设备(例如Arduino微控制器)使用芯片/从选择(CS/SS)线路选择它希望与之通信的设备。有关SPI通信的更多信息,包括多从通信,请参见这里和这里。
对于依赖SPI的现成Arduino“盾牌”,额外的屏蔽(超过第一个)可能需要物理地将其CS/SS线路重新路由到来自Arduino微控制器的另一条控制线上,以允许从选择。请查阅电路板的插孔和/或示意图,以确定需要进行哪些修改。具体来说,如果使用seeed的CAN总线电路,请检查它的Wiki的"CS引脚“部分。
在软件方面,网关基本上需要不断地将在一条总线中接收到的消息复制到另一条总线上,并使用一个小的FIFO缓冲区来保存一些消息,以防目标总线繁忙。可能需要对CAN总线库的源代码进行一些修改,以支持多个CAN控制器并使用CS/SS线路在它们之间切换。
顺便说一句,堆栈溢出可能是这个问题的错误位置,因为它实际上不是一个编程问题。
https://stackoverflow.com/questions/40573888
复制相似问题