Reference Implementation

The API of the CMSIS-Drivers is published in the Driver Header Files.

To simplify the development of a CMSIS-Driver both Driver Template Files and Driver Examples are provided.

ARM offers also a Software Pack for CMSIS-Driver Validation as described in Driver Validation.

Driver Header Files

The API of each CMSIS-Driver is published in a header file. It is recommended to include the header file that is part of the CMSIS specification in the implementation file of the CMSIS-Driver.

The following header files are available in the directory .\CMSIS\Driver\Include.

Header File Description
Driver_Common.h Common Driver Definitions
Driver_CAN.h CAN Interface
Driver_ETH.h Ethernet Interface
Driver_ETH_MAC.h Ethernet MAC Interface
Driver_ETH_PHY.h Ethernet PHY Interface
Driver_Flash.h Flash Interface
Driver_I2C.h I2C Interface
Driver_MCI.h MCI Interface
Driver_NAND.h NAND Interface
Driver_SPI.h SPI Interface
Driver_Storage.h Storage Interface
Driver_SAI.h SAI Interface
Driver_USART.h USART Interface
Driver_USB.h USB Interface
Driver_USBD.h USB Device Interface
Driver_USBH.h USB Host Interface

Driver Template Files

Driver template files are code skeletons that provide the structure of a CMSIS-Driver. The following templates are available in the directory .\CMSIS\Driver\DriverTemplates.

Source File Description
Driver_CAN.c CAN Interface
Driver_ETH_MAC.c Ethernet MAC Interface
Driver_ETH_PHY.c Ethernet MAC Interface
Driver_Flash.c Flash Interface
Driver_I2C.c I2C Interface
Driver_MCI.c MCI Interface
Driver_SAI.c SAI Interface
Driver_SPI.c SPI Interface
Driver_Storage.c Storage Interface
Driver_USART.c USART Interface
Driver_USBD.c USB Device Interface
Driver_USBH.c USB Host Interface

Driver Examples

The driver examples are full working CMSIS-Drivers that may be adapted to a different hardware. Examples are currently available for the NXP LPC1800 series and provide the implementation of a complete CMSIS-Driver. The following examples are available in the directory .\CMSIS\Pack\Example\CMSIS_Driver.

Source File Header File Description
EMAC_LPC18xx.c EMAC_LPC18xx.h Ethernet MAC Interface
SSP_LPC18xx.c SSP_LPC18xx.h SPI Interface
I2C_LPC18xx.c I2C_LPC18xx.h I2C Interface
I2S_LPC18xx.c I2S_LPC18xx.h SAI Interface
MCI_LPC18xx.c MCI_LPC18xx.h MCI Interface
USART_LPC18xx.c USART_LPC18xx.h USART Interface
USBn_LPC18xx.c USB_LPC18xx.h common files for USB Device Interface and USB Host Interface
USBDn_LPC18xx.c none USB Device Interface
USBHn_LPC18xx.c none USB Host Interface

These CMSIS-Drivers use additional modules for GPIO and DMA control:

Source File Header File Description
GPIO_LPC18xx.c GPIO_LPC18xx.h GPIO Interface for LPC1800 series
GPDMA_LPC18xx.c none DMA Interface for LPC1800 series
SCU_LPC18xx.c SCU_LPC18xx.h SCU Interface for LPC1800 series

The CMSIS-Drivers for the LPC1800 device have also many configuration options that are controls using #define statements in the file .\CMSIS\Pack\Example\CMSIS_Driver\Config\RTE_Device.h. Using this file, the I/O pin and DMA assignment can be set among other parameters such as USB speed and PHY interfaces.

Further driver reference implementations are available in Device Family Packs (DFP) labeled with version 2.0.0 or higher.