没有额外的硬件,是否可以在Arduino上安装CAN?

时间:2014-02-28 08:14:43

标签: embedded arduino can-bus

我想让Arduino在CAN网络中运行。 Arduino是否存在提供OSI模型网络层的软件?我想象一下用GPIO / ADC检测HI / LOW电平并用DAC将信号发送到网络。如果没有附加任何额外的硬件,那将是很好的。我不介意CAN网络需要一个终端电阻。

Arduino我的意思是他们中的任何一个。我的目的是保持发展环境。

如果不存在这样的软件,是否有任何技术障碍,例如闪存尺寸有限(同样,我并不是指使用某些Atmega芯片的特定电路板)。

3 个答案:

答案 0 :(得分:6)

你可以写一下碰撞CAN驱动程序,但它有很多限制 首先是时间,很难实现位时序和仲裁。

你将能够获得10kb甚至50kb,但这会消耗大量的cpu时间。
而代码本身就是一种痛苦 您必须动态计算CRC(简单),但要实现碰撞检测并且所有时序参数都不容易。

有一次,我为一家公司做了这件事,但这真是一个糟糕的主意。

最好买1欧元的筹码并且开心。

答案 1 :(得分:3)

有多个CAN总线屏蔽板可用(例如:thisthis),这将是一个更好的解决方案。这不仅仅是控制器芯片,总线接口,线路驱动器和电源的问题都需要考虑。如果你有资源和技能,你当然可以创建自己的板或面包板。

即使你通过GPIO进行比特攻击,你也需要一些我认为可以处理总线争用检测的硬件模块,而且速度非常慢,可能无法与总线上的“真正”CAN控制器很好地互操作。

如果您的目标是在您自己设计的设备之间进行通信而不是现成的CAN设备,那么您不需要CAN,专有的东西就足够了,并且UART的执行速度会快一点 - 猛烈的CAN实施。

答案 2 :(得分:2)

我不认为,这样的软件存在。 CAN总线比I2C更复杂。基本上,您必须实现CAN控制器和CAN收发器的功能。有关详细信息,请参阅此thread(德语版)。

或者你可以使用CAN shields之一。另一种选择是使用BeagleBoneCAN cape

另请查看AVR-CAN