CANoopEn is a CANopen protocol stack written in clean, object-oriented C++17 — designed for portability, testability and readability. The stack is completely target-independent and runs on any hardware architecture; ready-to-build samples are currently available for STM32 (bare-metal and FreeRTOS), with more platforms to follow. CANoopEn is developed and maintained by Xyntos GmbH.
- Modern C++ instead of C macros — your device is a class deriving from
CoSlaveorCoMaster, the object dictionary is a class with typed entry objects, callbacks are virtual methods on listener interfaces. - Hardware-agnostic by design — the stack talks to your CAN driver through a single method; porting means implementing three small interfaces.
- No dynamic memory allocation — everything is statically sized at compile time.
- Scales down — every service (LSS, MPDO, block transfer, …) can be compiled out to fit small flash budgets.
- Complete — NMT, heartbeat, PDO/MPDO, SDO server & client incl. block transfer, SYNC, TIME, EMCY, LSS (CiA 305), LED indicators (CiA 303-3), plus the CiA 417 lift application profile.
- Tested — a comprehensive Google Test unit test suite runs on every commit.
📖 The full documentation lives at CANoopEn.net:
- Quick Start Guide — from
git cloneto a live CANopen node on the low-cost ST NUCLEO-C092RC board in about half an hour - Architecture — how the stack is structured and what your application provides
- API reference: CoSlave · CoMaster · Listeners · Object dictionary · Configuration & porting
Ready-to-build sample projects (bare-metal and FreeRTOS) live in the companion repository canoopendemo.
CANoopEn is licensed under the Apache License, Version 2.0.
CANoopEn is developed by Xyntos GmbH, a Swiss engineering company specializing in embedded software. If you need support integrating CANopen into your product — from device firmware to conformance — get in touch.
