Loading...
/* * Copyright (c) 2016 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ /* * @addtogroup t_spi_basic * @{ * @defgroup t_spi_basic_operations test_spi_basic_operation_mode * @brief TestPurpose: verify SPI basic operations in different mode * @} */ #include <spi.h> #include <zephyr.h> #include <ztest.h> #ifdef CONFIG_ARC #define SPI_DEV_NAME CONFIG_SPI_SS_0_NAME #else #ifdef CONFIG_BOARD_ARDUINO_101 #define SPI_DEV_NAME CONFIG_SPI_1_NAME #else #define SPI_DEV_NAME CONFIG_SPI_0_NAME #endif #endif #define SPI_SLAVE 1 #define SPI_MAX_CLK_FREQ_250KHZ 128 static struct spi_config spi_conf = { .config = SPI_MODE_CPOL | SPI_MODE_CPHA | SPI_WORD(8), .max_sys_freq = SPI_MAX_CLK_FREQ_250KHZ, }; static char *wbuf = "Hello world"; static char rbuf[16] = {}; static int test_spi(u32_t mode) { struct device *spi_dev = device_get_binding(SPI_DEV_NAME); u32_t len = strlen(wbuf); if (!spi_dev) { TC_PRINT("Cannot get SPI device\n"); return TC_FAIL; } spi_conf.config = mode | SPI_MODE_LOOP; /* 1. verify spi_configure() */ if (spi_configure(spi_dev, &spi_conf)) { TC_PRINT("SPI config failed\n"); return TC_FAIL; } /* 2. verify spi_slave_select() */ if (spi_slave_select(spi_dev, SPI_SLAVE)) { TC_PRINT("SPI slave select failed\n"); return TC_FAIL; } /* 3. verify spi_write() */ if (spi_write(spi_dev, wbuf, len) != 0) { TC_PRINT("SPI write failed\n"); return TC_FAIL; } /* 4. verify spi_transceive() */ TC_PRINT("SPI sent: %s\n", wbuf); if (spi_transceive(spi_dev, wbuf, len, rbuf, len) != 0) { TC_PRINT("SPI transceive failed\n"); return TC_FAIL; } TC_PRINT("SPI transceived: %s\n", rbuf); if (!strcmp(wbuf, rbuf)) { return TC_PASS; } else { return TC_FAIL; } } void test_spi_cpol(void) { TC_PRINT("Test SPI_MODE_CPOL\n"); zassert_true(test_spi(SPI_WORD(8) | SPI_MODE_CPOL) == TC_PASS, NULL); } void test_spi_cpha(void) { TC_PRINT("Test SPI_MODE_CPHA\n"); zassert_true(test_spi(SPI_WORD(8) | SPI_MODE_CPHA) == TC_PASS, NULL); } void test_spi_cpol_cpha(void) { TC_PRINT("Test SPI_MODE_CPOL | SPI_MODE_CPHA\n"); zassert_true(test_spi(SPI_WORD(8) | SPI_MODE_CPOL | SPI_MODE_CPHA) == TC_PASS, NULL); } |