1# Driver Validation {#driverValidation} 2 3Developers can use **CMSIS-Driver Validation** framework to verify that an implementation of a peripheral driver is compliant with the corresponding CMSIS-Driver Specification. Verified drivers can then be reliably used with middleware components and user applications that rely on CMSIS-Driver APIs. 4 5The CMSIS-Driver Validation is maintained in a separate public [GitHub repository](https://github.com/ARM-software/CMSIS-Driver_Validation), and is also released as a [CMSIS Software Pack](https://www.keil.arm.com/packs/) named **ARM::CMSIS-Driver_Validation**. 6 7This page gives an overview about driver validation. Refer to [CMSIS-Driver Validation Guide](https://arm-software.github.io/CMSIS-Driver_Validation/latest/index.html)) for full documentation. 8 9The CMSIS-Driver Validation Suite performs the following tests: 10 11 - Generic Validation of API function calls 12 - Validation of Configuration Parameters 13 - Validation of Communication with loopback tests 14 - Validation of Communication Parameters such as baudrate 15 - Validation of Event functions 16 17The following CMSIS-Drivers can be tested with the current release: 18 19 - \ref can_interface_gr : with loop back test of communication. 20 - \ref eth_interface_gr : MAC and PHY with loop back test of communication. 21 - \ref i2c_interface_gr : only API and setup; does not test data transfer. 22 - \ref mci_interface_gr : only API and setup; does not test data transfer. 23 - \ref spi_interface_gr : with loop back test of communication. 24 - \ref usart_interface_gr : with loop back test of communication. 25 - \ref usbd_interface_gr : only API and setup; does not test data transfer. 26 - \ref usbh_interface_gr : only API and setup; does not test data transfer. 27 - \ref wifi_interface_gr : extensive tests for WiFi Driver. 28 29 ## Sample Test Output {#test_output} 30 31The Driver Validation output can be printed to a console or saved in an XML file, via standard output (usually ITM). 32 33``` 34CMSIS-Driver USART Test Report Dec 6 2019 11:44:30 35 36TEST 01: USART_GetCapabilities PASSED 37TEST 02: USART_Initialization PASSED 38TEST 03: USART_PowerControl 39 DV_USART.c (301): [WARNING] Low power is not supported 40 PASSED 41TEST 04: USART_Config_PolarityPhase PASSED 42TEST 05: USART_Config_DataBits 43 DV_USART.c (387): [WARNING] Data Bits = 9 are not supported 44 PASSED 45TEST 06: USART_Config_StopBits 46 DV_USART.c (425): [WARNING] Stop Bits = 1.5 are not supported 47 DV_USART.c (429): [WARNING] Stop Bits = 0.5 are not supported 48 PASSED 49TEST 07: USART_Config_Parity PASSED 50TEST 08: USART_Config_Baudrate PASSED 51TEST 09: USART_Config_CommonParams PASSED 52TEST 10: USART_Send PASSED 53TEST 11: USART_AsynchronousReceive PASSED 54TEST 12: USART_Loopback_CheckBaudrate PASSED 55TEST 13: USART_Loopback_Transfer PASSED 56TEST 14: USART_CheckInvalidInit PASSED 57 58Test Summary: 14 Tests, 14 Passed, 0 Failed. 59Test Result: PASSED 60``` 61 62## Setup for Loop Back Communication {#loop_back_setup} 63 64To perform loop back communication tests it is required to connect the input and the output of the peripherals as shown in this table: 65 66Peripheral | Loop Back Configuration 67:----------------|:---------------------------- 68Ethernet | Connect TX+ (Pin 1) with RX+ (Pin 3), TX- (Pin 2) with RX- (Pin 6) 69SPI | Connect MISO to MOSI 70USART | Connect TX with RX 71 72The following picture shows the necessary external loop back connections for the Keil MCBSTM32F400 evaluation board: 73 74 - SPI: PB14 (SPI2_MISO) and PB15 (SPI2_MOSI) 75 - USART: PB6 (USART1_TX) and PB7 (USART1_RX) 76 - Ethernet: Pin 1 (TX+) and Pin 3 (RX+), Pin 2 (TX-) and Pin 6 (RX-) 77 78 79