Blog
Recent Posts
CANfetti: Open-Source CANopen Protocol Stack for Embedded Systems
Posted by
on
Scythe Robotics, a developer of advanced, commercial-grade solutions for the professional landscaping industry, announced its first open-source release of CANfetti, a CANopen-compliant stack, developed to overcome the limitations of existing libraries.
Developed and improved over the past few years by Scythe's firmware and software teams, CANfetti reduces the barriers to entry with an open-source, user-friendly, and high-quality library for reliable CANopen communications in various fields including on- and off-road vehicles, industrial devices, and robotics.
The Scythe team found the APIs (application programming interfaces) and designs of current open-source frameworks too limiting to integrate consistently into their applications across firmware and software. To overcome the inflexibility of other options, CANfetti introduces the ability to use dynamic Object Dictionary types, which allow for easier integration of complex runtime behavior.
With a significantly more flexible API, CANfetti provides engineers with a drop-in CANopen stack that doesn't get in the way and lets them build their system around it. Most open-source CANopen libraries are no longer actively being developed, and many abandoned libraries sit in various states of disrepair and become rapidly outdated without community or commercial support. CANfetti represents Scythe’s first step in its commitment to updating.
According to a blog post by Scythe, other open-source frameworks only partially implement the CANopen specification and have architectures that make extending the rest of the specification a herculean effort. CANfetti, on the other hand, has a cleaner architecture and is built using modern C++. Additionally, it supports a broader set of CANopen features such as block mode, which allows users to efficiently transfer larger contiguous data blocks.
To maximize its resilience, the company created CANfetti as a versatile CANopen stack compatible with a variety of architectures, from bare metal microcontrollers to multi-threaded Linux systems. CANfetti seamlessly integrates with these platforms and can be utilized for a wide range of applications, including railway logistics, maritime electronics, and building automation.
References
CANgineBerry - CANopen Module for Raspberry Pi
The CANgineBerry for CANopen is an active CAN Bus coprocessor module that utilizes a standard UART communication channel towards the host system. It is equipped with an independent 32-bit microcontroller, allowing it to efficiently handle CAN Bus protocols with stringent timing requirements, such as CANcrypt or CANopen, achieving response times of under 10 ms.
Depending on the configuration, the CAN Bus communication can be operational within 50 ms after power-on, even if the host system takes significantly longer to boot. Available firmware options comprise a generic minimal CANopen Manager/Controller and a CANopenIA Device based on the CANopenIA implementation.