CANopen Stack


The CANopen slave is a component which implements the CANopen protocoll according to CiA DS301. This component provides a tool for managing the CANopen object directory.


This CANopen Slave protocol contains the elements that are necessary for use in slave devices. These include PDO, SDO, NMT, EMGY and SYNC data packages. The default behavior of the object entries is prepared in the component and can be expanded or changed referring project-specific needs.

A small Windows tool "CANopen Config Tool" allows the management of the object entries in an XML databaseFrom this XML database the necessary source code configurations, EDS files and description of object entries (for example CSV file for Excel) can be generated.

The CANopen system does not require a realtime kernel and is effective and suitable for even the smallest microcontroller. For more extensive CANopen slave devices, any real-time kernel can be used. For the real-time kernel µC/OS-II from Micrium we may offer you a very attractive bundle.


The CANopen Slave componente does not simulate a software architectur, and can therefor be integrated into any existing software. This allows an integration in software where CANopen is only one among several supported protocolls.

By using the "CANopen Config Tools" the documentation, the EDS file and the source code from the object directory are kept consistent. The generated files can be customized on the basis of templates to meet the needs of the project.

By using the extensibility for native object types particular behavior can easily be integrated into the CANopen Slave. An example is a parameter or calibration range, which is protected by a password.


The following is a summary of the existing ports. Since the support of CANopen Slaves is dependent from the CAN Controller only, more microcontrollers with the same CAN Controllern are possible to be supported with minimal effort.

If your microcontroller is not included in this summary, please contact us. We are continuously working on new ports.

  CPU / CAN Controller
Analog Devices ADSPBF537
Infineon TC1796, XC16x, XE16x
Spansion MB90F340, MB9BF568R
Freescale MFC5485, MPC5200B, MPC5554
NEC V850Fx4
NXP LPC21xx, LPC22xx, LPC24xx
Renesas RX62N
ST Microelectronics STM8, STM32F1xx, STM32F2xx, STM32F4xx, STR91x
TI LM3SxBxx, RM48, TMS240x, TMS28xx