Illustration of MicroControl's modular protocol stack structure
Home > Products > Protocol Stacks > CANpie FD

CAN Driver Source Code - CANpie FD

The CAN driver CANpie FD (Controller Area Network Programming Interface Environment) is an open interface for the development of CAN-based applications.

The CAN driver forms the basis for higher layer protocols (CANopen / J1939) and may be used for manufacturer-specific CAN communication between embedded systems. CANpie FD is avaliable for a wide range of microcontrollers (more than 160 at the moment). A variety of configuration options facilitates adjustment to individual target systems.


The CAN physical layer (data link layer) comprises two protocols: the classical CAN standard and CAN FD. The protocols are described in the ISO 11898-1:2015 specification. The CANpie FD API defines 19 functions to allow manufacturer independend access to the CAN controller to entirely support ISO specifications. The API is based on the concept of dedicated message buffers (mailboxes) in combination with acceptance masks to minimize the application software's overhead for filtering and managing messages. Each message buffer can be expanded by FIFO function.


An outline of the CANpie FD project is available on GitHub.


  • supports (virtual) mailboxes
  • supports acceptance masks
  • optional FIFO for each mailbox
  • supports time-stamps
  • consistent structure of CAN messages
  • optional user-fields may be included in the CAN structure
  • supports all CAN FD formats (CBFF/CEFF/FBFF/FEFF)

Scope of delivery

The CANopen Slave protocol stack will come as C99 source together with a manual in English (electronic and print version). Also included:

  • a site-related company license without additional runtime costs
  • 12 months technical support by email or phone
Logo ST Partner Program
Icon FD ready MicroControl
Logo CANpie FD MicroControl
Illustration of how to switch over from CAN Classic to CAN FD with MicroControl

CANpie FD Server

MicroControl now offers a software package with versatile additional benefits - the new CANpie FD Server. The CANpieFD is compatible with all PC operating systems (Win, Linux, OSx) which facilitates virtualization of the development environment.

more about CANpie FD Server

Complementary services

As a complement to our CANpie FD driver we are also offering CAN basics workshops, software tools as well as technical advice and support in the development of your individual CAN device. The technical support period may be extended if desired.

Ordering information

Order Number



50.10.079 Atmel AT90CAN32 / AT90CAN64 / AT90CAN128
50.10.011 Atmel AT89C51CC01 / AT89C51CC03
50.10.032 Atmel AT91SAM7X128 / AT91SAM7X256 / AT91SAM7X512
50.10.071 Atmel AT32UC3C family (AT32UC3Cx128C, AT32UC3Cx256C, AT32UC3Cx512C)
50.10.021 Freescale Coldfire (MCF523x / MCF528x)
50.10.023 Freescale XGATE (MC9S12XDP512)
50.10.016 Fujitsu 16LX family 340 (MB90F342 / MB90F347 / MB90F349)
50.10.017 Fujitsu 16LX family 385 (MB90F387)
50.10.024 Fujitsu 16LX family 495 (MB90F497 / MB90F498)
50.10.033 Fujitsu 16FX family 340 (MB96F347 / MB96F348)
50.10.002 Infineon C505
50.10.004 Infineon C16x family (C161 / C164 / C167)
50.10.030 Infineon XC16x family (XC161CS / XC164CS / XC167CI)
50.10.073 Infineon XMC4500 family (XMC4500 / XMC4502 / XMC4504)
50.10.074 Infineon TriCore AUDO MAX family (TC1791 / TC1793 / TC1798)
50.10.091 Infineon CANpie FD for XMC4700 family
50.10.036 Linux Driver for Linux socketcan
50.10.083 Linux Driver for can4linux
50.10.012 Microchip PIC 18Fxx8x family (18F4680 / 18F6680 / 18F8680)
50.10.022 Microchip PIC 18Fx68x family (18F2682 / 18F2685 / 18F4682 / 18F4685)
50.10.034 Microchip dsPIC33F family (dsPIC33FJ64 / dsPIC33FJ128 / dsPIC33FJ256)
50.10.037 Microchip PIC 32MX family (PIC 32MX5xx / PIC32MX7xx)
50.10.008 NEC μPD70F32xx family (AFCAN)
50.10.059 NuMicro NUC140
50.10.072 NXP LPC176x family (LPC1764 / LPC1765 / LPC1766 / LPC1768 / LPC1769)
50.10.063 NXP LPC 177x / LPC178x family
50.10.062 NXP LPC 18xx family
50.10.015 NXP LPC21xx family (LPC2119 / LPC2129 / LPC2292)
50.10.005 NXP SJA1000
50.10.064 Renesas R8C/34W family
50.10.038 Silicon Labs C8051F04x family (C8051F040, C8051F041)
50.10.027 ST STR7 family (STR710 / STR712)
50.10.028 ST STR9 family (STR910 / STR911 / STR912)
50.10.065 ST STM32 family (STM32F103)
50.10.066 ST STM32 family (STM32F105/107)
50.10.067 ST STM32 family (STM32F2xx)
50.10.068 ST STM32 family (STM32F3xx)
50.10.069 ST STM32 family (STM32F4xx)
50.10.089 ST STM32 family (STM32L4xx)
50.10.094 ST STM32 family (STM32G4xx)
50.10.031 ST ST10 family (ST10F26x / ST10F27x)
50.10.025 TI TMS320LF24xx family
50.10.075 TI TMS320F2803x Piccolo family (F28030 / F28031 / F28032 / F28033 / F28034 / F28035)
50.10.058 TI Tiva TM4C123x family
50.10.076 TI Concerto F28M36x family

To top

MicroControl auf Facebook MicroControl auf Twitter MicroControl Blog