Easily build and control CANOpen nodes in Rust.
Zencan's goal is to enable rapid creation of a CANOpen node in a no_std embedded context using a
TOML configuration file and code generation. It also provides utilities for communicating with the
nodes from a linux environment.
This project is still in the prototype stage, so it's lacking some features and may yet go through a lot of API churn.
zencan-node: Implements a zencan node.no_stdcompatible.zencan-build: Code generation for generating the static data associated with a node, based on a device config TOML file.zencan-client: Client library for communicating with nodeszencan-cli: Command line tools for interacting with deviceszencan-common: Shared library used by both node and client
I like CAN, and I wanted to make it easy to build devices with lots of communication features in Rust -- mostly so I would use that, instead of like, hard-coding that one CAN message I need my device to send.
- Support embedded targets with
no_std/no_allocwith statically allocated object storage - Support enumeration of devices on a bus
- Support software version reporting and bootloading over the bus
- Support CAN-FD
- Support bulk data transfer
- Generate EDS and DBC files for integration into existing tools
- Support persistence of configuration to flash via application provided callbacks
can-io-firmware - A simple program to read analog inputs and make then available on a CAN bus i4-controller-firmware - A 4-channel current controller
Uses nightly docs features on docs.rs. To build docs locally using nightly features:
RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --no-deps
This project is licensed uder the MPL-2.0 license.