2 * Copyright (c) 2015-2021 Arm Limited. All rights reserved.
4 * SPDX-License-Identifier: Apache-2.0
6 * Licensed under the Apache License, Version 2.0 (the License); you may
7 * not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * -----------------------------------------------------------------------------
20 * Project: CMSIS-Driver Validation
21 * Title: Serial Peripheral Interface Bus (SPI) Driver Validation tests
23 * -----------------------------------------------------------------------------
26 #ifndef __DOXYGEN__ // Exclude form the documentation
33 #include "DV_SPI_Config.h"
34 #include "DV_Framework.h"
36 #include "Driver_SPI.h"
38 // Fixed settings for communication with SPI Server (not available through DV_SPI_Config.h)
39 #define SPI_CFG_SRV_FORMAT 0 // Clock Polarity 0 / Clock Phase 0
40 #define SPI_CFG_SRV_DATA_BITS 8 // 8 data bits
41 #define SPI_CFG_SRV_BIT_ORDER 0 // MSB to LSB bit order
43 #define CMD_LEN 32UL // Length of command to SPI Server
44 #define RESP_GET_VER_LEN 16UL // Length of response from SPI Server to GET VER command
45 #define RESP_GET_CAP_LEN 32UL // Length of response from SPI Server to GET CAP command
46 #define RESP_GET_CNT_LEN 16UL // Length of response from SPI Server to GET CNT command
48 #define OP_SEND 0UL // Send operation
49 #define OP_RECEIVE 1UL // Receive operation
50 #define OP_TRANSFER 2UL // Transfer operation
51 #define OP_ABORT_SEND 3UL // Abort send operation
52 #define OP_ABORT_RECEIVE 4UL // Abort receive operation
53 #define OP_ABORT_TRANSFER 5UL // Abort transfer operation
55 #define MODE_INACTIVE 0UL // Inactive mode
56 #define MODE_MASTER 1UL // Master mode
57 #define MODE_SLAVE 2UL // Slave mode
58 #define SS_MODE_MASTER_UNUSED 0UL // Master mode Slave Select unused
59 #define SS_MODE_MASTER_SW 1UL // Master mode Slave Select Software controlled
60 #define SS_MODE_MASTER_HW_OUTPUT 2UL // Master mode Slave Select Hardware controlled Output
61 #define SS_MODE_MASTER_HW_INPUT 3UL // Master mode Slave Select Hardware monitored Input
62 #define SS_MODE_SLAVE_HW 0UL // Slave mode Slave Select Hardware monitored
63 #define SS_MODE_SLAVE_SW 1UL // Slave mode Slave Select Software controlled
64 #define FORMAT_CPOL0_CPHA0 0UL // Clock Format: Polarity 0, Phase 0
65 #define FORMAT_CPOL0_CPHA1 1UL // Clock Format: Polarity 0, Phase 1
66 #define FORMAT_CPOL1_CPHA0 2UL // Clock Format: Polarity 1, Phase 0
67 #define FORMAT_CPOL1_CPHA1 3UL // Clock Format: Polarity 1, Phase 1
68 #define FORMAT_TI 4UL // Frame Format: Texas Instruments
69 #define FORMAT_MICROWIRE 5UL // Frame Format: National Semiconductor Microwire
70 #define BO_MSB_TO_LSB 0UL // Bit Order MSB to LSB
71 #define BO_LSB_TO_MSB 1UL // Bit Order LSB to MSB
73 // Testing Configuration definitions
74 #if (SPI_CFG_TEST_MODE != 0)
75 #define SPI_SERVER_USED 1
77 #define SPI_SERVER_USED 0
80 // Determine maximum number of items used for testing
81 #if (SPI_CFG_DEF_NUM == 0)
82 #error Default number of items must not be 0!
85 #define SPI_NUM_MAX SPI_CFG_DEF_NUM
86 #if (SPI_CFG_NUM1 > SPI_NUM_MAX)
88 #define SPI_NUM_MAX SPI_CFG_NUM1
90 #if (SPI_CFG_NUM2 > SPI_NUM_MAX)
92 #define SPI_NUM_MAX SPI_CFG_NUM2
94 #if (SPI_CFG_NUM3 > SPI_NUM_MAX)
96 #define SPI_NUM_MAX SPI_CFG_NUM3
98 #if (SPI_CFG_NUM4 > SPI_NUM_MAX)
100 #define SPI_NUM_MAX SPI_CFG_NUM4
102 #if (SPI_CFG_NUM5 > SPI_NUM_MAX)
104 #define SPI_NUM_MAX SPI_CFG_NUM5
107 // Calculate maximum required buffer size
108 #if ((SPI_CFG_DEF_DATA_BITS > 16) || ((SPI_TC_DATA_BIT_EN_MASK & 0xFFFF0000UL) != 0U))
109 #define SPI_BUF_MAX (SPI_NUM_MAX * 4U)
110 #elif ((SPI_CFG_DEF_DATA_BITS > 8) || ((SPI_TC_DATA_BIT_EN_MASK & 0x0000FF00UL) != 0U))
111 #define SPI_BUF_MAX (SPI_NUM_MAX * 2U)
113 #define SPI_BUF_MAX (SPI_NUM_MAX)
115 #if (SPI_SERVER_USED == 1)
116 // If selected Test Mode is SPI Server take into account SPI Server data bit settings
117 #if ((SPI_CFG_SRV_DATA_BITS > 16) && (SPI_BUF_MAX < (SPI_NUM_MAX * 4U)))
119 #define SPI_BUF_MAX (SPI_NUM_MAX * 4U)
120 #elif ((SPI_CFG_SRV_DATA_BITS > 8) && (SPI_BUF_MAX < (SPI_NUM_MAX * 2U)))
122 #define SPI_BUF_MAX (SPI_NUM_MAX * 2U)
126 typedef struct { // SPI Server version structure
127 uint8_t major; // Version major number
128 uint8_t minor; // Version minor number
129 uint16_t patch; // Version patch (revision) number
132 typedef struct { // SPI Server capabilities structure
133 uint32_t mode_mask; // Mode and Slave Select mask
134 uint32_t fmt_mask; // Clock Format or Frame Format mask
135 uint32_t db_mask; // Data Bits mask
136 uint32_t bo_mask; // Bit Order mask
137 uint32_t bs_min; // Min bus speed
138 uint32_t bs_max; // Max bus speed
141 // Register Driver_SPI#
142 #define _ARM_Driver_SPI_(n) Driver_SPI##n
143 #define ARM_Driver_SPI_(n) _ARM_Driver_SPI_(n)
144 extern ARM_DRIVER_SPI ARM_Driver_SPI_(DRV_SPI);
145 static ARM_DRIVER_SPI *drv = &ARM_Driver_SPI_(DRV_SPI);
147 // Global variables (used in this module only)
148 static int8_t buffers_ok;
149 static int8_t driver_ok;
150 static int8_t server_ok;
152 static SPI_SERV_VER_t spi_serv_ver;
153 static SPI_SERV_CAP_t spi_serv_cap;
155 static volatile uint32_t event;
156 static volatile uint32_t duration;
157 static volatile uint32_t xfer_count;
158 static volatile uint32_t data_count_sample;
159 static uint32_t systick_freq;
161 static osEventFlagsId_t event_flags;
163 static char msg_buf[256];
165 // Allocated buffer pointers
166 static void *ptr_tx_buf_alloc;
167 static void *ptr_rx_buf_alloc;
168 static void *ptr_cmp_buf_alloc;
170 // Buffer pointers used for data transfers (must be aligned to 4 byte)
171 static uint8_t *ptr_tx_buf;
172 static uint8_t *ptr_rx_buf;
173 static uint8_t *ptr_cmp_buf;
175 // String representation of various codes
176 static const char *str_srv_status[] = {
181 static const char *str_test_mode[] = {
186 static const char *str_oper[] = {
195 static const char *str_ss_mode[] = {
197 "Software controlled",
198 "Hardware controlled"
201 static const char *str_mode[] = {
206 static const char *str_format[] = {
207 "Clock Polarity 0, Clock Phase 0",
208 "Clock Polarity 0, Clock Phase 1",
209 "Clock Polarity 1, Clock Phase 0",
210 "Clock Polarity 1, Clock Phase 1",
212 "National Semiconductor Microwire"
215 static const char *str_bit_order[] = {
220 static const char *str_ret[] = {
223 "ARM_DRIVER_ERROR_BUSY",
224 "ARM_DRIVER_ERROR_TIMEOUT",
225 "ARM_DRIVER_ERROR_UNSUPPORTED",
226 "ARM_DRIVER_ERROR_PARAMETER",
227 "ARM_DRIVER_ERROR_SPECIFIC",
228 "ARM_SPI_ERROR_MODE",
229 "ARM_SPI_ERROR_FRAME_FORMAT",
230 "ARM_SPI_ERROR_DATA_BITS",
231 "ARM_SPI_ERROR_BIT_ORDER",
232 "ARM_SPI_ERROR_SS_MODE"
236 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
237 static int32_t ComConfigDefault (void);
238 static int32_t ComSendCommand (const void *data_out, uint32_t len);
239 static int32_t ComReceiveResponse ( void *data_in, uint32_t len);
241 static int32_t CmdGetVer (void);
242 static int32_t CmdGetCap (void);
243 static int32_t CmdSetBufTx (char pattern);
244 static int32_t CmdSetBufRx (char pattern);
245 static int32_t CmdGetBufRx (uint32_t len);
246 static int32_t CmdSetCom (uint32_t mode, uint32_t format, uint32_t data_bits, uint32_t bit_order, uint32_t ss_mode, uint32_t bus_speed);
247 static int32_t CmdXfer (uint32_t num, uint32_t delay_c, uint32_t delay_t, uint32_t timeout);
248 static int32_t CmdGetCnt (void);
250 static int32_t ServerInit (void);
251 static int32_t ServerCheck (void);
252 static int32_t ServerCheckSupport (uint32_t mode, uint32_t format, uint32_t data_bits, uint32_t bit_order, uint32_t bus_speed);
255 static int32_t IsNotLoopback (void);
256 static int32_t IsNotFrameTI (void);
257 static int32_t IsNotFrameMw (void);
258 static int32_t IsFormatValid (void);
259 static int32_t IsBitOrderValid (void);
261 static uint32_t DataBitsToBytes (uint32_t data_bits);
262 static int32_t DriverInit (void);
263 static int32_t BuffersCheck (void);
265 static void SPI_DataExchange_Operation (uint32_t operation, uint32_t mode, uint32_t format, uint32_t data_bits, uint32_t bit_order, uint32_t ss_mode, uint32_t bus_speed, uint32_t num);
270 \fn void SPI_DrvEvent (uint32_t evt)
271 \brief Store event(s) into a global variable.
272 \detail This is a callback function called by the driver upon an event(s).
273 \param[in] evt SPI event
276 static void SPI_DrvEvent (uint32_t evt) {
279 (void)osEventFlagsSet(event_flags, evt);
283 \fn static uint32_t DataBitsToBytes (uint32_t data_bits)
284 \brief Calculate number of bytes used for an item at required data bits.
285 \return number of bytes per item
287 static uint32_t DataBitsToBytes (uint32_t data_bits) {
291 if (data_bits > 16U) {
293 } else if (data_bits > 8U) {
301 \fn static int32_t DriverInit (void)
302 \brief Initialize and power-on the driver.
303 \return execution status
304 - EXIT_SUCCESS: Driver initialized and powered-up successfully
305 - EXIT_FAILURE: Driver initialization or power-up failed
307 static int32_t DriverInit (void) {
309 if (drv->Initialize (SPI_DrvEvent) == ARM_DRIVER_OK) {
310 if (drv->PowerControl(ARM_POWER_FULL) == ARM_DRIVER_OK) {
315 TEST_FAIL_MESSAGE("[FAILED] SPI driver initialize or power-up. Check driver Initialize and PowerControl functions! Test aborted!");
321 \fn static int32_t BuffersCheck (void)
322 \brief Check if buffers are valid.
323 \return execution status
324 - EXIT_SUCCESS: Buffers are valid
325 - EXIT_FAILURE: Buffers are not valid
327 static int32_t BuffersCheck (void) {
329 if ((ptr_tx_buf != NULL) &&
330 (ptr_rx_buf != NULL) &&
331 (ptr_cmp_buf != NULL)) {
335 TEST_FAIL_MESSAGE("[FAILED] Invalid data buffers! Increase heap memory! Test aborted!");
340 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
343 \fn static int32_t ComConfigDefault (void)
344 \brief Configure SPI Communication Interface to SPI Server default communication configuration.
345 \return execution status
346 - EXIT_SUCCESS: Default configuration set successfully
347 - EXIT_FAILURE: Default configuration failed
349 static int32_t ComConfigDefault (void) {
354 if (drv->Control(ARM_SPI_MODE_MASTER |
355 ((SPI_CFG_SRV_FORMAT << ARM_SPI_FRAME_FORMAT_Pos) & ARM_SPI_FRAME_FORMAT_Msk) |
356 ((SPI_CFG_SRV_DATA_BITS << ARM_SPI_DATA_BITS_Pos) & ARM_SPI_DATA_BITS_Msk) |
357 ((SPI_CFG_SRV_BIT_ORDER << ARM_SPI_BIT_ORDER_Pos) & ARM_SPI_BIT_ORDER_Msk) |
358 ((SPI_CFG_SRV_SS_MODE << ARM_SPI_SS_MASTER_MODE_Pos) & ARM_SPI_SS_MASTER_MODE_Msk) ,
359 SPI_CFG_SRV_BUS_SPEED) != ARM_DRIVER_OK) {
363 if ((ret == EXIT_SUCCESS) && (SPI_CFG_SRV_SS_MODE == SS_MODE_MASTER_SW)) {
364 if (drv->Control(ARM_SPI_CONTROL_SS, ARM_SPI_SS_INACTIVE) != ARM_DRIVER_OK) {
369 if (ret != EXIT_SUCCESS) {
370 TEST_FAIL_MESSAGE("[FAILED] Configure communication interface to SPI Server default settings. Check driver Control function! Test aborted!");
377 \fn static int32_t ComSendCommand (const void *data_out, uint32_t num)
378 \brief Send command to SPI Server.
379 \param[out] data_out Pointer to memory containing data to be sent
380 \param[in] len Number of bytes to be sent
381 \return execution status
382 - EXIT_SUCCESS: Command sent successfully
383 - EXIT_FAILURE: Command send failed
385 static int32_t ComSendCommand (const void *data_out, uint32_t len) {
387 uint32_t flags, num, tout;
390 num = (len + DataBitsToBytes(SPI_CFG_SRV_DATA_BITS) - 1U) / DataBitsToBytes(SPI_CFG_SRV_DATA_BITS);
392 ret = ComConfigDefault();
394 if (ret == EXIT_SUCCESS) {
395 if (SPI_CFG_SRV_SS_MODE == SS_MODE_MASTER_SW) {
396 if (drv->Control(ARM_SPI_CONTROL_SS, ARM_SPI_SS_ACTIVE) != ARM_DRIVER_OK) {
400 if (ret == EXIT_SUCCESS) {
401 (void)osEventFlagsClear(event_flags, 0x7FFFFFFFU);
402 if (drv->Send(data_out, num) == ARM_DRIVER_OK) {
403 flags = osEventFlagsWait(event_flags, ARM_SPI_EVENT_TRANSFER_COMPLETE, osFlagsWaitAny, SPI_CFG_SRV_CMD_TOUT);
404 if (((flags & 0x80000000U) != 0U) ||
405 ((flags & ARM_SPI_EVENT_TRANSFER_COMPLETE) == 0U)) {
407 (void)drv->Control (ARM_SPI_ABORT_TRANSFER, 0U);
411 if (SPI_CFG_SRV_SS_MODE == SS_MODE_MASTER_SW) {
412 if (drv->Control(ARM_SPI_CONTROL_SS, ARM_SPI_SS_INACTIVE) != ARM_DRIVER_OK) {
417 (void)drv->Control(ARM_SPI_MODE_INACTIVE, 0U);
423 \fn static int32_t ComReceiveResponse (void *data_in, uint32_t num)
424 \brief Receive response from SPI Server.
425 \param[out] data_in Pointer to memory where data will be received
426 \param[in] len Number of data bytes to be received
427 \return execution status
428 - EXIT_SUCCESS: Command received successfully
429 - EXIT_FAILURE: Command reception failed
431 static int32_t ComReceiveResponse (void *data_in, uint32_t len) {
433 uint32_t flags, num, tout;
436 num = (len + DataBitsToBytes(SPI_CFG_SRV_DATA_BITS) - 1U) / DataBitsToBytes(SPI_CFG_SRV_DATA_BITS);
438 ret = ComConfigDefault();
440 if (ret == EXIT_SUCCESS) {
441 if (SPI_CFG_SRV_SS_MODE == SS_MODE_MASTER_SW) {
442 if (drv->Control(ARM_SPI_CONTROL_SS, ARM_SPI_SS_ACTIVE) != ARM_DRIVER_OK) {
446 if (ret == EXIT_SUCCESS) {
447 (void)osEventFlagsClear(event_flags, 0x7FFFFFFFU);
448 if (drv->Receive(data_in, num) == ARM_DRIVER_OK) {
449 flags = osEventFlagsWait(event_flags, ARM_SPI_EVENT_TRANSFER_COMPLETE, osFlagsWaitAny, SPI_CFG_SRV_CMD_TOUT);
450 if (((flags & 0x80000000U) != 0U) ||
451 ((flags & ARM_SPI_EVENT_TRANSFER_COMPLETE) == 0U)) {
453 (void)drv->Control (ARM_SPI_ABORT_TRANSFER, 0U);
457 if (SPI_CFG_SRV_SS_MODE == SS_MODE_MASTER_SW) {
458 if (drv->Control(ARM_SPI_CONTROL_SS, ARM_SPI_SS_INACTIVE) != ARM_DRIVER_OK) {
463 (void)drv->Control(ARM_SPI_MODE_INACTIVE, 0U);
469 \fn static int32_t CmdGetVer (void)
470 \brief Get version from SPI Server and check that it is valid.
471 \return execution status
472 - EXIT_SUCCESS: Version retrieved successfully
473 - EXIT_FAILURE: Version retreival failed
475 static int32_t CmdGetVer (void) {
483 memset(&spi_serv_ver, 0, sizeof(spi_serv_ver));
485 // Send "GET VER" command to SPI Server
486 memset(ptr_tx_buf, 0, CMD_LEN);
487 memcpy(ptr_tx_buf, "GET VER", 7);
488 ret = ComSendCommand(ptr_tx_buf, CMD_LEN);
491 if (ret == EXIT_SUCCESS) {
492 // Receive response to "GET VER" command from SPI Server
493 memset(ptr_rx_buf, (int32_t)'?', RESP_GET_VER_LEN);
494 ret = ComReceiveResponse(ptr_rx_buf, RESP_GET_VER_LEN);
499 if (ret == EXIT_SUCCESS) {
501 ptr_str = (const char *)ptr_rx_buf;
502 if (sscanf(ptr_str, "%hhx", &val8) == 1) {
503 spi_serv_ver.major = val8;
508 if ((ret == EXIT_SUCCESS) && (ptr_str != NULL)) {
510 ptr_str = strstr(ptr_str, "."); // Find '.'
511 if (ptr_str != NULL) {
512 ptr_str++; // Skip '.'
513 if (sscanf(ptr_str, "%hhx", &val8) == 1) {
514 spi_serv_ver.minor = val8;
522 if ((ret == EXIT_SUCCESS) && (ptr_str != NULL)) {
523 // Parse patch (revision)
524 ptr_str = strstr(ptr_str, "."); // Find next '.'
525 if (ptr_str != NULL) {
526 ptr_str++; // Skip '.'
527 if (sscanf(ptr_str, "%hx", &val16) == 1) {
528 spi_serv_ver.patch = val16;
541 \fn static int32_t CmdGetCap (void)
542 \brief Get capabilities from SPI Server.
543 \return execution status
544 - EXIT_SUCCESS: Capabilities retrieved successfully
545 - EXIT_FAILURE: Capabilities retreival failed
547 static int32_t CmdGetCap (void) {
555 memset(&spi_serv_cap, 0, sizeof(spi_serv_cap));
557 // Send "GET CAP" command to SPI Server
558 memset(ptr_tx_buf, 0, CMD_LEN);
559 memcpy(ptr_tx_buf, "GET CAP", 7);
560 ret = ComSendCommand(ptr_tx_buf, CMD_LEN);
563 if (ret == EXIT_SUCCESS) {
564 (void)osDelay(20U); // Give SPI Server 20 ms to auto-detect capabilities
566 // Receive response to "GET CAP" command from SPI Server
567 memset(ptr_rx_buf, (int32_t)'?', RESP_GET_CAP_LEN);
568 ret = ComReceiveResponse(ptr_rx_buf, RESP_GET_CAP_LEN);
572 // Parse capabilities
573 if (ret == EXIT_SUCCESS) {
575 ptr_str = (const char *)ptr_rx_buf;
576 if (sscanf(ptr_str, "%hhx", &val8) == 1) {
577 spi_serv_cap.mode_mask = val8;
582 if ((ret == EXIT_SUCCESS) && (ptr_str != NULL)) {
584 ptr_str = strstr(ptr_str, ","); // Find ','
585 if (ptr_str != NULL) {
586 ptr_str++; // Skip ','
587 if (sscanf(ptr_str, "%hhx", &val8) == 1) {
588 spi_serv_cap.fmt_mask = (uint32_t)val8;
596 if ((ret == EXIT_SUCCESS) && (ptr_str != NULL)) {
597 // Parse data bit mask
598 ptr_str = strstr(ptr_str, ","); // Find next ','
599 if (ptr_str != NULL) {
600 ptr_str++; // Skip ','
601 if (sscanf(ptr_str, "%x", &val32) == 1) {
602 spi_serv_cap.db_mask = val32;
610 if ((ret == EXIT_SUCCESS) && (ptr_str != NULL)) {
611 // Parse bit order mask
612 ptr_str = strstr(ptr_str, ","); // Find next ','
613 if (ptr_str != NULL) {
614 ptr_str++; // Skip ','
615 if (sscanf(ptr_str, "%hhx", &val8) == 1) {
616 spi_serv_cap.bo_mask = (uint32_t)val8;
624 if ((ret == EXIT_SUCCESS) && (ptr_str != NULL)) {
625 // Parse minimum bus speed
626 ptr_str = strstr(ptr_str, ","); // Find next ','
627 if (ptr_str != NULL) {
628 ptr_str++; // Skip ','
629 if (sscanf(ptr_str, "%u", &val32) == 1) {
630 spi_serv_cap.bs_min = val32 * 1000U;
638 if ((ret == EXIT_SUCCESS) && (ptr_str != NULL)) {
639 // Parse maximum bus speed
640 ptr_str = strstr(ptr_str, ","); // Find next ','
641 if (ptr_str != NULL) {
642 ptr_str++; // Skip ','
643 if (sscanf(ptr_str, "%u", &val32) == 1) {
644 spi_serv_cap.bs_max = val32 * 1000U;
657 \fn static int32_t CmdSetBufTx (char pattern)
658 \brief Set Tx buffer of SPI Server to pattern.
659 \param[in] pattern Pattern to fill the buffer with
660 \return execution status
661 - EXIT_SUCCESS: Command sent successfully
662 - EXIT_FAILURE: Command send failed
664 static int32_t CmdSetBufTx (char pattern) {
667 // Send "SET BUF TX" command to SPI Server
668 memset(ptr_tx_buf, 0, CMD_LEN);
669 (void)snprintf((char *)ptr_tx_buf, CMD_LEN, "SET BUF TX,0,%02X", (int32_t)pattern);
670 ret = ComSendCommand(ptr_tx_buf, CMD_LEN);
673 if (ret != EXIT_SUCCESS) {
674 TEST_FAIL_MESSAGE("[FAILED] Set Tx buffer on SPI Server. Check SPI Server! Test aborted!");
681 \fn static int32_t CmdSetBufRx (char pattern)
682 \brief Set Rx buffer of SPI Server to pattern.
683 \param[in] pattern Pattern to fill the buffer with
684 \return execution status
685 - EXIT_SUCCESS: Command sent successfully
686 - EXIT_FAILURE: Command send failed
688 static int32_t CmdSetBufRx (char pattern) {
691 // Send "SET BUF RX" command to SPI Server
692 memset(ptr_tx_buf, 0, CMD_LEN);
693 (void)snprintf((char *)ptr_tx_buf, CMD_LEN, "SET BUF RX,0,%02X", (int32_t)pattern);
694 ret = ComSendCommand(ptr_tx_buf, CMD_LEN);
697 if (ret != EXIT_SUCCESS) {
698 TEST_FAIL_MESSAGE("[FAILED] Set Rx buffer on SPI Server. Check SPI Server! Test aborted!");
705 \fn static int32_t CmdGetBufRx (uint32_t len)
706 \brief Get Rx buffer from SPI Server (into global array pointed to by ptr_rx_buf).
707 \param[in] len Number of bytes to read from Rx buffer
708 \return execution status
709 - EXIT_SUCCESS: Command sent and response received successfully
710 - EXIT_FAILURE: Command send or response reception failed
712 static int32_t CmdGetBufRx (uint32_t len) {
715 // Send "GET BUF RX" command to SPI Server
716 memset(ptr_tx_buf, 0, CMD_LEN);
717 (void)snprintf((char *)ptr_tx_buf, CMD_LEN, "GET BUF RX,%i", len);
718 ret = ComSendCommand(ptr_tx_buf, CMD_LEN);
721 if (ret == EXIT_SUCCESS) {
722 // Receive response to "GET BUF RX" command from SPI Server
723 memset(ptr_rx_buf, (int32_t)'?', len);
724 ret = ComReceiveResponse(ptr_rx_buf, len);
728 if (ret != EXIT_SUCCESS) {
729 TEST_FAIL_MESSAGE("[FAILED] Get Rx buffer from SPI Server. Check SPI Server! Test aborted!");
736 \fn static int32_t CmdSetCom (uint32_t mode, uint32_t format, uint32_t data_bits, uint32_t bit_order, uint32_t ss_mode, uint32_t bus_speed)
737 \brief Set communication parameters on SPI Server for next XFER command.
738 \param[in] mode mode (0 = Master, 1 = slave)
739 \param[in] format clock / frame format:
740 - value 0 = clock polarity 0, phase 0
741 - value 1 = clock polarity 0, phase 1
742 - value 2 = clock polarity 1, phase 0
743 - value 3 = clock polarity 1, phase 1
744 - value 4 = Texas Instruments frame format
745 - value 5 = Microwire frame format
746 \param[in] data_bits data bits
748 \param[in] bit_order bit order
749 - value 0 = MSB to LSB
750 - value 1 = LSB to MSB
751 \param[in] ss_mode Slave Select mode:
753 - value 1 = used (in Master mode driven, in Slave mode monitored as hw input)
754 \param[in] bus_speed bus speed in bits per second (bps)
755 \return execution status
756 - EXIT_SUCCESS: Command sent successfully
757 - EXIT_FAILURE: Command send failed
759 static int32_t CmdSetCom (uint32_t mode, uint32_t format, uint32_t data_bits, uint32_t bit_order, uint32_t ss_mode, uint32_t bus_speed) {
762 // Send "SET COM" command to SPI Server
763 memset(ptr_tx_buf, 0, CMD_LEN);
764 stat = snprintf((char *)ptr_tx_buf, CMD_LEN, "SET COM %i,%i,%i,%i,%i,%i", mode, format, data_bits, bit_order, ss_mode, bus_speed);
765 if ((stat > 0) && (stat < CMD_LEN)) {
766 ret = ComSendCommand(ptr_tx_buf, CMD_LEN);
772 if (ret != EXIT_SUCCESS) {
773 TEST_FAIL_MESSAGE("[FAILED] Set communication settings on SPI Server. Check SPI Server! Test aborted!");
780 \fn static int32_t CmdXfer (uint32_t num, uint32_t delay_c, uint32_t delay_t, uint32_t timeout)
781 \brief Activate transfer on SPI Server.
782 \param[in] num number of items (according CMSIS SPI driver specification)
783 \param[in] delay_c delay before control function is called, in milliseconds
784 (0xFFFFFFFF = delay not used)
785 \param[in] delay_t delay after control function is called but before transfer function is called, in milliseconds
786 (0xFFFFFFFF = delay not used)
787 \param[in] timeout timeout in milliseconds, after delay, if delay is specified
788 \return execution status
789 - EXIT_SUCCESS: Command sent successfully
790 - EXIT_FAILURE: Command send failed
792 static int32_t CmdXfer (uint32_t num, uint32_t delay_c, uint32_t delay_t, uint32_t timeout) {
795 // Send "XFER" command to SPI Server
796 memset(ptr_tx_buf, 0, CMD_LEN);
797 if ((delay_c != osWaitForever) && (delay_t != osWaitForever) && (timeout != 0U)) {
798 (void)snprintf((char *)ptr_tx_buf, CMD_LEN, "XFER %i,%i,%i,%i", num, delay_c, delay_t, timeout);
799 } else if ((delay_c != osWaitForever) && (delay_t != osWaitForever)) {
800 (void)snprintf((char *)ptr_tx_buf, CMD_LEN, "XFER %i,%i,%i", num, delay_c, delay_t);
801 } else if (delay_c != osWaitForever) {
802 (void)snprintf((char *)ptr_tx_buf, CMD_LEN, "XFER %i,%i", num, delay_c);
804 (void)snprintf((char *)ptr_tx_buf, CMD_LEN, "XFER %i", num);
806 ret = ComSendCommand(ptr_tx_buf, CMD_LEN);
808 if (ret != EXIT_SUCCESS) {
809 TEST_FAIL_MESSAGE("[FAILED] Activate transfer on SPI Server. Check SPI Server! Test aborted!");
816 \fn static int32_t CmdGetCnt (void)
817 \brief Get XFER command Tx/Rx count from SPI Server.
818 \return execution status
819 - EXIT_SUCCESS: Operation successful
820 - EXIT_FAILURE: Operation failed
822 static int32_t CmdGetCnt (void) {
829 // Send "GET CNT" command to SPI Server
830 memset(ptr_tx_buf, 0, CMD_LEN);
831 memcpy(ptr_tx_buf, "GET CNT", 7);
832 ret = ComSendCommand(ptr_tx_buf, CMD_LEN);
835 if (ret == EXIT_SUCCESS) {
836 // Receive response to "GET CNT" command from SPI Server
837 memset(ptr_rx_buf, (int32_t)'?', RESP_GET_CNT_LEN);
838 ret = ComReceiveResponse(ptr_rx_buf, RESP_GET_CNT_LEN);
842 if (ret == EXIT_SUCCESS) {
844 ptr_str = (const char *)ptr_rx_buf;
845 if (sscanf(ptr_str, "%i", &val32) == 1) {
852 if (ret != EXIT_SUCCESS) {
853 TEST_FAIL_MESSAGE("[FAILED] Get count from SPI Server. Check SPI Server! Test aborted!");
860 \fn static int32_t ServerInit (void)
861 \brief Initialize communication with SPI Server, get version and capabilities.
862 \return execution status
863 - EXIT_SUCCESS: SPI Server initialized successfully
864 - EXIT_FAILURE: SPI Server initialization failed
866 static int32_t ServerInit (void) {
868 if (server_ok == -1) { // If -1, means it was not yet checked
871 if (drv->Control(ARM_SPI_MODE_MASTER |
872 ((SPI_CFG_SRV_FORMAT << ARM_SPI_FRAME_FORMAT_Pos) & ARM_SPI_FRAME_FORMAT_Msk) |
873 ((SPI_CFG_SRV_DATA_BITS << ARM_SPI_DATA_BITS_Pos) & ARM_SPI_DATA_BITS_Msk) |
874 ((SPI_CFG_SRV_BIT_ORDER << ARM_SPI_BIT_ORDER_Pos) & ARM_SPI_BIT_ORDER_Msk) |
875 ((SPI_CFG_SRV_SS_MODE << ARM_SPI_SS_MASTER_MODE_Pos) & ARM_SPI_SS_MASTER_MODE_Msk) ,
876 SPI_CFG_SRV_BUS_SPEED) != ARM_DRIVER_OK) {
879 if ((server_ok == 1) && (SPI_CFG_SRV_SS_MODE == SS_MODE_MASTER_SW)) {
880 if (drv->Control(ARM_SPI_CONTROL_SS, ARM_SPI_SS_INACTIVE) != ARM_DRIVER_OK) {
884 if (server_ok == 0) {
885 TEST_GROUP_INFO("Failed to configure communication interface to SPI Server default settings.\n"\
886 "Driver must support basic settings used for communication with SPI Server!");
889 if (server_ok == 1) {
891 if (CmdGetVer() != EXIT_SUCCESS) {
892 TEST_GROUP_INFO("Failed to Get version from SPI Server.\nCheck SPI Server!\n");
897 if (server_ok == 1) {
898 if ((spi_serv_ver.major <= 1U) && (spi_serv_ver.minor < 1U)) {
899 TEST_GROUP_INFO("SPI Server version must be 1.1.0. or higher.\nUpdate SPI Server to newer version!\n");
904 if (server_ok == 1) {
905 if (CmdGetCap() != EXIT_SUCCESS) {
906 TEST_GROUP_INFO("Failed to Get capabilities from SPI Server.\nCheck SPI Server!\n");
912 if (server_ok == 1) {
920 \fn static int32_t ServerCheck (void)
921 \brief Check if communication with SPI Server is working.
922 \return execution status
923 - EXIT_SUCCESS: If SPI Server status is ok
924 - EXIT_FAILURE: If SPI Server status is fail
926 static int32_t ServerCheck (void) {
928 if (server_ok == 1) {
932 TEST_FAIL_MESSAGE("[FAILED] SPI Server status. Check SPI Server! Test aborted!");
937 \fn static int32_t ServerCheckSupport (uint32_t mode, uint32_t format, uint32_t data_bits, uint32_t bit_order, uint32_t bus_speed)
938 \brief Check if SPI Server supports desired settings.
939 \param[in] mode mode (0 = Master, 1 = slave)
940 \param[in] format clock / frame format:
941 - value 0 = clock polarity 0, phase 0
942 - value 1 = clock polarity 0, phase 1
943 - value 2 = clock polarity 1, phase 0
944 - value 3 = clock polarity 1, phase 1
945 - value 4 = Texas Instruments frame format
946 - value 5 = Microwire frame format
947 \param[in] data_bits data bits
949 \param[in] bit_order bit order
950 - value 0 = MSB to LSB
951 - value 1 = LSB to MSB
952 \param[in] bus_speed bus speed in bits per second (bps)
953 \return execution status
954 - EXIT_SUCCESS: SPI Server supports desired settings
955 - EXIT_FAILURE: SPI Server does not support desired settings
957 static int32_t ServerCheckSupport (uint32_t mode, uint32_t format, uint32_t data_bits, uint32_t bit_order, uint32_t bus_speed) {
959 if ((spi_serv_cap.mode_mask & (1UL << (mode - 1U))) == 0U) {
960 // If SPI Server does not support desired mode
961 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] SPI Server does not support %s mode! Test aborted!", str_mode[mode - 1U]);
962 TEST_MESSAGE(msg_buf);
965 if ((spi_serv_cap.fmt_mask & (1UL << format)) == 0U) {
966 // If SPI Server does not support desired clock / frame format
967 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] SPI Server does not support %s clock / frame format! Test aborted!", str_format[format]);
968 TEST_MESSAGE(msg_buf);
971 if ((spi_serv_cap.db_mask & (1UL << (data_bits - 1U))) == 0U) {
972 // If SPI Server does not support desired data bits
973 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] SPI Server does not support %i data bits! Test aborted!", data_bits);
974 TEST_MESSAGE(msg_buf);
977 if ((spi_serv_cap.bo_mask & (1UL << bit_order)) == 0U) {
978 // If SPI Server does not support desired bit order
979 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] SPI Server does not support %s bit order! Test aborted!", str_bit_order[bit_order]);
980 TEST_MESSAGE(msg_buf);
983 if ((spi_serv_cap.bs_min > bus_speed) ||
984 (spi_serv_cap.bs_max < bus_speed)) {
985 // If SPI Server does not support desired bus speed
986 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] SPI Server does not support %i bps bus speed! Test aborted!", bus_speed);
987 TEST_MESSAGE(msg_buf);
994 #endif // If Test Mode SPI Server is selected
997 \fn static int32_t IsNotLoopback (void)
998 \brief Check if loopback is not selected.
999 \detail This function is used to skip executing a test if it is not supported
1001 \return execution status
1002 - EXIT_SUCCESS: Loopback is not selected
1003 - EXIT_FAILURE: Loopback is selected
1005 static int32_t IsNotLoopback (void) {
1007 #if (SPI_SERVER_USED == 1)
1008 return EXIT_SUCCESS;
1010 TEST_MESSAGE("[WARNING] Test not supported in Loopback Test Mode! Test not executed!");
1011 return EXIT_FAILURE;
1016 \fn static int32_t IsNotFrameTI (void)
1017 \brief Check if Default Clock / Frame Format selected is not Texas Instruments.
1018 \detail This function is used to skip executing a test if it is not supported
1019 for Texas Instruments Frame Format.
1020 \return execution status
1021 - EXIT_SUCCESS: Texas Instruments Frame Format is not selected
1022 - EXIT_FAILURE: Texas Instruments Frame Format is selected
1024 static int32_t IsNotFrameTI (void) {
1026 #if (SPI_CFG_DEF_FORMAT != FORMAT_TI)
1027 return EXIT_SUCCESS;
1029 TEST_MESSAGE("[WARNING] Test not supported for Texas Instruments Frame Format! Test not executed!");
1030 return EXIT_FAILURE;
1035 \fn static int32_t IsNotFrameMw (void)
1036 \brief Check if Default Clock / Frame Format selected is not National Semiconductor Microwire.
1037 \detail This function is used to skip executing a test if it is not supported
1038 for National Semiconductor Microwire Frame Format.
1039 \return execution status
1040 - EXIT_SUCCESS: National Semiconductor Microwire Frame Format is not selected
1041 - EXIT_FAILURE: National Semiconductor Microwire Frame Format is selected
1043 static int32_t IsNotFrameMw (void) {
1045 #if (SPI_CFG_DEF_FORMAT != FORMAT_MICROWIRE)
1046 return EXIT_SUCCESS;
1048 TEST_MESSAGE("[WARNING] Test not supported for National Semiconductor Microwire Frame Format! Test not executed!");
1049 return EXIT_FAILURE;
1054 \fn static int32_t IsFormatValid (void)
1055 \brief Check if default format settings are valid.
1056 \detail This function is used to abort executing a test if Default settings
1057 specify TI or Microwire Frame Format and Slave Select handling
1058 other than Hardware controlled.
1059 \return execution status
1060 - EXIT_SUCCESS: Format is valid
1061 - EXIT_FAILURE: Format is not valid
1063 static int32_t IsFormatValid (void) {
1065 #if ((SPI_CFG_DEF_FORMAT == FORMAT_TI) && (SPI_CFG_DEF_SS_MODE != SS_MODE_MASTER_HW_OUTPUT))
1066 TEST_MESSAGE("[WARNING] TI Frame Format works only with Hardware controlled Slave Select! Test not executed!");
1067 return EXIT_FAILURE;
1068 #elif ((SPI_CFG_DEF_FORMAT == FORMAT_MICROWIRE) && (SPI_CFG_DEF_SS_MODE != SS_MODE_MASTER_HW_OUTPUT))
1069 TEST_MESSAGE("[WARNING] Microwire Frame Format works only with Hardware controlled Slave Select! Test not executed!");
1070 return EXIT_FAILURE;
1072 return EXIT_SUCCESS;
1077 \fn static int32_t IsBitOrderValid (void)
1078 \brief Check if default bit order settings valid.
1079 \detail This function is used to abort executing a test if Default settings
1080 specify TI or Microwire Frame Format and bit order is not MSB to LSB.
1081 \return execution status
1082 - EXIT_SUCCESS: bit order
1083 - EXIT_FAILURE: bit order
1085 static int32_t IsBitOrderValid (void) {
1087 #if ((SPI_CFG_DEF_FORMAT == FORMAT_TI) && (SPI_CFG_DEF_BIT_ORDER != BO_MSB_TO_LSB))
1088 TEST_MESSAGE("[WARNING] TI Frame Format works only with MSB to LSB bit order! Test not executed!");
1089 return EXIT_FAILURE;
1090 #elif ((SPI_CFG_DEF_FORMAT == FORMAT_MICROWIRE) && (SPI_CFG_DEF_BIT_ORDER != BO_MSB_TO_LSB))
1091 TEST_MESSAGE("[WARNING] Microwire Frame Format works only with MSB to LSB bit order! Test not executed!");
1092 return EXIT_FAILURE;
1094 return EXIT_SUCCESS;
1099 \fn void SPI_DV_Initialize (void)
1100 \brief Initialize testing environment for SPI testing.
1101 \detail This function is called by the driver validation framework before SPI testing begins.
1102 It initializes global variables and allocates memory buffers (from heap) used for the SPI testing.
1105 void SPI_DV_Initialize (void) {
1107 // Initialize global variables
1112 duration = 0xFFFFFFFFUL;
1113 systick_freq = osKernelGetSysTimerFreq();
1115 memset(&spi_serv_cap, 0, sizeof(spi_serv_cap));
1116 memset(&msg_buf, 0, sizeof(msg_buf));
1118 // Allocate buffers for transmission, reception and comparison
1119 // (maximum size is incremented by 4 bytes to ensure that buffer can be aligned to 4 bytes)
1121 ptr_tx_buf_alloc = malloc(SPI_BUF_MAX + 4U);
1122 if (((uint32_t)ptr_tx_buf_alloc & 3U) != 0U) {
1123 // If allocated memory is not 4 byte aligned, use next 4 byte aligned address for ptr_tx_buf
1124 ptr_tx_buf = (uint8_t *)((((uint32_t)ptr_tx_buf_alloc) + 3U) & (~3U));
1126 // If allocated memory is 4 byte aligned, use it directly
1127 ptr_tx_buf = (uint8_t *)ptr_tx_buf_alloc;
1129 ptr_rx_buf_alloc = malloc(SPI_BUF_MAX + 4U);
1130 if (((uint32_t)ptr_rx_buf_alloc & 3U) != 0U) {
1131 ptr_rx_buf = (uint8_t *)((((uint32_t)ptr_rx_buf_alloc) + 3U) & (~3U));
1133 ptr_rx_buf = (uint8_t *)ptr_rx_buf_alloc;
1135 ptr_cmp_buf_alloc = malloc(SPI_BUF_MAX + 4U);
1136 if (((uint32_t)ptr_cmp_buf_alloc & 3U) != 0U) {
1137 ptr_cmp_buf = (uint8_t *)((((uint32_t)ptr_cmp_buf_alloc) + 3U) & (~3U));
1139 ptr_cmp_buf = (uint8_t *)ptr_cmp_buf_alloc;
1142 event_flags = osEventFlagsNew(NULL);
1144 // Output configuration settings
1145 (void)snprintf(msg_buf,
1148 "Default settings:\n"\
1149 " - Slave Select: %s\n"\
1151 " - Data bits: %i\n"\
1152 " - Bit order: %s\n"\
1153 " - Bus speed: %i bps\n"\
1154 " - Number of Items: %i",
1155 str_test_mode[SPI_CFG_TEST_MODE],
1156 str_ss_mode [SPI_CFG_DEF_SS_MODE],
1157 str_format [SPI_CFG_DEF_FORMAT],
1158 SPI_CFG_DEF_DATA_BITS,
1159 str_bit_order[SPI_CFG_DEF_BIT_ORDER],
1160 SPI_CFG_DEF_BUS_SPEED,
1162 TEST_GROUP_INFO(msg_buf);
1164 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
1165 // Test communication with SPI Server
1166 int32_t server_status;
1169 // Test communication with SPI Server
1170 if (drv->Initialize (SPI_DrvEvent) == ARM_DRIVER_OK) {
1171 if (drv->PowerControl(ARM_POWER_FULL) == ARM_DRIVER_OK) {
1172 server_status = ServerInit();
1175 (void)drv->PowerControl(ARM_POWER_OFF);
1176 (void)drv->Uninitialize();
1178 //(void)snprintf(msg_buf, sizeof(msg_buf), "Server status: %s\n", str_srv_status[server_status]);
1179 //TEST_GROUP_INFO(msg_buf);
1184 \fn void SPI_DV_Uninitialize (void)
1185 \brief De-initialize testing environment after SPI testing.
1186 \detail This function is called by the driver validation framework after SPI testing is finished.
1187 It frees memory buffers used for the SPI testing.
1190 void SPI_DV_Uninitialize (void) {
1192 (void)osEventFlagsDelete(event_flags);
1194 if (ptr_tx_buf_alloc != NULL) {
1195 free(ptr_tx_buf_alloc);
1197 ptr_tx_buf_alloc = NULL;
1199 if (ptr_rx_buf_alloc != NULL) {
1200 free(ptr_rx_buf_alloc);
1202 ptr_rx_buf_alloc = NULL;
1204 if (ptr_cmp_buf_alloc != NULL) {
1205 free(ptr_cmp_buf_alloc);
1207 ptr_cmp_buf_alloc = NULL;
1211 #endif // End of exclude form the documentation
1213 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1215 \defgroup dv_spi SPI Validation
1216 \brief SPI driver validation
1218 The SPI validation performs the following tests:
1219 - API interface compliance
1220 - Data exchange with various speeds, transfer sizes and communication settings
1223 Two Test Modes are available: <b>Loopback</b> and <b>SPI Server</b>.
1225 Test Mode : <b>Loopback</b>
1226 ---------------------------
1228 This test mode allows only limited validation of the SPI Driver.<br>
1229 It is recommended that this test mode is used only as a proof that driver is
1230 good enough to be tested with the <b>SPI Server</b>.
1232 For this purpose following <b>Default settings</b> should be used:
1233 - Slave Select: Not used
1234 - Clock / Frame Format: Clock Polarity 0, Clock Phase 0
1236 - Bit Order: MSB to LSB
1237 - Bus Speed: same as setting for the SPI Server
1238 - Number of Items: 32
1240 To enable this mode of testing in the <b>DV_SPI_Config.h</b> configuration file select the
1241 <b>Configuration: Test Mode: Loopback</b> setting.
1243 Required pin connection for the <b>Loopback</b> test mode:
1245 \image html spi_loopback_pin_connections.png
1247 \note In this mode following operations / settings cannot be tested:
1249 - Slave Select line functionality
1250 - operation of the Receive function
1251 - data content sent by the Send function
1252 - clock / frame format and bit order settings
1253 - data bit settings other then: 8, 16, 24 and 32
1256 Test Mode : <b>SPI Server</b>
1257 -----------------------------
1259 This test mode allows extensive validation of the SPI Driver.<br>
1260 Results of the Driver Validation in this test mode are relevant as a proof of driver compliance
1261 to the CMSIS-Driver specification.
1263 To perform extensive communication tests, it is required to use an
1264 \ref spi_server "SPI Server" running on a dedicated hardware.
1266 To enable this mode of testing in the <b>DV_SPI_Config.h</b> configuration file select the
1267 <b>Configuration: Test Mode: SPI Server</b> setting.
1269 Required pin connections for the <b>SPI Server</b> test mode:
1271 \image html spi_server_pin_connections.png
1273 \note Slave Select line has to be pulled to Vcc by an external pull-up (for example 10 kOhm).
1274 \note To ensure proper signal quality:
1275 - keep the connecting wires as short as possible
1276 - if possible have SCK and GND wires as a twisted pair and MISO, MOSI and Slave Select
1277 wires separate from each other
1278 - ensure a good Ground (GND) connection between SPI Server and DUT
1279 \note If you experience issues with corrupt data content try reducing bus speed.
1282 \defgroup spi_tests Tests
1286 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1287 /* SPI Driver Management tests */
1288 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1290 \defgroup spi_tests_drv_mgmt Driver Management
1293 These tests verify API and operation of the SPI driver management functions.
1295 The driver management tests verify the following driver functions
1296 (<a href="http://www.keil.com/pack/doc/CMSIS/Driver/html/group__spi__interface__gr.html" target="_blank">SPI Driver function documentation</a>):
1299 ARM_DRIVER_VERSION GetVersion (void);
1301 - \b GetCapabilities
1303 ARM_SPI_CAPABILITIES GetCapabilities (void);
1307 int32_t Initialize (ARM_SPI_SignalEvent_t cb_event);
1311 int32_t Uninitialize (void);
1315 int32_t PowerControl (ARM_POWER_STATE state);
1321 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1323 \brief Function: Function SPI_GetVersion
1325 The function \b SPI_GetVersion verifies the \b GetVersion function.
1327 ARM_DRIVER_VERSION GetVersion (void);
1331 - Driver is uninitialized and peripheral is powered-off:
1332 - Call GetVersion function
1333 - Assert that GetVersion function returned version structure with API and implementation versions higher or equal to 1.0
1335 void SPI_GetVersion (void) {
1336 ARM_DRIVER_VERSION ver;
1338 ver = drv->GetVersion();
1340 // Assert that GetVersion function returned version structure with API and implementation versions higher or equal to 1.0
1341 TEST_ASSERT((ver.api >= ARM_DRIVER_VERSION_MAJOR_MINOR(1UL,0UL)) && (ver.drv >= ARM_DRIVER_VERSION_MAJOR_MINOR(1UL,0UL)));
1343 (void)snprintf(msg_buf, sizeof(msg_buf), "[INFO] Driver API version %d.%d, Driver version %d.%d", (ver.api >> 8), (ver.api & 0xFFU), (ver.drv >> 8), (ver.drv & 0xFFU));
1344 TEST_MESSAGE(msg_buf);
1347 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1349 \brief Function: Function SPI_GetCapabilities
1351 The function \b SPI_GetCapabilities verifies the \b GetCapabilities function.
1353 ARM_SPI_CAPABILITIES GetCapabilities (void);
1357 - Driver is uninitialized and peripheral is powered-off:
1358 - Call GetCapabilities function
1359 - Assert that GetCapabilities function returned capabilities structure with reserved field 0
1361 void SPI_GetCapabilities (void) {
1362 ARM_SPI_CAPABILITIES cap;
1364 cap = drv->GetCapabilities();
1366 // Assert that GetCapabilities function returned capabilities structure with reserved field 0
1367 TEST_ASSERT_MESSAGE((cap.reserved == 0U), "[FAILED] Capabilities reserved field must be 0");
1370 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1372 \brief Function: Function SPI_Initialize_Uninitialize
1374 The function \b SPI_Initialize_Uninitialize verifies the \b Initialize and \b Uninitialize functions.
1376 int32_t Initialize (ARM_SPI_SignalEvent_t cb_event);
1379 int32_t Uninitialize (void);
1383 - Driver is uninitialized and peripheral is powered-off:
1384 - Call PowerControl(ARM_POWER_FULL) function and assert that it returned ARM_DRIVER_ERROR status
1385 - Call PowerControl(ARM_POWER_LOW) function and assert that it returned ARM_DRIVER_ERROR status
1386 - Call PowerControl(ARM_POWER_OFF) function and assert that it returned ARM_DRIVER_ERROR status
1387 - Call Send function and assert that it returned ARM_DRIVER_ERROR status
1388 - Call Receive function and assert that it returned ARM_DRIVER_ERROR status
1389 - Call Transfer function and assert that it returned ARM_DRIVER_ERROR status
1390 - Call GetDataCount function and assert that it returned 0
1391 - Call Control function and assert that it returned ARM_DRIVER_ERROR status
1392 - Call GetStatus function
1393 - Assert that GetStatus function returned status structure with busy flag 0
1394 - Assert that GetStatus function returned status structure with data_lost flag 0
1395 - Assert that GetStatus function returned status structure with mode_fault flag 0
1396 - Assert that GetStatus function returned status structure with reserved field 0
1397 - Call Initialize function (without callback specified) and assert that it returned ARM_DRIVER_OK status
1398 - Driver is initialized and peripheral is powered-off:
1399 - Call Initialize function (without callback specified) again and assert that it returned ARM_DRIVER_OK status
1400 - Call Uninitialize function and assert that it returned ARM_DRIVER_OK status
1401 - Driver is uninitialized and peripheral is powered-off:
1402 - Call Initialize function (with callback specified) and assert that it returned ARM_DRIVER_OK status
1403 - Driver is initialized and peripheral is powered-off:
1404 - Call Initialize function (with callback specified) again and assert that it returned ARM_DRIVER_OK status
1405 - Call Uninitialize function and assert that it returned ARM_DRIVER_OK status
1406 - Driver is uninitialized and peripheral is powered-off:
1407 - Call Uninitialize function again and assert that it returned ARM_DRIVER_OK status
1408 - Call Initialize function (without callback specified) and assert that it returned ARM_DRIVER_OK status
1409 - Driver is initialized and peripheral is powered-off:
1410 - Call PowerControl(ARM_POWER_FULL) function and assert that it returned ARM_DRIVER_OK status
1411 - Driver is initialized and peripheral is powered-on:
1412 - Call Control function and assert that it returned ARM_DRIVER_OK status
1413 - Call Transfer function and assert that it returned ARM_DRIVER_OK status
1414 - Call GetStatus function
1415 - Assert that GetStatus function returned status structure with busy flag 1
1416 - Call Uninitialize function with transfer active and assert that it returned ARM_DRIVER_OK status<br>
1417 (this must unconditionally terminate active transfer, power-off the peripheral and uninitialize the driver)
1418 - Driver is uninitialized and peripheral is powered-off:
1419 - Call GetStatus function
1420 - Assert that GetStatus function returned status structure with busy flag 0
1422 void SPI_Initialize_Uninitialize (void) {
1423 ARM_SPI_STATUS stat;
1425 // Driver is uninitialized and peripheral is powered-off:
1426 // Call PowerControl(ARM_POWER_FULL) function and assert that it returned ARM_DRIVER_ERROR status
1427 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_ERROR);
1429 // Call PowerControl(ARM_POWER_LOW) function and assert that it returned ARM_DRIVER_ERROR status
1430 TEST_ASSERT(drv->PowerControl (ARM_POWER_LOW) == ARM_DRIVER_ERROR);
1432 // Call PowerControl(ARM_POWER_OFF) function and assert that it returned ARM_DRIVER_ERROR status
1433 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_ERROR);
1435 // Call Send function and assert that it returned ARM_DRIVER_ERROR status
1436 TEST_ASSERT(drv->Send (ptr_tx_buf, SPI_CFG_DEF_NUM) == ARM_DRIVER_ERROR);
1438 // Call Receive function and assert that it returned ARM_DRIVER_ERROR status
1439 TEST_ASSERT(drv->Receive (ptr_rx_buf, SPI_CFG_DEF_NUM) == ARM_DRIVER_ERROR);
1441 // Call Transfer function and assert that it returned ARM_DRIVER_ERROR status
1442 TEST_ASSERT(drv->Transfer (ptr_tx_buf, ptr_rx_buf, SPI_CFG_DEF_NUM) == ARM_DRIVER_ERROR);
1444 // Call GetDataCount function and assert that it returned 0
1445 TEST_ASSERT(drv->GetDataCount () == 0U);
1447 // Call Control function and assert that it returned ARM_DRIVER_ERROR status
1448 TEST_ASSERT(drv->Control (ARM_SPI_MODE_MASTER | ARM_SPI_DATA_BITS(SPI_CFG_DEF_DATA_BITS), SPI_CFG_DEF_BUS_SPEED) == ARM_DRIVER_ERROR);
1450 // Call GetStatus function
1451 stat = drv->GetStatus();
1453 // Assert that GetStatus function returned status structure with busy flag 0
1454 TEST_ASSERT(stat.busy == 0U);
1456 // Assert that GetStatus function returned status structure with data_lost flag 0
1457 TEST_ASSERT(stat.data_lost == 0U);
1459 // Assert that GetStatus function returned status structure with mode_fault flag 0
1460 TEST_ASSERT(stat.mode_fault == 0U);
1462 // Assert that GetStatus function returned status structure with reserved field 0
1463 TEST_ASSERT(stat.reserved == 0U);
1465 // Call Initialize function (without callback specified) and assert that it returned ARM_DRIVER_OK status
1466 TEST_ASSERT(drv->Initialize (NULL) == ARM_DRIVER_OK);
1468 // Driver is initialized and peripheral is powered-off:
1469 // Call Initialize function (without callback specified) again and assert that it returned ARM_DRIVER_OK status
1470 TEST_ASSERT(drv->Initialize (NULL) == ARM_DRIVER_OK);
1472 // Call Uninitialize function and assert that it returned ARM_DRIVER_OK status
1473 TEST_ASSERT(drv->Uninitialize () == ARM_DRIVER_OK);
1475 // Driver is uninitialized and peripheral is powered-off:
1476 // Call Initialize function (with callback specified) and assert that it returned ARM_DRIVER_OK status
1477 TEST_ASSERT(drv->Initialize (SPI_DrvEvent) == ARM_DRIVER_OK);
1479 // Driver is initialized and peripheral is powered-off:
1480 // Call Initialize function (with callback specified) again and assert that it returned ARM_DRIVER_OK status
1481 TEST_ASSERT(drv->Initialize (SPI_DrvEvent) == ARM_DRIVER_OK);
1483 // Call Uninitialize function and assert that it returned ARM_DRIVER_OK status
1484 TEST_ASSERT(drv->Uninitialize () == ARM_DRIVER_OK);
1486 // Driver is uninitialized and peripheral is powered-off:
1487 // Call Uninitialize function again and assert that it returned ARM_DRIVER_OK status
1488 TEST_ASSERT(drv->Uninitialize () == ARM_DRIVER_OK);
1490 // Call Initialize function (without callback specified) and assert that it returned ARM_DRIVER_OK status
1491 TEST_ASSERT(drv->Initialize (NULL) == ARM_DRIVER_OK);
1493 // Driver is initialized and peripheral is powered-off:
1494 // Call PowerControl(ARM_POWER_FULL) function and assert that it returned ARM_DRIVER_OK status
1495 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);
1497 // Driver is initialized and peripheral is powered-on:
1498 // Call Control function and assert that it returned ARM_DRIVER_OK status
1499 TEST_ASSERT(drv->Control (ARM_SPI_MODE_MASTER | ARM_SPI_DATA_BITS(SPI_CFG_DEF_DATA_BITS), SPI_CFG_DEF_BUS_SPEED) == ARM_DRIVER_OK);
1501 // Call Transfer function and assert that it returned ARM_DRIVER_OK status
1502 TEST_ASSERT(drv->Transfer (ptr_tx_buf, ptr_rx_buf, SPI_CFG_DEF_NUM) == ARM_DRIVER_OK);
1504 // Call GetStatus function
1505 stat = drv->GetStatus();
1507 // Assert that GetStatus function returned status structure with busy flag 1
1508 TEST_ASSERT(stat.busy == 1U);
1510 // Call Uninitialize function and assert that it returned ARM_DRIVER_OK status
1511 // (this must unconditionally terminate active transfer, power-off the peripheral and uninitialize the driver)
1512 TEST_ASSERT(drv->Uninitialize () == ARM_DRIVER_OK);
1514 // Driver is uninitialized and peripheral is powered-off:
1515 // Call GetStatus function
1516 stat = drv->GetStatus();
1518 // Assert that GetStatus function returned status structure with busy flag 0
1519 TEST_ASSERT(stat.busy == 0U);
1521 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
1522 // Ensure that SPI Server (if used) is ready for command reception
1527 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1529 \brief Function: Function SPI_PowerControl
1531 The function \b SPI_PowerControl verifies the \b PowerControl function.
1533 int32_t PowerControl (ARM_POWER_STATE state);
1537 - Driver is initialized and peripheral is powered-off:
1538 - Call Send function and assert that it returned ARM_DRIVER_ERROR status
1539 - Call Receive function and assert that it returned ARM_DRIVER_ERROR status
1540 - Call Transfer function and assert that it returned ARM_DRIVER_ERROR status
1541 - Call GetDataCount function and assert that it returned 0
1542 - Call Control function and assert that it returned ARM_DRIVER_ERROR status
1543 - Call GetStatus function
1544 - Assert that GetStatus function returned status structure with busy flag 0
1545 - Assert that GetStatus function returned status structure with data_lost flag 0
1546 - Assert that GetStatus function returned status structure with mode_fault flag 0
1547 - Assert that GetStatus function returned status structure with reserved field 0
1548 - Call PowerControl(ARM_POWER_OFF) and assert that it returned ARM_DRIVER_OK status
1549 - Call PowerControl(ARM_POWER_OFF) again and assert that it returned ARM_DRIVER_OK status
1550 - Call PowerControl(ARM_POWER_FULL) function and assert that it returned ARM_DRIVER_OK status
1551 - Driver is initialized and peripheral is powered-on:
1552 - Call PowerControl(ARM_POWER_FULL) function again and assert that it returned ARM_DRIVER_OK status
1553 - Call PowerControl(ARM_POWER_OFF) and assert that it returned ARM_DRIVER_OK status
1554 - Driver is initialized and peripheral is powered-off:
1555 - Call PowerControl(ARM_POWER_OFF) again and assert that it returned ARM_DRIVER_OK status
1556 - Call PowerControl(ARM_POWER_LOW) function
1557 - Driver is initialized and peripheral is powered-on or in low-power mode:
1558 - Assert that PowerControl(ARM_POWER_LOW) function returned ARM_DRIVER_OK or ARM_DRIVER_ERROR_UNSUPPORTED status
1559 - Call PowerControl(ARM_POWER_FULL) function and assert that it returned ARM_DRIVER_OK status
1560 - Driver is initialized and peripheral is powered-on:
1561 - Call Control function and assert that it returned ARM_DRIVER_OK status
1562 - Call Transfer function and assert that it returned ARM_DRIVER_OK status
1563 - Call GetStatus function
1564 - Assert that GetStatus function returned status structure with busy flag 1
1565 - Call PowerControl(ARM_POWER_OFF) function with transfer active and assert that it returned ARM_DRIVER_OK status<br>
1566 (this must unconditionally terminate active transfer and power-off the peripheral)
1567 - Driver is initialized and peripheral is powered-off:
1568 - Call GetStatus function
1569 - Assert that GetStatus function returned status structure with busy flag 0
1571 void SPI_PowerControl (void) {
1573 ARM_SPI_STATUS stat;
1575 (void)drv->Initialize (NULL);
1577 // Driver is initialized and peripheral is powered-off:
1578 // Call Send function and assert that it returned ARM_DRIVER_ERROR status
1579 TEST_ASSERT(drv->Send (ptr_tx_buf, SPI_CFG_DEF_NUM) == ARM_DRIVER_ERROR);
1581 // Call Receive function and assert that it returned ARM_DRIVER_ERROR status
1582 TEST_ASSERT(drv->Receive (ptr_rx_buf, SPI_CFG_DEF_NUM) == ARM_DRIVER_ERROR);
1584 // Call Transfer function and assert that it returned ARM_DRIVER_ERROR status
1585 TEST_ASSERT(drv->Transfer (ptr_tx_buf, ptr_rx_buf, SPI_CFG_DEF_NUM) == ARM_DRIVER_ERROR);
1587 // Call GetDataCount function and assert that it returned 0
1588 TEST_ASSERT(drv->GetDataCount () == 0U);
1590 // Call Control function and assert that it returned ARM_DRIVER_ERROR status
1591 TEST_ASSERT(drv->Control (ARM_SPI_MODE_MASTER | ARM_SPI_DATA_BITS(SPI_CFG_DEF_DATA_BITS), SPI_CFG_DEF_BUS_SPEED) == ARM_DRIVER_ERROR);
1593 // Call GetStatus function
1594 stat = drv->GetStatus();
1596 // Assert that GetStatus function returned status structure with busy flag 0
1597 TEST_ASSERT(stat.busy == 0U);
1599 // Assert that GetStatus function returned status structure with data_lost flag 0
1600 TEST_ASSERT(stat.data_lost == 0U);
1602 // Assert that GetStatus function returned status structure with mode_fault flag 0
1603 TEST_ASSERT(stat.mode_fault == 0U);
1605 // Assert that GetStatus function returned status structure with reserved field 0
1606 TEST_ASSERT(stat.reserved == 0U);
1608 // Call PowerControl(ARM_POWER_OFF) and assert that it returned ARM_DRIVER_OK status
1609 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
1611 // Call PowerControl(ARM_POWER_OFF) again and assert that it returned ARM_DRIVER_OK status
1612 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
1614 // Call PowerControl(ARM_POWER_FULL) function and assert that it returned ARM_DRIVER_OK status
1615 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);
1617 // Driver is initialized and peripheral is powered-on:
1618 // Call PowerControl(ARM_POWER_FULL) function again and assert that it returned ARM_DRIVER_OK status
1619 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);
1621 // Call PowerControl(ARM_POWER_OFF) and assert that it returned ARM_DRIVER_OK status
1622 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
1624 // Driver is initialized and peripheral is powered-off:
1625 // Call PowerControl(ARM_POWER_OFF) again and assert that it returned ARM_DRIVER_OK status
1626 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
1628 // Call PowerControl(ARM_POWER_LOW) function
1629 ret = drv->PowerControl (ARM_POWER_LOW);
1631 // Driver is initialized and peripheral is powered-on or in low-power mode:
1632 // Assert that PowerControl(ARM_POWER_LOW) function returned ARM_DRIVER_OK or ARM_DRIVER_ERROR_UNSUPPORTED status
1633 TEST_ASSERT((ret == ARM_DRIVER_OK) || (ret == ARM_DRIVER_ERROR_UNSUPPORTED));
1634 if (ret == ARM_DRIVER_ERROR_UNSUPPORTED) {
1635 TEST_MESSAGE("[WARNING] PowerControl (ARM_POWER_LOW) is not supported");
1638 // Call PowerControl(ARM_POWER_FULL) function and assert that it returned ARM_DRIVER_OK status
1639 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);
1641 // Driver is initialized and peripheral is powered-on:
1642 // Call Control function and assert that it returned ARM_DRIVER_OK status
1643 TEST_ASSERT(drv->Control (ARM_SPI_MODE_MASTER | ARM_SPI_DATA_BITS(SPI_CFG_DEF_DATA_BITS), SPI_CFG_DEF_BUS_SPEED) == ARM_DRIVER_OK);
1645 // Call Transfer function and assert that it returned ARM_DRIVER_OK status
1646 TEST_ASSERT(drv->Transfer (ptr_tx_buf, ptr_rx_buf, SPI_CFG_DEF_NUM) == ARM_DRIVER_OK);
1648 // Call GetStatus function
1649 stat = drv->GetStatus();
1651 // Assert that GetStatus function returned status structure with busy flag 1
1652 TEST_ASSERT(stat.busy == 1U);
1654 // Call PowerControl(ARM_POWER_OFF) function with transfer active and assert that it returned ARM_DRIVER_OK status
1655 // (this must unconditionally terminate active transfer and power-off the peripheral)
1656 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
1658 // Driver is initialized and peripheral is powered-off:
1659 // Call GetStatus function
1660 stat = drv->GetStatus();
1662 // Assert that GetStatus function returned status structure with busy flag 0
1663 TEST_ASSERT(stat.busy == 0U);
1665 (void)drv->Uninitialize ();
1667 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
1668 // Ensure that SPI Server (if used) is ready for command reception
1676 // End of spi_tests_drv_mgmt
1678 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1679 /* SPI Data Exchange tests */
1680 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
1682 \defgroup spi_tests_data_xchg Data Exchange
1685 These tests verify API and operation of the SPI data exchange functions.
1687 The data exchange tests verify the following driver functions
1688 (<a href="http://www.keil.com/pack/doc/CMSIS/Driver/html/group__spi__interface__gr.html" target="_blank">SPI Driver function documentation</a>):
1691 int32_t Send (const void *data, uint32_t num);
1695 int32_t Receive ( void *data, uint32_t num);
1699 int32_t Transfer (const void *data_out, void *data_in, uint32_t num);
1703 uint32_t GetDataCount (void);
1707 int32_t Control (uint32_t control, uint32_t arg);
1711 ARM_SPI_STATUS GetStatus (void);
1715 void (*ARM_SPI_SignalEvent_t) (uint32_t event);
1718 All of these tests execute a data exchange and check the result of this data exchange.
1720 Data exchange test procedure when Test Mode <b>SPI Server</b> is selected:
1721 - send command "SET BUF TX,.." to the SPI Server: Set Tx buffer
1722 - send command "SET BUF RX,.." to the SPI Server: Set Rx buffer
1723 - send command "SET COM .." to the SPI Server: Set communication settings for the next XFER command
1724 - send command "XFER .." to the SPI Server: Specify transfer
1725 - driver Control: Configure the SPI interface
1726 - driver Control: Set the default Tx value
1727 - driver Send/Receive/Transfer: Start the requested operation
1728 - driver GetStatus/SignalEvent: Wait for the current operation to finish or time-out<br>
1729 (operation is finished when busy flag is 0 and completed event was signaled)
1730 - assert that operation has finished in expected time
1731 - assert that ARM_SPI_EVENT_TRANSFER_COMPLETE event was signaled
1732 - driver GetStatus: Assert that busy flag is 0
1733 - driver GetDataCount: Assert that number of transferred items is same as requested
1734 - if operation has timed out call driver Control function to Abort operation and wait timeout time<br>
1735 to make sure that the SPI Server is ready for the next command
1736 - assert that received content is as expected
1737 - send command "GET BUF RX,.." to the SPI Server: Get Rx buffer
1738 - assert that sent content (read from the SPI Server's receive buffer) is as expected
1740 Data exchange <b>Abort</b> test procedure when Test Mode <b>SPI Server</b> is selected:
1741 - send command "SET BUF TX,.." to the SPI Server: Set Tx buffer
1742 - send command "SET BUF RX,.." to the SPI Server: Set Rx buffer
1743 - send command "SET COM .." to the SPI Server: Set communication settings for the next XFER command
1744 - send command "XFER .." to the SPI Server: Specify transfer
1745 - driver Control: Configure the SPI interface
1746 - driver Control: Set the default Tx value
1747 - driver Send/Receive/Transfer: Start the requested operation
1749 - driver Control: Abort the current operation
1750 - driver GetStatus: Assert that busy flag is 0
1751 - driver GetDataCount: Assert that number of transferred items is less than requested
1753 Data exchange test procedure when Test Mode <b>Loopback</b> is selected:
1754 - driver Control: Configure the SPI interface
1755 - driver Control: Set the default Tx value
1756 - driver Send/Transfer: Start the requested operation
1757 - driver GetStatus/SignalEvent: Wait for the current operation to finish or time-out<br>
1758 (operation is finished when busy flag is 0 and completed event was signaled)
1759 - assert that operation has finished in expected time
1760 - assert that ARM_SPI_EVENT_TRANSFER_COMPLETE event was signaled
1761 - driver GetStatus: Assert that busy flag is 0
1762 - driver GetDataCount: Assert that number of transferred items is same as requested
1763 - if operation has timed out call driver Control function to Abort operation
1764 - assert that received content is as expected (for Transfer operation only)
1766 \note Limitations of Data Exchange tests if Test Mode <b>Loopback</b> is selected:
1767 - only Master mode with Slave Select not used can be tested
1768 - Receive function cannot be tested
1769 - format tests are not supported
1770 - only 8, 16, 24 and 32 data bit tests are supported
1771 - bit order tests are not supported
1775 #ifndef __DOXYGEN__ // Exclude form the documentation
1777 \brief Execute SPI data exchange or abort operation.
1778 \param[in] operation operation (OP_SEND .. OP_ABORT_TRANSFER)
1779 \param[in] mode mode (MODE_MASTER or MODE_SLAVE)
1780 \param[in] format clock/frame format (0 = polarity0/phase0 .. 5 = Microwire)
1781 \param[in] data_bits data bits (1 .. 32)
1782 \param[in] bit_order bit order (BO_MSB_TO_LSB or BO_LSB_TO_MSB)
1783 \param[in] ss_mode Slave Select mode (SS_MODE_xxx)
1784 \param[in] bus_speed bus speed in bits per second (bps)
1785 \param[in] num number of items to send, receive or transfer
1788 static void SPI_DataExchange_Operation (uint32_t operation, uint32_t mode, uint32_t format, uint32_t data_bits, uint32_t bit_order, uint32_t ss_mode, uint32_t bus_speed, uint32_t num) {
1789 // volatile specifier is used to prevent compiler from optimizing variables
1790 // in a way that they cannot be seen with a debugger
1791 volatile int32_t stat, def_tx_stat;
1792 volatile uint32_t drv_mode, drv_format, drv_data_bits, drv_bit_order, drv_ss_mode;
1793 volatile uint32_t srv_mode, srv_ss_mode;
1794 volatile ARM_SPI_STATUS spi_stat;
1795 volatile uint32_t data_count;
1798 volatile uint32_t srv_delay_c, srv_delay_t;
1799 volatile uint32_t drv_delay_c, drv_delay_t;
1800 uint32_t timeout, start_tick, curr_tick;
1803 // Prepare parameters for SPI Server and Driver configuration
1806 TEST_FAIL_MESSAGE("[FAILED] Inactive mode! Data exchange operation aborted!");
1809 // When Master mode is tested, time diagram is as follows:
1812 // Slave Control (SPI Server) .
1814 // Master Control (SPI Client (DUT)) .
1815 // ... 4 ms SPI_CFG_XFER_TIMEOUT
1816 // Slave Transfer (SPI Server) .
1818 // Master Send/Receive/Transfer (SPI Client (DUT)) .
1819 // ... data exchange _|_
1820 drv_mode = ARM_SPI_MODE_MASTER;
1828 // When Slave mode is tested, time diagram is as follows:
1831 // Slave Control (SPI Client (DUT)) .
1833 // Master Control (SPI Server) .
1834 // ... 4 ms SPI_CFG_XFER_TIMEOUT
1835 // Slave Transfer (SPI Client (DUT)) .
1837 // Master Send/Receive/Transfer (SPI Server) .
1838 // ... data exchange _|_
1839 drv_mode = ARM_SPI_MODE_SLAVE;
1847 TEST_FAIL_MESSAGE("[FAILED] Unknown mode! Data exchange operation aborted!");
1853 case FORMAT_CPOL0_CPHA0:
1854 drv_format = ARM_SPI_CPOL0_CPHA0;
1856 case FORMAT_CPOL0_CPHA1:
1857 drv_format = ARM_SPI_CPOL0_CPHA1;
1859 case FORMAT_CPOL1_CPHA0:
1860 drv_format = ARM_SPI_CPOL1_CPHA0;
1862 case FORMAT_CPOL1_CPHA1:
1863 drv_format = ARM_SPI_CPOL1_CPHA1;
1866 drv_format = ARM_SPI_TI_SSI;
1868 case FORMAT_MICROWIRE:
1869 drv_format = ARM_SPI_MICROWIRE;
1872 TEST_FAIL_MESSAGE("[FAILED] Unknown clock / frame format! Data exchange operation aborted!");
1876 if ((data_bits > 0U) && (data_bits <= 32U)) {
1877 drv_data_bits = ARM_SPI_DATA_BITS(data_bits);
1879 TEST_FAIL_MESSAGE("[FAILED] Data bits not in range 1 to 32! Data exchange operation aborted!");
1883 switch (bit_order) {
1885 drv_bit_order = ARM_SPI_MSB_LSB;
1888 drv_bit_order = ARM_SPI_LSB_MSB;
1891 TEST_FAIL_MESSAGE("[FAILED] Unknown bit order! Data exchange operation aborted!");
1895 if (mode == MODE_MASTER) {
1897 case SS_MODE_MASTER_UNUSED:
1898 drv_ss_mode = ARM_SPI_SS_MASTER_UNUSED;
1901 case SS_MODE_MASTER_SW:
1902 drv_ss_mode = ARM_SPI_SS_MASTER_SW;
1905 case SS_MODE_MASTER_HW_OUTPUT:
1906 drv_ss_mode = ARM_SPI_SS_MASTER_HW_OUTPUT;
1909 case SS_MODE_MASTER_HW_INPUT:
1910 drv_ss_mode = ARM_SPI_SS_MASTER_UNUSED;
1914 TEST_FAIL_MESSAGE("[FAILED] Unknown Slave Select mode! Data exchange operation aborted!");
1919 case SS_MODE_SLAVE_HW:
1920 drv_ss_mode = ARM_SPI_SS_SLAVE_HW;
1923 case SS_MODE_SLAVE_SW:
1924 drv_ss_mode = ARM_SPI_SS_SLAVE_SW;
1928 TEST_FAIL_MESSAGE("[FAILED] Unknown Slave Select mode! Data exchange operation aborted!");
1933 // Total transfer timeout (16 ms is overhead before transfer starts)
1934 timeout = SPI_CFG_XFER_TIMEOUT + 16U;
1936 // Check that SPI status is not busy before starting data exchange test
1937 spi_stat = drv->GetStatus(); // Get SPI status
1938 if (spi_stat.busy != 0U) {
1939 // If busy flag is active
1940 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s", str_oper[operation], "Busy active before operation! Data exchange operation aborted!");
1942 TEST_ASSERT_MESSAGE(spi_stat.busy == 0U, msg_buf);
1945 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
1946 if (CmdSetBufTx('S') != EXIT_SUCCESS) { break; }
1947 if (CmdSetBufRx('?') != EXIT_SUCCESS) { break; }
1948 if (CmdSetCom (srv_mode, format, data_bits, bit_order, srv_ss_mode, bus_speed) != EXIT_SUCCESS) { break; }
1949 if (CmdXfer (num, srv_delay_c, srv_delay_t, SPI_CFG_XFER_TIMEOUT) != EXIT_SUCCESS) { break; }
1950 (void)drv->Control(ARM_SPI_MODE_INACTIVE, 0U);
1951 #else // If Test Mode Loopback is selected
1952 // Remove warnings for unused variables
1958 start_tick = osKernelGetTickCount();
1960 // Initialize buffers
1961 memset(ptr_tx_buf, (int32_t)'!' , SPI_BUF_MAX);
1962 memset(ptr_tx_buf, (int32_t)'T' , num * DataBitsToBytes(data_bits));
1963 memset(ptr_rx_buf, (int32_t)'?' , SPI_BUF_MAX);
1964 memset(ptr_cmp_buf, (int32_t)'?' , SPI_BUF_MAX);
1966 // Configure required communication settings
1967 (void)osDelay(drv_delay_c); // Wait specified time before calling Control function
1968 if (mode == MODE_MASTER) {
1969 stat = drv->Control (drv_mode | drv_format | drv_data_bits | drv_bit_order | drv_ss_mode, bus_speed);
1971 // For Slave mode bus speed argument is not used
1972 stat = drv->Control (drv_mode | drv_format | drv_data_bits | drv_bit_order | drv_ss_mode, 0U);
1974 if (stat != ARM_DRIVER_OK) {
1975 // If configuration has failed
1976 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %s! Data exchange operation aborted!", str_oper[operation], "Control function returned", str_ret[-stat]);
1978 // Assert that Control function returned ARM_DRIVER_OK
1979 TEST_ASSERT_MESSAGE(stat == ARM_DRIVER_OK, msg_buf);
1981 // Set default Tx value to 'D' byte values (only for master mode)
1982 if (mode == MODE_MASTER) {
1983 val = ((uint32_t)'D' << 24) | ((uint32_t)'D' << 16) | ((uint32_t)'D' << 8) | (uint32_t)'D';
1984 stat = drv->Control (ARM_SPI_SET_DEFAULT_TX_VALUE, val);
1986 if ((stat != ARM_DRIVER_OK) && (stat != ARM_DRIVER_ERROR_UNSUPPORTED)) {
1987 // If set default Tx value has failed
1988 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %s", str_oper[operation], "Set default Tx value returned", str_ret[-stat]);
1990 // Assert that Control function returned ARM_DRIVER_OK or ARM_DRIVER_ERROR_UNSUPPORTED
1991 TEST_ASSERT_MESSAGE((stat == ARM_DRIVER_OK) || (stat == ARM_DRIVER_ERROR_UNSUPPORTED), msg_buf);
1993 if (stat == ARM_DRIVER_ERROR_UNSUPPORTED) {
1994 // If set default Tx value is not supported
1995 (void)snprintf(msg_buf, sizeof(msg_buf), "[WARNING] %s: %s", str_oper[operation], "Set default Tx value is not supported");
1996 TEST_MESSAGE(msg_buf);
1999 // For slave mode default Tx is not tested
2000 def_tx_stat = ARM_DRIVER_ERROR_UNSUPPORTED;
2002 (void)osDelay(drv_delay_t); // Wait specified time before calling Send/Receive/Transfer function
2004 // Prepare local variables
2006 duration = 0xFFFFFFFFUL;
2008 data_count_sample = 0U;
2010 start_cnt = osKernelGetSysTimerCount();
2012 if (((mode == MODE_MASTER) && (ss_mode == SS_MODE_MASTER_SW)) ||
2013 ((mode == MODE_SLAVE) && (ss_mode == SS_MODE_SLAVE_SW))) {
2014 // If operation requires software Slave Select driving, activate Slave Select
2015 stat = drv->Control (ARM_SPI_CONTROL_SS, ARM_SPI_SS_ACTIVE);
2016 if (stat != ARM_DRIVER_OK) {
2017 // If driving of Slave Select to active state has failed
2018 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %s", str_oper[operation], "Control function returned", str_ret[-stat]);
2020 // Assert that Control function returned ARM_DRIVER_OK
2021 TEST_ASSERT_MESSAGE(stat == ARM_DRIVER_OK, msg_buf);
2024 // Start the data exchange operation
2025 switch (operation & 0x0FU) {
2028 stat = drv->Send(ptr_tx_buf, num);
2029 if (stat != ARM_DRIVER_OK) {
2030 // If Send activation has failed
2031 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %s! Data exchange operation aborted!", str_oper[operation], "Send function returned", str_ret[-stat]);
2033 // Assert that Send function returned ARM_DRIVER_OK
2034 TEST_ASSERT_MESSAGE(stat == ARM_DRIVER_OK, msg_buf);
2037 case OP_ABORT_RECEIVE:
2038 stat = drv->Receive(ptr_rx_buf, num);
2039 if (stat != ARM_DRIVER_OK) {
2040 // If Receive activation has failed
2041 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %s! Data exchange operation aborted!", str_oper[operation], "Receive function returned", str_ret[-stat]);
2043 // Assert that Receive function returned ARM_DRIVER_OK
2044 TEST_ASSERT_MESSAGE(stat == ARM_DRIVER_OK, msg_buf);
2047 case OP_ABORT_TRANSFER:
2048 stat = drv->Transfer(ptr_tx_buf, ptr_rx_buf, num);
2049 if (stat != ARM_DRIVER_OK) {
2050 // If Transfer activation has failed
2051 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %s! Data exchange operation aborted!", str_oper[operation], "Transfer function returned", str_ret[-stat]);
2053 // Assert that Transfer function returned ARM_DRIVER_OK
2054 TEST_ASSERT_MESSAGE(stat == ARM_DRIVER_OK, msg_buf);
2057 TEST_FAIL_MESSAGE("[FAILED] Unknown operation! Data exchange operation aborted!");
2060 if (stat != ARM_DRIVER_OK) {
2061 // If Send/Receive/Transfer start has failed
2062 (void)drv->Control(ARM_SPI_MODE_INACTIVE, 0U);
2065 if ((operation == OP_ABORT_SEND) || // This IF block tests only abort functionality
2066 (operation == OP_ABORT_RECEIVE) ||
2067 (operation == OP_ABORT_TRANSFER)) {
2068 (void)osDelay(1U); // Wait short time before doing Abort
2069 stat = drv->Control (ARM_SPI_ABORT_TRANSFER, 0U);
2070 if (stat != ARM_DRIVER_OK) {
2071 // If Abort has failed
2072 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %s", str_oper[operation], "Control function returned", str_ret[-stat]);
2074 // Assert that Control function returned ARM_DRIVER_OK
2075 TEST_ASSERT_MESSAGE(stat == ARM_DRIVER_OK, msg_buf);
2077 if (((mode == MODE_MASTER) && (ss_mode == SS_MODE_MASTER_SW)) ||
2078 ((mode == MODE_SLAVE) && (ss_mode == SS_MODE_SLAVE_SW))) {
2079 // If operation requires software Slave Select driving, deactivate Slave Select
2080 drv->Control(ARM_SPI_CONTROL_SS, ARM_SPI_SS_INACTIVE);
2082 spi_stat = drv->GetStatus(); // Get SPI status
2083 if (spi_stat.busy != 0U) {
2084 // If busy flag is still active
2085 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s", str_oper[operation], "Busy still active after Abort");
2087 // Assert that busy flag is not active
2088 TEST_ASSERT_MESSAGE(spi_stat.busy == 0U, msg_buf);
2090 data_count = drv->GetDataCount(); // Get data count
2091 if (data_count >= num) {
2092 // If data count is more or equal to number of items then Abort has failed
2093 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %i %s %i %s", str_oper[operation], "GetDataCount returned", data_count, "after Abort of", num, "items");
2095 // Assert data count is less then number of items requested for exchange
2096 TEST_ASSERT_MESSAGE(data_count < num, msg_buf);
2098 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
2100 (void)drv->Control(ARM_SPI_MODE_INACTIVE, 0U);
2102 // Wait until timeout expires
2103 curr_tick = osKernelGetTickCount();
2104 if ((curr_tick - start_tick) < timeout) {
2105 (void)osDelay(timeout - (curr_tick - start_tick));
2107 (void)osDelay(20U); // Wait for SPI Server to start reception of next command
2110 return; // Here Abort test is finished, exit
2113 // Wait for operation to finish (status busy is 0 and event complete signaled, or timeout)
2115 if (data_count_sample == 0U) {
2116 // Store first data count different than 0
2117 data_count_sample = drv->GetDataCount(); // Get data count
2119 if ((drv->GetStatus().busy == 0U) && ((event & ARM_SPI_EVENT_TRANSFER_COMPLETE) != 0U)) {
2120 duration = osKernelGetSysTimerCount() - start_cnt;
2123 } while ((osKernelGetTickCount() - start_tick) < timeout);
2125 if (duration == 0xFFFFFFFFUL) {
2126 // If operation has timed out
2127 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s", str_oper[operation], "Operation timed out");
2129 // Assert that operation has finished in expected time
2130 TEST_ASSERT_MESSAGE(duration != 0xFFFFFFFFUL, msg_buf);
2132 if (((mode == MODE_MASTER) && (ss_mode == SS_MODE_MASTER_SW)) ||
2133 ((mode == MODE_SLAVE) && (ss_mode == SS_MODE_SLAVE_SW))) {
2134 // If operation requires software Slave Select driving, deactivate Slave Select
2135 stat = drv->Control (ARM_SPI_CONTROL_SS, ARM_SPI_SS_INACTIVE);
2136 if (stat != ARM_DRIVER_OK) {
2137 // If driving of Slave Select to inactive state has failed
2138 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %s", str_oper[operation], "Control function returned", str_ret[-stat]);
2140 // Assert that Control function returned ARM_DRIVER_OK
2141 TEST_ASSERT_MESSAGE(stat == ARM_DRIVER_OK, msg_buf);
2144 if ((event & ARM_SPI_EVENT_TRANSFER_COMPLETE) == 0U) {
2145 // If transfer complete event was not signaled
2146 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s", str_oper[operation], "ARM_SPI_EVENT_TRANSFER_COMPLETE was not signaled");
2147 chk_data = 0U; // Do not check transferred content
2149 // Assert that ARM_SPI_EVENT_TRANSFER_COMPLETE was signaled
2150 TEST_ASSERT_MESSAGE((event & ARM_SPI_EVENT_TRANSFER_COMPLETE) != 0U, msg_buf);
2152 spi_stat = drv->GetStatus(); // Get SPI status
2153 if (spi_stat.busy != 0U) {
2154 // If busy flag is still active
2155 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s", str_oper[operation], "Busy still active after operation");
2156 chk_data = 0U; // Do not check transferred content
2158 // Assert that busy flag is not active
2159 TEST_ASSERT_MESSAGE(spi_stat.busy == 0U, msg_buf);
2161 if ((event & ARM_SPI_EVENT_DATA_LOST) != 0U) {
2162 // If data lost was signaled during the transfer
2163 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s", str_oper[operation], "ARM_SPI_EVENT_DATA_LOST was signaled");
2164 chk_data = 0U; // Do not check transferred content
2166 // Assert that ARM_SPI_EVENT_DATA_LOST was not signaled
2167 TEST_ASSERT_MESSAGE((event & ARM_SPI_EVENT_DATA_LOST) == 0U, msg_buf);
2169 data_count = drv->GetDataCount(); // Get data count
2170 if (data_count != num) {
2171 // If data count is different then number of items, then operation has failed
2172 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s %i %s %i %s", str_oper[operation], "GetDataCount returned", data_count, "expected was", num, "items");
2173 chk_data = 0U; // Do not check transferred content
2175 // Assert that data count is equal to number of items requested for exchange
2176 TEST_ASSERT_MESSAGE(data_count == num, msg_buf);
2178 if ((drv->GetStatus().busy != 0U) || ((event & ARM_SPI_EVENT_TRANSFER_COMPLETE) == 0U)) {
2179 // If transfer did not finish in time, abort it
2180 (void)drv->Control(ARM_SPI_ABORT_TRANSFER, 0U);
2183 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
2185 (void)drv->Control(ARM_SPI_MODE_INACTIVE, 0U);
2187 // Wait until timeout expires
2188 curr_tick = osKernelGetTickCount();
2189 if ((curr_tick - start_tick) < timeout) {
2190 (void)osDelay(timeout - (curr_tick - start_tick));
2192 (void)osDelay(20U); // Wait for SPI Server to start reception of next command
2194 if (chk_data != 0U) { // If transferred content should be checked
2195 // Check received content for receive and transfer operations
2196 if ((operation == OP_RECEIVE) || (operation == OP_TRANSFER)) {
2197 memset(ptr_cmp_buf, (int32_t)'S', num * DataBitsToBytes(data_bits));
2198 stat = memcmp(ptr_rx_buf, ptr_cmp_buf, num * DataBitsToBytes(data_bits));
2200 // If data received mismatches
2201 // Find on which byte mismatch starts
2202 for (i = 0U; i < (num * DataBitsToBytes(data_bits)); i++) {
2203 if (ptr_rx_buf[i] != ptr_cmp_buf[i]) {
2207 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s byte %i, received was 0x%02X, expected was 0x%02X", str_oper[operation], "Received data mismatches on", i, ptr_rx_buf[i], ptr_cmp_buf[i]);
2209 // Assert that data received is same as expected
2210 TEST_ASSERT_MESSAGE(stat == 0, msg_buf);
2213 // Check sent content (by checking SPI Server's received buffer content)
2214 if ((mode == MODE_MASTER) || (operation != OP_RECEIVE) || (def_tx_stat == ARM_DRIVER_OK)) {
2215 // Check sent data in all cases except Slave mode Receive operation
2216 // with Default Tx not working or unsupported
2217 if (CmdGetBufRx(SPI_BUF_MAX) != EXIT_SUCCESS) { break; }
2219 if ((operation == OP_RECEIVE) && (def_tx_stat == ARM_DRIVER_OK)) {
2220 // Expected data received by SPI Server should be default Tx value
2221 memset(ptr_cmp_buf, (int32_t)'D', num * DataBitsToBytes(data_bits));
2223 if ((operation == OP_SEND) || (operation == OP_TRANSFER)) {
2224 // Expected data received by SPI Server should be what was sent
2225 memset(ptr_cmp_buf, (int32_t)'T', num * DataBitsToBytes(data_bits));
2228 stat = memcmp(ptr_rx_buf, ptr_cmp_buf, num * DataBitsToBytes(data_bits));
2230 // If data sent mismatches
2231 // Find on which byte mismatch starts
2232 for (i = 0U; i < (num * DataBitsToBytes(data_bits)); i++) {
2233 if (ptr_rx_buf[i] != ptr_cmp_buf[i]) {
2237 if (operation == OP_RECEIVE) {
2238 // If sent was default Tx value, 'D' bytes
2239 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s byte %i, SPI Server received 0x%02X, sent was 0x%02X", str_oper[operation], "Default Tx data mismatches on", i, ptr_rx_buf[i], ptr_cmp_buf[i]);
2241 // If sent was 'T' bytes
2242 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s byte %i, SPI Server received 0x%02X, sent was 0x%02X", str_oper[operation], "Sent data mismatches on", i, ptr_rx_buf[i], ptr_cmp_buf[i]);
2245 // Assert data sent is same as expected
2246 TEST_ASSERT_MESSAGE(stat == 0, msg_buf);
2249 #else // If Test Mode Loopback is selected
2250 if (chk_data != 0U) { // If transferred content should be checked
2251 if (operation == OP_TRANSFER) {
2252 memset(ptr_cmp_buf, (int32_t)'T', num * DataBitsToBytes(data_bits));
2253 stat = memcmp(ptr_rx_buf, ptr_cmp_buf, num * DataBitsToBytes(data_bits));
2255 // If data received mismatches
2256 // Find on which byte mismatch starts
2257 for (i = 0U; i < (num * DataBitsToBytes(data_bits)); i++) {
2258 if (ptr_rx_buf[i] != ptr_cmp_buf[i]) {
2262 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] %s: %s byte %i, received was 0x%02X, expected was 0x%02X", str_oper[operation], "Received data mismatches on", i, ptr_rx_buf[i], ptr_cmp_buf[i]);
2264 // Assert that data received is same as expected
2265 TEST_ASSERT_MESSAGE(stat == 0, msg_buf);
2273 #if (SPI_SERVER_USED == 1) // If Test Mode SPI Server is selected
2274 TEST_FAIL_MESSAGE("[FAILED] Problems in communication with SPI Server. Test aborted!");
2278 #endif // End of exclude form the documentation
2280 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2282 \brief Function: Function SPI_Mode_Master_SS_Unused
2284 The function \b SPI_Mode_Master_SS_Unused verifies data exchange:
2285 - in <b>Master Mode</b> with <b>Slave Select line not used</b>
2286 - with default clock / frame format
2287 - with default data bits
2288 - with default bit order
2289 - at default bus speed
2290 - for default number of data items
2292 \note In Test Mode <b>Loopback</b> Receive function is not checked
2294 void SPI_Mode_Master_SS_Unused (void) {
2296 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
2297 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
2298 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2299 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2300 #if (SPI_SERVER_USED == 1)
2301 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2302 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2305 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_UNUSED, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2306 #if (SPI_SERVER_USED == 1)
2307 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_UNUSED, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2309 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_UNUSED, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2312 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2314 \brief Function: Function SPI_Mode_Master_SS_Sw_Ctrl
2316 The function \b SPI_Mode_Master_SS_Sw_Ctrl verifies data exchange:
2317 - in <b>Master Mode</b> with <b>Slave Select line Software controlled</b>
2318 - with default clock / frame format
2319 - with default data bits
2320 - with default bit order
2321 - at default bus speed
2322 - for default number of data items
2324 \note In Test Mode <b>Loopback</b> this test is not executed
2326 void SPI_Mode_Master_SS_Sw_Ctrl (void) {
2328 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2329 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
2330 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
2331 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2332 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2333 #if (SPI_SERVER_USED == 1)
2334 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2335 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2338 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_SW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2339 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_SW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2340 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_SW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2343 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2345 \brief Function: Function SPI_Mode_Master_SS_Hw_Ctrl_Out
2347 The function \b SPI_Mode_Master_SS_Hw_Ctrl_Out verifies data exchange:
2348 - in <b>Master Mode</b> with <b>Slave Select line Hardware controlled Output</b>
2349 - with default clock / frame format
2350 - with default data bits
2351 - with default bit order
2352 - at default bus speed
2353 - for default number of data items
2355 \note In Test Mode <b>Loopback</b> this test not executed
2357 void SPI_Mode_Master_SS_Hw_Ctrl_Out (void) {
2359 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2360 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2361 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2362 #if (SPI_SERVER_USED == 1)
2363 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2364 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2367 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2368 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2369 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2372 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2374 \brief Function: Function SPI_Mode_Master_SS_Hw_Mon_In
2376 The function \b SPI_Mode_Master_SS_Hw_Mon_In verifies data exchange:
2377 - in <b>Master Mode</b> with <b>Slave Select line Hardware monitored Input</b>
2378 - with default clock / frame format
2379 - with default data bits
2380 - with default bit order
2381 - at default bus speed
2382 - for default number of data items
2384 \note In Test Mode <b>Loopback</b> this test not executed
2386 void SPI_Mode_Master_SS_Hw_Mon_In (void) {
2388 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2389 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
2390 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
2391 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2392 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2393 #if (SPI_SERVER_USED == 1)
2394 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2395 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2398 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_HW_INPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2399 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_HW_INPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2400 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_MASTER_HW_INPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2403 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2405 \brief Function: Function SPI_Mode_Slave_SS_Hw_Mon
2407 The function \b SPI_Mode_Slave_SS_Hw_Mon verifies data exchange:
2408 - in <b>Slave Mode</b> with <b>Slave Select line Hardware monitored</b>
2409 - with default clock / frame format
2410 - with default data bits
2411 - with default bit order
2412 - at default bus speed
2413 - for default number of data items
2415 \note In Test Mode <b>Loopback</b> this test not executed
2417 void SPI_Mode_Slave_SS_Hw_Mon (void) {
2419 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2420 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2421 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2422 #if (SPI_SERVER_USED == 1)
2423 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2424 if (ServerCheckSupport(MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2427 SPI_DataExchange_Operation(OP_SEND, MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_SLAVE_HW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2428 SPI_DataExchange_Operation(OP_RECEIVE, MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_SLAVE_HW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2429 SPI_DataExchange_Operation(OP_TRANSFER, MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_SLAVE_HW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2432 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2434 \brief Function: Function SPI_Mode_Slave_SS_Sw_Ctrl
2436 The function \b SPI_Mode_Slave_SS_Sw_Ctrl verifies data exchange:
2437 - in <b>Slave Mode</b> with <b>Slave Select line Software controlled</b>
2438 - with default clock / frame format
2439 - with default data bits
2440 - with default bit order
2441 - at default bus speed
2442 - for default number of data items
2444 \note In Test Mode <b>Loopback</b> this test not executed
2446 void SPI_Mode_Slave_SS_Sw_Ctrl (void) {
2448 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2449 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
2450 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
2451 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2452 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2453 #if (SPI_SERVER_USED == 1)
2454 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2455 if (ServerCheckSupport(MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2458 SPI_DataExchange_Operation(OP_SEND, MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_SLAVE_SW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2459 SPI_DataExchange_Operation(OP_RECEIVE, MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_SLAVE_SW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2460 SPI_DataExchange_Operation(OP_TRANSFER, MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SS_MODE_SLAVE_SW, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2463 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2465 \brief Function: Function SPI_Format_Clock_Pol0_Pha0
2467 The function \b SPI_Format_Clock_Pol0_Pha0 verifies data exchange:
2468 - in Master Mode with default Slave Select mode
2469 - with clock format: <b>polarity 0 / phase 0</b>
2470 - with default data bits
2471 - with default bit order
2472 - at default bus speed
2473 - for default number of data items
2475 \note In Test Mode <b>Loopback</b> this test not executed
2477 void SPI_Format_Clock_Pol0_Pha0 (void) {
2479 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2480 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2481 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2482 #if (SPI_SERVER_USED == 1)
2483 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2484 if (ServerCheckSupport(MODE_SLAVE, FORMAT_CPOL0_CPHA0, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2487 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, FORMAT_CPOL0_CPHA0, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2488 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, FORMAT_CPOL0_CPHA0, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2489 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, FORMAT_CPOL0_CPHA0, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2492 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2494 \brief Function: Function SPI_Format_Clock_Pol0_Pha1
2496 The function \b SPI_Format_Clock_Pol0_Pha1 verifies data exchange:
2497 - in Master Mode with default Slave Select mode
2498 - with clock format: <b>polarity 0 / phase 1</b>
2499 - with default data bits
2500 - with default bit order
2501 - at default bus speed
2502 - for default number of data items
2504 \note In Test Mode <b>Loopback</b> this test not executed
2506 void SPI_Format_Clock_Pol0_Pha1 (void) {
2508 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2509 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2510 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2511 #if (SPI_SERVER_USED == 1)
2512 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2513 if (ServerCheckSupport(MODE_SLAVE, FORMAT_CPOL0_CPHA1, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2516 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, FORMAT_CPOL0_CPHA1, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2517 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, FORMAT_CPOL0_CPHA1, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2518 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, FORMAT_CPOL0_CPHA1, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2521 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2523 \brief Function: Function SPI_Format_Clock_Pol1_Pha0
2525 The function \b SPI_Format_Clock_Pol1_Pha0 verifies data exchange:
2526 - in Master Mode with default Slave Select mode
2527 - with clock format: <b>polarity 1 / phase 0</b>
2528 - with default data bits
2529 - with default bit order
2530 - at default bus speed
2531 - for default number of data items
2533 \note In Test Mode <b>Loopback</b> this test not executed
2535 void SPI_Format_Clock_Pol1_Pha0 (void) {
2537 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2538 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2539 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2540 #if (SPI_SERVER_USED == 1)
2541 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2542 if (ServerCheckSupport(MODE_SLAVE, FORMAT_CPOL1_CPHA0, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2545 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, FORMAT_CPOL1_CPHA0, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2546 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, FORMAT_CPOL1_CPHA0, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2547 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, FORMAT_CPOL1_CPHA0, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2550 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2552 \brief Function: Function SPI_Format_Clock_Pol1_Pha1
2554 The function \b SPI_Format_Clock_Pol1_Pha1 verifies data exchange:
2555 - in Master Mode with default Slave Select mode
2556 - with clock format: <b>polarity 1 / phase 1</b>
2557 - with default data bits
2558 - with default bit order
2559 - at default bus speed
2560 - for default number of data items
2562 \note In Test Mode <b>Loopback</b> this test not executed
2564 void SPI_Format_Clock_Pol1_Pha1 (void) {
2566 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2567 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2568 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2569 #if (SPI_SERVER_USED == 1)
2570 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2571 if (ServerCheckSupport(MODE_SLAVE, FORMAT_CPOL1_CPHA1, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2574 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, FORMAT_CPOL1_CPHA1, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2575 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, FORMAT_CPOL1_CPHA1, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2576 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, FORMAT_CPOL1_CPHA1, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2579 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2581 \brief Function: Function SPI_Format_Frame_TI
2583 The function \b SPI_Format_Frame_TI verifies data exchange:
2584 - in <b>Master Mode</b> with <b>Slave Select line Hardware controlled Output</b>
2585 - with <b>Texas Instruments frame format</b>
2586 - with default data bits
2587 - with bit order <b>from MSB to LSB</b>
2588 - at default bus speed
2589 - for default number of data items
2591 \note In Test Mode <b>Loopback</b> this test not executed
2593 void SPI_Format_Frame_TI (void) {
2595 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2596 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2597 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2598 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2599 #if (SPI_SERVER_USED == 1)
2600 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2601 if (ServerCheckSupport(MODE_SLAVE, FORMAT_TI, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2604 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, FORMAT_TI, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2605 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, FORMAT_TI, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2606 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, FORMAT_TI, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2609 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2611 \brief Function: Function SPI_Format_Clock_Microwire
2613 The function \b SPI_Format_Clock_Microwire verifies data exchange:
2614 - in <b>Master Mode</b> with <b>Slave Select line Hardware controlled Output</b>
2615 - with <b>National Semiconductor Microwire frame format</b>
2616 - with default data bits
2617 - with bit order <b>from MSB to LSB</b>
2618 - at default bus speed
2619 - for default number of data items
2621 \note In Test Mode <b>Loopback</b> this test not executed
2623 void SPI_Format_Clock_Microwire (void) {
2625 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2626 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2627 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2628 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2629 #if (SPI_SERVER_USED == 1)
2630 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2631 if (ServerCheckSupport(MODE_SLAVE, FORMAT_MICROWIRE, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2634 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, FORMAT_MICROWIRE, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2635 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, FORMAT_MICROWIRE, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2636 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, FORMAT_MICROWIRE, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SS_MODE_MASTER_HW_OUTPUT, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2639 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2641 \brief Function: Function SPI_Data_Bits_1
2643 The function \b SPI_Data_Bits_1 verifies data exchange:
2644 - in Master Mode with default Slave Select mode
2645 - with default clock / frame format
2646 - with <b>1 data bits</b> per frame
2647 - with default bit order
2648 - at default bus speed
2649 - for default number of data items
2651 \note In Test Mode <b>Loopback</b> this test not executed
2653 void SPI_Data_Bits_1 (void) {
2655 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2656 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
2657 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
2658 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2659 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2660 #if (SPI_SERVER_USED == 1)
2661 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2662 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 1U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2665 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 1U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2666 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 1U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2667 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 1U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2670 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2672 \brief Function: Function SPI_Data_Bits_2
2674 The function \b SPI_Data_Bits_2 verifies data exchange:
2675 - in Master Mode with default Slave Select mode
2676 - with default clock / frame format
2677 - with <b>2 data bits</b> per frame
2678 - with default bit order
2679 - at default bus speed
2680 - for default number of data items
2682 \note In Test Mode <b>Loopback</b> this test not executed
2684 void SPI_Data_Bits_2 (void) {
2686 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2687 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
2688 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
2689 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2690 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2691 #if (SPI_SERVER_USED == 1)
2692 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2693 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 2U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2696 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 2U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2697 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 2U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2698 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 2U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2701 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2703 \brief Function: Function SPI_Data_Bits_3
2705 The function \b SPI_Data_Bits_3 verifies data exchange:
2706 - in Master Mode with default Slave Select mode
2707 - with default clock / frame format
2708 - with <b>3 data bits</b> per frame
2709 - with default bit order
2710 - at default bus speed
2711 - for default number of data items
2713 \note In Test Mode <b>Loopback</b> this test not executed
2715 void SPI_Data_Bits_3 (void) {
2717 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2718 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
2719 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
2720 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2721 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2722 #if (SPI_SERVER_USED == 1)
2723 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2724 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 3U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2727 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 3U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2728 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 3U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2729 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 3U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2732 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2734 \brief Function: Function SPI_Data_Bits_4
2736 The function \b SPI_Data_Bits_4 verifies data exchange:
2737 - in Master Mode with default Slave Select mode
2738 - with default clock / frame format
2739 - with <b>4 data bits</b> per frame
2740 - with default bit order
2741 - at default bus speed
2742 - for default number of data items
2744 \note In Test Mode <b>Loopback</b> this test not executed
2746 void SPI_Data_Bits_4 (void) {
2748 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2749 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2750 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2751 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2752 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2753 #if (SPI_SERVER_USED == 1)
2754 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2755 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 4U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2758 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 4U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2759 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 4U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2760 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 4U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2763 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2765 \brief Function: Function SPI_Data_Bits_5
2767 The function \b SPI_Data_Bits_5 verifies data exchange:
2768 - in Master Mode with default Slave Select mode
2769 - with default clock / frame format
2770 - with <b>5 data bits</b> per frame
2771 - with default bit order
2772 - at default bus speed
2773 - for default number of data items
2775 \note In Test Mode <b>Loopback</b> this test not executed
2777 void SPI_Data_Bits_5 (void) {
2779 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2780 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2781 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2782 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2783 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2784 #if (SPI_SERVER_USED == 1)
2785 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2786 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 5U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2789 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 5U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2790 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 5U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2791 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 5U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2794 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2796 \brief Function: Function SPI_Data_Bits_6
2798 The function \b SPI_Data_Bits_6 verifies data exchange:
2799 - in Master Mode with default Slave Select mode
2800 - with default clock / frame format
2801 - with <b>6 data bits</b> per frame
2802 - with default bit order
2803 - at default bus speed
2804 - for default number of data items
2806 \note In Test Mode <b>Loopback</b> this test not executed
2808 void SPI_Data_Bits_6 (void) {
2810 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2811 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2812 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2813 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2814 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2815 #if (SPI_SERVER_USED == 1)
2816 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2817 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 6U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2820 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 6U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2821 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 6U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2822 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 6U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2825 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2827 \brief Function: Function SPI_Data_Bits_7
2829 The function \b SPI_Data_Bits_7 verifies data exchange:
2830 - in Master Mode with default Slave Select mode
2831 - with default clock / frame format
2832 - with <b>7 data bits</b> per frame
2833 - with default bit order
2834 - at default bus speed
2835 - for default number of data items
2837 \note In Test Mode <b>Loopback</b> this test not executed
2839 void SPI_Data_Bits_7 (void) {
2841 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2842 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2843 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2844 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2845 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2846 #if (SPI_SERVER_USED == 1)
2847 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2848 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 7U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2851 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 7U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2852 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 7U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2853 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 7U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2856 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2858 \brief Function: Function SPI_Data_Bits_8
2860 The function \b SPI_Data_Bits_8 verifies data exchange:
2861 - in Master Mode with default Slave Select mode
2862 - with default clock / frame format
2863 - with <b>8 data bits</b> per frame
2864 - with default bit order
2865 - at default bus speed
2866 - for default number of data items
2868 void SPI_Data_Bits_8 (void) {
2870 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2871 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2872 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2873 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2874 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2875 #if (SPI_SERVER_USED == 1)
2876 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2877 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 8U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2880 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 8U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2881 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 8U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2882 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 8U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2885 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2887 \brief Function: Function SPI_Data_Bits_9
2889 The function \b SPI_Data_Bits_9 verifies data exchange:
2890 - in Master Mode with default Slave Select mode
2891 - with default clock / frame format
2892 - with <b>9 data bits</b> per frame
2893 - with default bit order
2894 - at default bus speed
2895 - for default number of data items
2897 \note In Test Mode <b>Loopback</b> this test not executed
2899 void SPI_Data_Bits_9 (void) {
2901 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2902 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2903 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2904 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2905 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2906 #if (SPI_SERVER_USED == 1)
2907 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2908 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 9U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2911 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 9U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2912 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 9U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2913 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 9U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2916 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2918 \brief Function: Function SPI_Data_Bits_10
2920 The function \b SPI_Data_Bits_10 verifies data exchange:
2921 - in Master Mode with default Slave Select mode
2922 - with default clock / frame format
2923 - with <b>10 data bits</b> per frame
2924 - with default bit order
2925 - at default bus speed
2926 - for default number of data items
2928 \note In Test Mode <b>Loopback</b> this test not executed
2930 void SPI_Data_Bits_10 (void) {
2932 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2933 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2934 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2935 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2936 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2937 #if (SPI_SERVER_USED == 1)
2938 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2939 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 10U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2942 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 10U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2943 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 10U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2944 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 10U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2947 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2949 \brief Function: Function SPI_Data_Bits_11
2951 The function \b SPI_Data_Bits_11 verifies data exchange:
2952 - in Master Mode with default Slave Select mode
2953 - with default clock / frame format
2954 - with <b>11 data bits</b> per frame
2955 - with default bit order
2956 - at default bus speed
2957 - for default number of data items
2959 \note In Test Mode <b>Loopback</b> this test not executed
2961 void SPI_Data_Bits_11 (void) {
2963 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2964 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2965 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2966 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2967 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2968 #if (SPI_SERVER_USED == 1)
2969 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2970 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 11U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
2973 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 11U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2974 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 11U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2975 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 11U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
2978 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2980 \brief Function: Function SPI_Data_Bits_12
2982 The function \b SPI_Data_Bits_12 verifies data exchange:
2983 - in Master Mode with default Slave Select mode
2984 - with default clock / frame format
2985 - with <b>12 data bits</b> per frame
2986 - with default bit order
2987 - at default bus speed
2988 - for default number of data items
2990 \note In Test Mode <b>Loopback</b> this test not executed
2992 void SPI_Data_Bits_12 (void) {
2994 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
2995 if (IsFormatValid() != EXIT_SUCCESS) { return; }
2996 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
2997 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2998 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
2999 #if (SPI_SERVER_USED == 1)
3000 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3001 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 12U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3004 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 12U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3005 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 12U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3006 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 12U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3009 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3011 \brief Function: Function SPI_Data_Bits_13
3013 The function \b SPI_Data_Bits_13 verifies data exchange:
3014 - in Master Mode with default Slave Select mode
3015 - with default clock / frame format
3016 - with <b>13 data bits</b> per frame
3017 - with default bit order
3018 - at default bus speed
3019 - for default number of data items
3021 \note In Test Mode <b>Loopback</b> this test not executed
3023 void SPI_Data_Bits_13 (void) {
3025 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3026 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3027 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3028 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3029 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3030 #if (SPI_SERVER_USED == 1)
3031 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3032 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 13U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3035 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 13U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3036 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 13U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3037 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 13U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3040 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3042 \brief Function: Function SPI_Data_Bits_14
3044 The function \b SPI_Data_Bits_14 verifies data exchange:
3045 - in Master Mode with default Slave Select mode
3046 - with default clock / frame format
3047 - with <b>14 data bits</b> per frame
3048 - with default bit order
3049 - at default bus speed
3050 - for default number of data items
3052 \note In Test Mode <b>Loopback</b> this test not executed
3054 void SPI_Data_Bits_14 (void) {
3056 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3057 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3058 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3059 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3060 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3061 #if (SPI_SERVER_USED == 1)
3062 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3063 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 14U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3066 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 14U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3067 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 14U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3068 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 14U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3071 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3073 \brief Function: Function SPI_Data_Bits_15
3075 The function \b SPI_Data_Bits_15 verifies data exchange:
3076 - in Master Mode with default Slave Select mode
3077 - with default clock / frame format
3078 - with <b>15 data bits</b> per frame
3079 - with default bit order
3080 - at default bus speed
3081 - for default number of data items
3083 \note In Test Mode <b>Loopback</b> this test not executed
3085 void SPI_Data_Bits_15 (void) {
3087 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3088 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3089 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3090 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3091 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3092 #if (SPI_SERVER_USED == 1)
3093 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3094 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 15U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3097 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 15U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3098 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 15U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3099 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 15U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3102 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3104 \brief Function: Function SPI_Data_Bits_16
3106 The function \b SPI_Data_Bits_16 verifies data exchange:
3107 - in Master Mode with default Slave Select mode
3108 - with default clock / frame format
3109 - with <b>16 data bits</b> per frame
3110 - with default bit order
3111 - at default bus speed
3112 - for default number of data items
3114 void SPI_Data_Bits_16 (void) {
3116 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3117 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3118 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3119 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3120 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3121 #if (SPI_SERVER_USED == 1)
3122 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3123 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 16U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3126 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 16U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3127 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 16U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3128 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 16U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3131 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3133 \brief Function: Function SPI_Data_Bits_17
3135 The function \b SPI_Data_Bits_17 verifies data exchange:
3136 - in Master Mode with default Slave Select mode
3137 - with default clock / frame format
3138 - with <b>17 data bits</b> per frame
3139 - with default bit order
3140 - at default bus speed
3141 - for default number of data items
3143 \note In Test Mode <b>Loopback</b> this test not executed
3145 void SPI_Data_Bits_17 (void) {
3147 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3148 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3149 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3150 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3151 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3152 #if (SPI_SERVER_USED == 1)
3153 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3154 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 17U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3157 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 17U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3158 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 17U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3159 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 17U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3162 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3164 \brief Function: Function SPI_Data_Bits_18
3166 The function \b SPI_Data_Bits_18 verifies data exchange:
3167 - in Master Mode with default Slave Select mode
3168 - with default clock / frame format
3169 - with <b>18 data bits</b> per frame
3170 - with default bit order
3171 - at default bus speed
3172 - for default number of data items
3174 \note In Test Mode <b>Loopback</b> this test not executed
3176 void SPI_Data_Bits_18 (void) {
3178 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3179 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3180 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3181 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3182 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3183 #if (SPI_SERVER_USED == 1)
3184 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3185 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 18U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3188 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 18U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3189 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 18U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3190 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 18U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3193 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3195 \brief Function: Function SPI_Data_Bits_19
3197 The function \b SPI_Data_Bits_19 verifies data exchange:
3198 - in Master Mode with default Slave Select mode
3199 - with default clock / frame format
3200 - with <b>19 data bits</b> per frame
3201 - with default bit order
3202 - at default bus speed
3203 - for default number of data items
3205 \note In Test Mode <b>Loopback</b> this test is not executed
3207 void SPI_Data_Bits_19 (void) {
3209 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3210 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3211 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3212 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3213 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3214 #if (SPI_SERVER_USED == 1)
3215 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3216 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 19U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3219 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 19U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3220 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 19U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3221 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 19U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3224 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3226 \brief Function: Function SPI_Data_Bits_20
3228 The function \b SPI_Data_Bits_20 verifies data exchange:
3229 - in Master Mode with default Slave Select mode
3230 - with default clock / frame format
3231 - with <b>20 data bits</b> per frame
3232 - with default bit order
3233 - at default bus speed
3234 - for default number of data items
3236 \note In Test Mode <b>Loopback</b> this test is not executed
3238 void SPI_Data_Bits_20 (void) {
3240 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3241 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3242 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3243 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3244 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3245 #if (SPI_SERVER_USED == 1)
3246 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3247 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 20U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3250 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 20U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3251 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 20U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3252 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 20U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3255 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3257 \brief Function: Function SPI_Data_Bits_21
3259 The function \b SPI_Data_Bits_21 verifies data exchange:
3260 - in Master Mode with default Slave Select mode
3261 - with default clock / frame format
3262 - with <b>21 data bits</b> per frame
3263 - with default bit order
3264 - at default bus speed
3265 - for default number of data items
3267 \note In Test Mode <b>Loopback</b> this test is not executed
3269 void SPI_Data_Bits_21 (void) {
3271 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3272 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3273 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3274 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3275 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3276 #if (SPI_SERVER_USED == 1)
3277 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3278 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 21U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3281 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 21U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3282 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 21U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3283 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 21U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3286 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3288 \brief Function: Function SPI_Data_Bits_22
3290 The function \b SPI_Data_Bits_22 verifies data exchange:
3291 - in Master Mode with default Slave Select mode
3292 - with default clock / frame format
3293 - with <b>22 data bits</b> per frame
3294 - with default bit order
3295 - at default bus speed
3296 - for default number of data items
3298 \note In Test Mode <b>Loopback</b> this test is not executed
3300 void SPI_Data_Bits_22 (void) {
3302 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3303 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3304 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3305 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3306 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3307 #if (SPI_SERVER_USED == 1)
3308 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3309 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 22U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3312 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 22U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3313 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 22U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3314 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 22U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3317 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3319 \brief Function: Function SPI_Data_Bits_23
3321 The function \b SPI_Data_Bits_23 verifies data exchange:
3322 - in Master Mode with default Slave Select mode
3323 - with default clock / frame format
3324 - with <b>23 data bits</b> per frame
3325 - with default bit order
3326 - at default bus speed
3327 - for default number of data items
3329 \note In Test Mode <b>Loopback</b> this test is not executed
3331 void SPI_Data_Bits_23 (void) {
3333 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3334 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3335 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3336 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3337 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3338 #if (SPI_SERVER_USED == 1)
3339 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3340 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 23U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3343 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 23U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3344 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 23U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3345 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 23U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3348 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3350 \brief Function: Function SPI_Data_Bits_24
3352 The function \b SPI_Data_Bits_24 verifies data exchange:
3353 - in Master Mode with default Slave Select mode
3354 - with default clock / frame format
3355 - with <b>24 data bits</b> per frame
3356 - with default bit order
3357 - at default bus speed
3358 - for default number of data items
3360 void SPI_Data_Bits_24 (void) {
3362 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3363 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3364 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3365 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3366 #if (SPI_SERVER_USED == 1)
3367 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3368 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 24U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3371 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 24U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3372 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 24U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3373 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 24U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3376 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3378 \brief Function: Function SPI_Data_Bits_25
3380 The function \b SPI_Data_Bits_25 verifies data exchange:
3381 - in Master Mode with default Slave Select mode
3382 - with default clock / frame format
3383 - with <b>25 data bits</b> per frame
3384 - with default bit order
3385 - at default bus speed
3386 - for default number of data items
3388 \note In Test Mode <b>Loopback</b> this test is not executed
3390 void SPI_Data_Bits_25 (void) {
3392 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3393 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3394 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3395 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3396 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3397 #if (SPI_SERVER_USED == 1)
3398 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3399 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 25U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3402 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 25U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3403 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 25U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3404 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 25U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3407 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3409 \brief Function: Function SPI_Data_Bits_26
3411 The function \b SPI_Data_Bits_26 verifies data exchange:
3412 - in Master Mode with default Slave Select mode
3413 - with default clock / frame format
3414 - with <b>26 data bits</b> per frame
3415 - with default bit order
3416 - at default bus speed
3417 - for default number of data items
3419 \note In Test Mode <b>Loopback</b> this test is not executed
3421 void SPI_Data_Bits_26 (void) {
3423 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3424 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3425 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3426 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3427 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3428 #if (SPI_SERVER_USED == 1)
3429 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3430 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 26U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3433 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 26U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3434 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 26U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3435 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 26U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3438 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3440 \brief Function: Function SPI_Data_Bits_27
3442 The function \b SPI_Data_Bits_27 verifies data exchange:
3443 - in Master Mode with default Slave Select mode
3444 - with default clock / frame format
3445 - with <b>27 data bits</b> per frame
3446 - with default bit order
3447 - at default bus speed
3448 - for default number of data items
3450 \note In Test Mode <b>Loopback</b> this test is not executed
3452 void SPI_Data_Bits_27 (void) {
3454 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3455 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3456 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3457 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3458 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3459 #if (SPI_SERVER_USED == 1)
3460 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3461 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 27U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3464 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 27U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3465 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 27U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3466 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 27U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3469 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3471 \brief Function: Function SPI_Data_Bits_28
3473 The function \b SPI_Data_Bits_28 verifies data exchange:
3474 - in Master Mode with default Slave Select mode
3475 - with default clock / frame format
3476 - with <b>28 data bits</b> per frame
3477 - with default bit order
3478 - at default bus speed
3479 - for default number of data items
3481 \note In Test Mode <b>Loopback</b> this test is not executed
3483 void SPI_Data_Bits_28 (void) {
3485 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3486 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3487 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3488 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3489 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3490 #if (SPI_SERVER_USED == 1)
3491 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3492 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 28U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3495 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 28U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3496 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 28U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3497 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 28U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3500 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3502 \brief Function: Function SPI_Data_Bits_29
3504 The function \b SPI_Data_Bits_29 verifies data exchange:
3505 - in Master Mode with default Slave Select mode
3506 - with default clock / frame format
3507 - with <b>29 data bits</b> per frame
3508 - with default bit order
3509 - at default bus speed
3510 - for default number of data items
3512 \note In Test Mode <b>Loopback</b> this test is not executed
3514 void SPI_Data_Bits_29 (void) {
3516 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3517 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3518 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3519 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3520 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3521 #if (SPI_SERVER_USED == 1)
3522 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3523 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 29U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3526 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 29U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3527 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 29U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3528 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 29U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3531 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3533 \brief Function: Function SPI_Data_Bits_30
3535 The function \b SPI_Data_Bits_30 verifies data exchange:
3536 - in Master Mode with default Slave Select mode
3537 - with default clock / frame format
3538 - with <b>30 data bits</b> per frame
3539 - with default bit order
3540 - at default bus speed
3541 - for default number of data items
3543 \note In Test Mode <b>Loopback</b> this test is not executed
3545 void SPI_Data_Bits_30 (void) {
3547 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3548 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3549 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3550 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3551 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3552 #if (SPI_SERVER_USED == 1)
3553 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3554 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 30U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3557 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 30U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3558 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 30U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3559 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 30U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3562 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3564 \brief Function: Function SPI_Data_Bits_31
3566 The function \b SPI_Data_Bits_31 verifies data exchange:
3567 - in Master Mode with default Slave Select mode
3568 - with default clock / frame format
3569 - with <b>31 data bits</b> per frame
3570 - with default bit order
3571 - at default bus speed
3572 - for default number of data items
3574 \note In Test Mode <b>Loopback</b> this test is not executed
3576 void SPI_Data_Bits_31 (void) {
3578 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3579 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3580 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3581 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3582 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3583 #if (SPI_SERVER_USED == 1)
3584 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3585 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 31U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3588 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 31U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3589 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 31U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3590 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 31U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3593 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3595 \brief Function: Function SPI_Data_Bits_32
3597 The function \b SPI_Data_Bits_32 verifies data exchange:
3598 - in Master Mode with default Slave Select mode
3599 - with default clock / frame format
3600 - with <b>32 data bits</b> per frame
3601 - with default bit order
3602 - at default bus speed
3603 - for default number of data items
3605 void SPI_Data_Bits_32 (void) {
3607 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3608 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3609 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3610 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3611 #if (SPI_SERVER_USED == 1)
3612 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3613 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, 32U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3616 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, 32U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3617 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, 32U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3618 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, 32U, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3621 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3623 \brief Function: Function SPI_Bit_Order_MSB_LSB
3625 The function \b SPI_Bit_Order_MSB_LSB verifies data exchange:
3626 - in Master Mode with default Slave Select mode
3627 - with default clock / frame format
3628 - with default data bits
3629 - with bit order <b>from MSB to LSB</b>
3630 - at default bus speed
3631 - for default number of data items
3633 \note In Test Mode <b>Loopback</b> this test is not executed
3635 void SPI_Bit_Order_MSB_LSB (void) {
3637 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3638 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3639 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3640 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3641 #if (SPI_SERVER_USED == 1)
3642 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3643 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3646 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3647 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3648 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, BO_MSB_TO_LSB, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3651 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3653 \brief Function: Function SPI_Bit_Order_LSB_MSB
3655 The function \b SPI_Bit_Order_LSB_MSB verifies data exchange:
3656 - in Master Mode with default Slave Select mode
3657 - with default clock / frame format
3658 - with default data bits
3659 - with bit order <b>from LSB to MSB</b>
3660 - at default bus speed
3661 - for default number of data items
3663 \note In Test Mode <b>Loopback</b> this test is not executed
3665 void SPI_Bit_Order_LSB_MSB (void) {
3667 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3668 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
3669 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
3670 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3671 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3672 #if (SPI_SERVER_USED == 1)
3673 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3674 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, BO_LSB_TO_MSB, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3677 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, BO_LSB_TO_MSB, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3678 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, BO_LSB_TO_MSB, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3679 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, BO_LSB_TO_MSB, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3682 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3684 \brief Function: Function SPI_Bus_Speed_Min
3686 The function \b SPI_Bus_Speed_Min verifies data exchange:
3687 - in Master Mode with default Slave Select mode
3688 - with default clock / frame format
3689 - with default data bits
3690 - with default bit order
3691 - at <b>minimum bus speed</b> (define <c>SPI_CFG_MIN_BUS_SPEED</c> in DV_SPI_Config.h)
3692 - for default number of data items
3694 This test function checks the following requirements:
3695 - measured bus speed is not 25% lower, or higher than requested
3696 - bus speed value returned by the driver is not negative
3697 - bus speed value returned by the driver is not higher then requested
3698 - bus speed value returned by the driver is not lower then 75% of requested
3700 void SPI_Bus_Speed_Min (void) {
3701 volatile uint64_t bps;
3702 volatile int32_t ret_bus_speed;
3704 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3705 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3706 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3707 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3708 #if (SPI_SERVER_USED == 1)
3709 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3710 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_MIN_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3713 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_MIN_BUS_SPEED, SPI_CFG_DEF_NUM);
3714 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_MIN_BUS_SPEED, SPI_CFG_DEF_NUM);
3715 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_MIN_BUS_SPEED, SPI_CFG_DEF_NUM);
3717 if (duration != 0xFFFFFFFFU) { // If Transfer finished before timeout
3718 if (duration != 0U) { // If duration of transfer was more than 0 SysTick counts
3719 bps = ((uint64_t)systick_freq * SPI_CFG_DEF_DATA_BITS * SPI_CFG_DEF_NUM) / duration;
3720 if ((bps < ((SPI_CFG_MIN_BUS_SPEED * 3) / 4)) ||
3721 (bps > SPI_CFG_MIN_BUS_SPEED)) {
3722 // If measured bus speed is 25% lower, or higher than requested
3723 (void)snprintf(msg_buf, sizeof(msg_buf), "[WARNING] At requested bus speed of %i bps, effective bus speed is %i bps", SPI_CFG_MIN_BUS_SPEED, (uint32_t)bps);
3724 TEST_MESSAGE(msg_buf);
3729 drv->Control (ARM_SPI_SET_BUS_SPEED, SPI_CFG_MIN_BUS_SPEED);
3730 ret_bus_speed = drv->Control (ARM_SPI_GET_BUS_SPEED, 0U);
3731 if (ret_bus_speed < 0) {
3732 // If bus speed value returned by the driver is negative
3733 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] Get bus speed returned negative value %i", ret_bus_speed);
3734 TEST_FAIL_MESSAGE(msg_buf);
3735 } else if ((uint32_t)ret_bus_speed > SPI_CFG_MIN_BUS_SPEED) {
3736 // If bus speed value returned by the driver is higher then requested
3737 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] Get bus speed returned %i bps instead of requested %i bps", ret_bus_speed, SPI_CFG_MIN_BUS_SPEED);
3738 TEST_FAIL_MESSAGE(msg_buf);
3739 } else if ((uint32_t)ret_bus_speed < ((SPI_CFG_MIN_BUS_SPEED * 3) / 4)) {
3740 // If bus speed value returned by the driver is lower then 75% of requested
3741 (void)snprintf(msg_buf, sizeof(msg_buf), "[WARNING] Get bus speed returned %i bps instead of requested %i bps", ret_bus_speed, SPI_CFG_MIN_BUS_SPEED);
3742 TEST_MESSAGE(msg_buf);
3746 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3748 \brief Function: Function SPI_Bus_Speed_Max
3750 The function \b SPI_Bus_Speed_Max verifies data exchange:
3751 - in Master Mode with default Slave Select mode
3752 - with default clock / frame format
3753 - with default data bits
3754 - with default bit order
3755 - at <b>maximum bus speed</b> (define <c>SPI_CFG_MAX_BUS_SPEED</c> in DV_SPI_Config.h)
3756 - for default number of data items
3758 This test function checks the following requirements:
3759 - measured bus speed is not 25% lower, or higher than requested
3760 - bus speed value returned by the driver is not negative
3761 - bus speed value returned by the driver is not higher then requested
3762 - bus speed value returned by the driver is not lower then 75% of requested
3764 void SPI_Bus_Speed_Max (void) {
3765 volatile uint64_t bps;
3766 volatile int32_t ret_bus_speed;
3768 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3769 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3770 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3771 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3772 #if (SPI_SERVER_USED == 1)
3773 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3774 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_MAX_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3777 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_MAX_BUS_SPEED, SPI_CFG_DEF_NUM);
3778 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_MAX_BUS_SPEED, SPI_CFG_DEF_NUM);
3779 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_MAX_BUS_SPEED, SPI_CFG_DEF_NUM);
3781 if (duration != 0xFFFFFFFFU) { // If Transfer finished before timeout
3782 if (duration != 0U) { // If duration of transfer was more than 0 SysTick counts
3783 bps = ((uint64_t)systick_freq * SPI_CFG_DEF_DATA_BITS * SPI_CFG_DEF_NUM) / duration;
3784 if ((bps < ((SPI_CFG_MAX_BUS_SPEED * 3) / 4)) ||
3785 (bps > SPI_CFG_MAX_BUS_SPEED)) {
3786 // If measured bus speed is 25% lower, or higher than requested
3787 (void)snprintf(msg_buf, sizeof(msg_buf), "[WARNING] At requested bus speed of %i bps, effective bus speed is %i bps", SPI_CFG_MAX_BUS_SPEED, (uint32_t)bps);
3788 TEST_MESSAGE(msg_buf);
3793 drv->Control (ARM_SPI_SET_BUS_SPEED, SPI_CFG_MAX_BUS_SPEED);
3794 ret_bus_speed = drv->Control (ARM_SPI_GET_BUS_SPEED, 0U);
3795 if (ret_bus_speed < 0) {
3796 // If bus speed value returned by the driver is negative
3797 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] Get bus speed returned negative value %i", ret_bus_speed);
3798 TEST_FAIL_MESSAGE(msg_buf);
3799 } else if ((uint32_t)ret_bus_speed > SPI_CFG_MAX_BUS_SPEED) {
3800 // If bus speed value returned by the driver is higher then requested
3801 (void)snprintf(msg_buf, sizeof(msg_buf), "[FAILED] Get bus speed returned %i bps instead of requested %i bps", ret_bus_speed, SPI_CFG_MAX_BUS_SPEED);
3802 TEST_FAIL_MESSAGE(msg_buf);
3803 } else if ((uint32_t)ret_bus_speed < ((SPI_CFG_MAX_BUS_SPEED * 3) / 4)) {
3804 // If bus speed value returned by the driver is lower then 75% of requested
3805 (void)snprintf(msg_buf, sizeof(msg_buf), "[WARNING] Get bus speed returned %i bps instead of requested %i bps", ret_bus_speed, SPI_CFG_MAX_BUS_SPEED);
3806 TEST_MESSAGE(msg_buf);
3810 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3812 \brief Function: Function SPI_Number_Of_Items
3814 The function \b SPI_Number_Of_Items verifies data exchange:
3815 - in Master Mode with default Slave Select mode
3816 - with default clock / frame format
3817 - with default data bits
3818 - with default bit order
3819 - at default bus speed
3820 - for <b>different number of items</b> (defines <c>SPI_CFG_NUM1 .. SPI_CFG_NUM5</c> in DV_SPI_Config.h)
3822 void SPI_Number_Of_Items (void) {
3824 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3825 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3826 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3827 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3828 #if (SPI_SERVER_USED == 1)
3829 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3830 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3833 #if (SPI_CFG_NUM1 != 0U)
3834 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM1);
3835 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM1);
3836 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM1);
3839 #if (SPI_CFG_NUM2 != 0U)
3840 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM2);
3841 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM2);
3842 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM2);
3845 #if (SPI_CFG_NUM3 != 0U)
3846 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM3);
3847 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM3);
3848 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM3);
3851 #if (SPI_CFG_NUM4 != 0U)
3852 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM4);
3853 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM4);
3854 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM4);
3857 #if (SPI_CFG_NUM5 != 0U)
3858 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM5);
3859 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM5);
3860 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_NUM5);
3864 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3866 \brief Function: Function SPI_GetDataCount
3868 The function \b SPI_GetDataCount verifies \b GetDataCount function (count changing) during data exchange:
3869 - in Master Mode with default Slave Select mode
3870 - with default clock / frame format
3871 - with default data bits
3872 - with default bit order
3873 - at default bus speed
3875 void SPI_GetDataCount (void) {
3877 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3878 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3879 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3880 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3881 #if (SPI_SERVER_USED == 1)
3882 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3883 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3886 SPI_DataExchange_Operation(OP_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3887 TEST_ASSERT_MESSAGE((data_count_sample != 0U) && (data_count_sample != SPI_CFG_DEF_NUM), "[FAILED] GetDataCount was not changing during the Send!");
3889 SPI_DataExchange_Operation(OP_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3890 TEST_ASSERT_MESSAGE((data_count_sample != 0U) && (data_count_sample != SPI_CFG_DEF_NUM), "[FAILED] GetDataCount was not changing during the Receive!");
3892 SPI_DataExchange_Operation(OP_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3893 TEST_ASSERT_MESSAGE((data_count_sample != 0U) && (data_count_sample != SPI_CFG_DEF_NUM), "[FAILED] GetDataCount was not changing during the Transfer!");
3896 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3898 \brief Function: Function SPI_Abort
3900 The function \b SPI_Abort verifies \b Abort function abort of data exchange:
3901 - in Master Mode with default Slave Select mode
3902 - with default clock / frame format
3903 - with default data bits
3904 - with default bit order
3905 - at default bus speed
3907 void SPI_Abort (void) {
3909 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3910 if (IsBitOrderValid() != EXIT_SUCCESS) { return; }
3911 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3912 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3913 #if (SPI_SERVER_USED == 1)
3914 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3915 if (ServerCheckSupport(MODE_SLAVE, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3918 SPI_DataExchange_Operation(OP_ABORT_SEND, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3919 SPI_DataExchange_Operation(OP_ABORT_RECEIVE, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3920 SPI_DataExchange_Operation(OP_ABORT_TRANSFER, MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_SS_MODE, SPI_CFG_DEF_BUS_SPEED, SPI_CFG_DEF_NUM);
3926 // End of spi_tests_data_xchg
3928 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3929 /* SPI Event tests */
3930 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3932 \defgroup spi_tests_evt Event
3935 These tests verify API and operation of the SPI event signaling, except ARM_SPI_EVENT_TRANSFER_COMPLETE
3936 signal which is tested in the Data Exchange tests.
3938 The event tests verify the following driver function
3939 (<a href="http://www.keil.com/pack/doc/CMSIS/Driver/html/group__spi__interface__gr.html" target="_blank">SPI Driver function documentation</a>):
3942 void (*ARM_SPI_SignalEvent_t) (uint32_t event);
3945 \note In Test Mode <b>Loopback</b> these tests are not executed
3949 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
3951 \brief Function: Function SPI_DataLost
3953 The function \b SPI_DataLost verifies signaling of the <b>ARM_SPI_EVENT_DATA_LOST</b> event:
3954 - in <b>Slave Mode</b> with <b>Slave Select line Hardware monitored</b>
3955 - with default clock / frame format
3956 - with default data bits
3957 - with default bit order
3958 - at default bus speed
3960 it also checks that status data_lost flag was activated.
3962 void SPI_DataLost (void) {
3964 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
3965 if (IsFormatValid() != EXIT_SUCCESS) { return; }
3966 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3967 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3968 #if (SPI_SERVER_USED == 1)
3969 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
3970 if (ServerCheckSupport(MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
3973 if (CmdSetCom (0U, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, 1U, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { break; }
3974 if (CmdXfer (1U, 8U, 8U, SPI_CFG_XFER_TIMEOUT) != EXIT_SUCCESS) { break; }
3975 drv->Control (ARM_SPI_MODE_INACTIVE, 0U);
3979 (void)drv->Control (ARM_SPI_MODE_SLAVE |
3980 ((SPI_CFG_DEF_FORMAT << ARM_SPI_FRAME_FORMAT_Pos) & ARM_SPI_FRAME_FORMAT_Msk) |
3981 ((SPI_CFG_DEF_DATA_BITS << ARM_SPI_DATA_BITS_Pos) & ARM_SPI_DATA_BITS_Msk) |
3982 ((SPI_CFG_DEF_BIT_ORDER << ARM_SPI_BIT_ORDER_Pos) & ARM_SPI_BIT_ORDER_Msk) |
3983 ARM_SPI_SS_SLAVE_HW ,
3986 (void)osDelay(SPI_CFG_XFER_TIMEOUT+20U); // Wait for SPI Server to timeout
3988 (void)drv->Control(ARM_SPI_MODE_INACTIVE, 0U);
3989 (void)osDelay(20U); // Wait for SPI Server to start reception of next command
3991 // Assert that event ARM_SPI_EVENT_DATA_LOST was signaled
3992 TEST_ASSERT_MESSAGE((event & ARM_SPI_EVENT_DATA_LOST) != 0U, "[FAILED] Event ARM_SPI_EVENT_DATA_LOST was not signaled!");
3994 // Assert that status data_lost flag is active
3995 TEST_ASSERT_MESSAGE(drv->GetStatus().data_lost != 0U, "[FAILED] Status data_lost flag was not activated!");
4002 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
4004 \brief Function: Function SPI_ModeFault
4006 The function \b SPI_ModeFault verifies signaling of the <b>ARM_SPI_EVENT_MODE_FAULT</b> event:
4007 - in <b>Master Mode</b> with <b>Slave Select line Hardware monitored Input</b>
4008 - with default clock / frame format
4009 - with default data bits
4010 - with default bit order
4011 - at default bus speed
4013 it also checks that status mode_fault flag was activated.
4015 void SPI_ModeFault (void) {
4017 if (IsNotLoopback() != EXIT_SUCCESS) { return; }
4018 if (IsNotFrameTI() != EXIT_SUCCESS) { return; }
4019 if (IsNotFrameMw() != EXIT_SUCCESS) { return; }
4020 if (DriverInit() != EXIT_SUCCESS) { TEST_FAIL(); return; }
4021 if (BuffersCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
4022 #if (SPI_SERVER_USED == 1)
4023 if (ServerCheck() != EXIT_SUCCESS) { TEST_FAIL(); return; }
4024 if (ServerCheckSupport(MODE_MASTER, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { TEST_FAIL(); return; }
4027 if (CmdSetCom (0U, SPI_CFG_DEF_FORMAT, SPI_CFG_DEF_DATA_BITS, SPI_CFG_DEF_BIT_ORDER, 1U, SPI_CFG_DEF_BUS_SPEED) != EXIT_SUCCESS) { break; }
4028 if (CmdXfer (1U, 8U, 8U, SPI_CFG_XFER_TIMEOUT) != EXIT_SUCCESS) { break; }
4029 drv->Control (ARM_SPI_MODE_INACTIVE, 0U);
4033 (void)drv->Control (ARM_SPI_MODE_MASTER |
4034 ((SPI_CFG_DEF_FORMAT << ARM_SPI_FRAME_FORMAT_Pos) & ARM_SPI_FRAME_FORMAT_Msk) |
4035 ((SPI_CFG_DEF_DATA_BITS << ARM_SPI_DATA_BITS_Pos) & ARM_SPI_DATA_BITS_Msk) |
4036 ((SPI_CFG_DEF_BIT_ORDER << ARM_SPI_BIT_ORDER_Pos) & ARM_SPI_BIT_ORDER_Msk) |
4037 ARM_SPI_SS_MASTER_HW_INPUT ,
4038 SPI_CFG_DEF_BUS_SPEED);
4040 (void)osDelay(SPI_CFG_XFER_TIMEOUT+20U); // Wait for SPI Server to timeout
4042 (void)drv->Control(ARM_SPI_MODE_INACTIVE, 0U);
4043 (void)osDelay(20U); // Wait for SPI Server to start reception of next command
4045 // Assert that event ARM_SPI_EVENT_MODE_FAULT was signaled
4046 TEST_ASSERT_MESSAGE((event & ARM_SPI_EVENT_MODE_FAULT) != 0U, "[FAILED] Event ARM_SPI_EVENT_MODE_FAULT was not signaled!");
4048 // Assert that status mode_fault flag is active
4049 TEST_ASSERT_MESSAGE(drv->GetStatus().mode_fault != 0U, "[FAILED] Status mode_fault flag was not activated!");
4059 // End of spi_tests_evt