Keil Logo

CMSIS-Driver

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.






CMSIS-Driver Block Diagram Example

Reference Implementation

To simplify the development of a CMSIS-Driver, Driver Template Files are available.

The Arm:CMSIS-Driver pack contains MCU independent driver implementations for various peripherals. This is developed on GitHub.

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.


List of CMSIS-Drivers

The following table lists all device families and their supported CMSIS-Drivers that are available today. This list will be updated regularly.

Vendor Device/Family CAN Ethernet MAC Ethernet PHY I2C MCI NAND Flash SAI SPI Storage USART USB Host USB Device WiFi
AdestoTech AT45DB641E
AT45DB642D
Arm Musca-A1
Musca-B1
Musca-S1
SSE-200
Cypress S29GL064Nx2
Espressif ESP32
ESP8266
Infineon XMC1000
XMC4000
Inventek ISM43362
Microchip KSZ8061RNA
KSZ8061RNB
KSZ8851SNL
LAN8710A
LAN8720
LAN8742A
LAN9220
Micron M29EW28F128
M29W640FB
NXP LPC1500
LPC1700
LPC1800
LPC4000
LPC4300
i.MXRT105x
i.MXRT1060
i.MXRT1064
K32L2A31A
K32L2A41A
K32L2B11A
K32L2B21A
K32L2B31A
K32L3A60
LPC51U68
LPC54005
LPC54016
LPC54018M
LPC54018
LPC54102
LPC54113
LPC54114
LPC54605
LPC54606
LPC54607
LPC54608
LPC54618
LPC54628
LPC54S005
LPC54S016
LPC54S018M
LPC54S018
LPC5512
LPC5514
LPC5516
LPC5526
LPC5528
LPC55S14
LPC55S16
LPC55S26
LPC55S28
LPC55S66
LPC55S69
MIMX8MD6
MIMX8MD7
MIMX8MQ5
MIMX8MQ6
MIMX8MQ7
MIMXRT1011
MIMXRT1015
MIMXRT1021
MIMXRT1052
MIMXRT1062
MIMXRT1064
MIMXRT633S
MIMXRT685S
MK02F12810
MK11D5
MK11DA5
MK12D5
MK21D5
MK21DA5
MK21F12
MK21FA12
MK22D5
MK22F12810
MK22F12
MK22F25612
MK22F51212
MK22FA12
MK24F12
MK24F25612
MK26F18
MK27F15
MK27FA15
MK28F15
MK28FA15
MK63F12
MK64F12
MK65F18
MK66F18
MK80F25615
MK82F25615
MKE02Z4
MKE04Z4
MKE06Z4
MKE14F16
MKE14Z4
MKE14Z7
MKE15Z4
MKE15Z7
MKE16F16
MKE16Z4
MKE18F16
MKL02Z4
MKL03Z4
MKL13Z644
MKL17Z4
MKL17Z644
MKL26Z4
MKL27Z4
MKL27Z644
MKL28Z7
MKL33Z4
MKL33Z644
MKL34Z4
MKL36Z4
MKL43Z4
MKL46Z4
MKL82Z7
MKS20F12
MKS22F12
MKV10Z1287
MKV11Z7
MKV30F12810
MKV31F12810
MKV31F25612
MKV31F51212
MKV42F16
MKV44F16
MKV46F16
MKV56F24
MKV58F24
Qualcomm QCA400x
Redpine RS13100
RS14100
STMicroelectronics STM32F0xx
STM32F1xx
STM32F2xx
STM32F3xx
STM32F4xx
STM32F7xx
STM32H7xx
STM32L0xx
STM32L4xx
ST802RT1
Texas Instruments DP82848C
WizNet WizFi360
  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.