Keil Logo


Learning Platform

The CMSIS-Driver specification is a software API that describes peripheral driver interfaces for middleware stacks and user applications. The CMSIS-Driver API is designed to be generic and independent of a specific RTOS, making it reusable across a wide range of supported microcontroller devices.


The standard peripheral driver interfaces connect microcontroller peripherals for example with middleware that implements communication stacks, file systems, or graphic user interfaces. Each peripheral driver interface may provide multiple instances reflecting the multiple physical interfaces of the same type in a device. For example, two physical SPI interfaces are reflected with separate Access Structs for SPI0 and SPI1. An Access Struct is the interface of a driver to the middleware component or the user application.

Reference Implementation

To simplify the development of a CMSIS-Driver both Driver Template Files and Driver Examples are provided. Template applications using CMSIS-Driver and Middleware are available from the CMSIS Workshop.

CMSIS-Driver Validation Suite

ARM offers a CMSIS-Driver Validation Pack which contains the source code and documentation of the CMSIS-Driver Validation Suite. Examples show the usage of the test suite on various target platforms.

The CMSIS-Driver Validation Suite tests for API function calls and configuration parameters. It can do communication tests with loopback and check for communication parameters such as baudrate etc. For details, refer to the CMSIS-Driver Validation Pack Documentation.

List of Supported Devices

CMSIS-Driver are delivered as part of a Device Family Pack. The following Packs contain such drivers:

  • Atmel SAME70
  • Atmel SAMS70
  • Atmel SAMV7x
  • Infineon XMC1000
  • Infineon XMC4000
  • NXP Kinetis K64
  • NXP LPC1700
  • NXP LPC1800
  • NXP LPC4000
  • NXP LPC4300
  • Silicon Labs EFM32 Giant Gecko
  • STMicroelectronics STM32F1xx
  • STMicroelectronics STM32F2xx
  • STMicroelectronics STM32F4xx
  • STMicroelectronics STM32F7xx

To download the Packs to your MDK installation, please use Pack Installer.

  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.