]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Driver/src/mainpage.md
Doc: Clean up of CMSIS-Driver docs, incl. change to markdown.
[cmsis] / CMSIS / DoxyGen / Driver / src / mainpage.md
1 # Overview {#mainpage}
2
3 The **CMSIS-Driver** specifies generic driver interfaces for peripherals commonly used in embedded systems with Armยฎ Cortexยฎ processors.
4
5 User applications and middleware components can control such peripherals using the [CMSIS-Driver API](modules.html) and so achieve better code reuse and simpler integration in various ecosystems. The API is designed to be generic and independent of a specific RTOS making it reusable across a wide range of supported microcontroller devices.
6
7 The following block diagram shows an exemplary set up for various drivers.
8
9 ![Example use of CMSIS-Drivers with Middleware](./images/driver.png)
10
11 The standard CMSIS-Driver interfaces connect microcontroller peripherals with middleware that implements communication stacks, file system and graphic user interfaces.
12
13 ## Benefits {#cmsis_drv_benefits}
14
15 Using CMSIS-Driver provides great benefits to the embedded developers and software vendors:
16
17 - The CMSIS-Driver API covers \ref cmsis_drv_interfaces "many common peripherals" present in modern embedded systems for sensor interaction, data storage, communication and graphics.
18 - The unified API follows the similar design principles across all peripherals. This reduces learning efforts and increases developers' productivity. See \ref theoryOperation for details.
19 - Driver templates files provide code sceletons that help to get started with implementations for specific peripherals. See \ref cmsis_driver_files.
20 - Support for multiple driver instances with \ref AccessStruct.
21 - \ref driverValidation "Driver-Validation Suite" provides a set of tests to verify compatibility to CMSIS-Driver API definitions.
22
23 ## Covered Interfaces {#cmsis_drv_interfaces}
24
25 CMSIS-Driver APIs are defined for the following driver interfaces:
26
27   - \ref can_interface_gr "CAN": Interface to CAN bus peripheral.
28   - \ref eth_interface_gr "Ethernet": Interface to Ethernet MAC and PHY peripheral.
29   - \ref i2c_interface_gr "I2C": Multi-master Serial Single-Ended Bus interface driver.
30   - \ref mci_interface_gr "MCI": Memory Card Interface for SD/MMC memory.
31   - \ref nand_interface_gr "NAND": NAND Flash Memory interface driver.
32   - \ref flash_interface_gr "Flash": Flash Memory interface driver.
33   - \ref sai_interface_gr "SAI": Serial audio interface driver (I2s, PCM, AC'97, TDM, MSB/LSB Justified).
34   - \ref spi_interface_gr "SPI": Serial Peripheral Interface Bus driver.
35   - \ref storage_interface_gr "Storage": Storage device interface driver.
36   - \ref usart_interface_gr "USART": Universal Synchronous and Asynchronous Receiver/Transmitter interface driver.
37   - \ref usb_interface_gr "USB": Interface driver for USB Host and USB Device communication.
38   - \ref gpio_interface_gr "GPIO": General-purpose Input/Output driver.
39   - \ref vio_interface_gr "VIO": API for virtual I/Os (VIO).
40   - \ref wifi_interface_gr "WiFi": Interface driver for wireless communication.
41
42 A list of current CMSIS-Driver implementations is available \ref listOfImplementations "here".
43
44 ## Access to CMSIS-Driver {#cmsis_driver_pack}
45
46 CMSIS-Driver intefaces are actively maintained in [CMSIS 6 GitHub repository](https://github.com/ARM-software/CMSIS_6) and released as part of the [CMSIS Software Pack](../../General/html/cmsis_pack.html).
47
48 The CMSIS Software Pack publishes the API Interface under the Component Class **CMSIS Driver** with header files and a documentation. These header files are the reference for the implementation of the standardized peripheral driver interfaces.
49
50 These implementations are published typically in the Device Family Pack of a related microcontroller family under the Component Class **CMSIS Driver**. A Device Family Pack may contain additional interfaces in the Component Class **Device** to extend the standard Peripheral Drivers covered by this CMSIS-Driver specification with additional device specific interfaces for example for Memory BUS, GPIO, or DMA.
51
52 The following directories and files relevant to CMSIS-Driver are present in the **ARM::CMSIS** Pack:
53
54  Directory                        | Content
55 :---------------------------------|:------------------------------------------------------------------------
56 ๐Ÿ“‚ CMSIS                          | CMSIS Base software components folder
57  โ”ฃ ๐Ÿ“‚ Documentation/Driver        | A local copy of this CMSIS-Driver documentation
58  โ”ฃ ๐Ÿ“‚ Driver                      | Directory with CMSIS-Driver component, see \ref cmsis_driver_files
59 &emsp;&nbsp; โ”ฃ ๐Ÿ“‚ DriverTemplates | Driver Template files (Driver_<i>interface</i>.c)
60 &emsp;&nbsp; โ”ฃ ๐Ÿ“‚ Include         | API header files (Driver_<i>interface</i>.h, %Driver_Common.h)
61 &emsp;&nbsp; โ”— ๐Ÿ“‚ VIO             | Implementation of virtual Input/Output interface (\ref vio_interface_gr)