1 /* 2 * Copyright (c) 2006-2025, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2023-04-14 Wangyuqiang the first version 9 */ 10 11 #ifndef __DRV_SOFT_SPI__ 12 #define __DRV_SOFT_SPI__ 13 14 #include <rthw.h> 15 #include <rtdevice.h> 16 #include <dev_spi_bit_ops.h> 17 18 /* ra soft spi config */ 19 struct ra_soft_spi_config 20 { 21 rt_base_t sck; 22 rt_base_t mosi; 23 rt_base_t miso; 24 const char *bus_name; 25 }; 26 27 /* ra soft spi dirver */ 28 struct ra_soft_spi 29 { 30 struct rt_spi_bit_obj spi; 31 struct rt_spi_bit_ops ops; 32 struct ra_soft_spi_config *cfg; 33 }; 34 35 #ifdef BSP_USING_SOFT_SPI1 36 #define SOFT_SPI1_BUS_CONFIG \ 37 { \ 38 .sck = BSP_S_SPI1_SCK_PIN, \ 39 .mosi = BSP_S_SPI1_MOSI_PIN, \ 40 .miso = BSP_S_SPI1_MISO_PIN, \ 41 .bus_name = "sspi1", \ 42 } 43 #endif /* BSP_USING_SOFT_SPI1 */ 44 #ifdef BSP_USING_SOFT_SPI2 45 #define SOFT_SPI2_BUS_CONFIG \ 46 { \ 47 .sck = BSP_S_SPI2_SCK_PIN, \ 48 .mosi = BSP_S_SPI2_MOSI_PIN, \ 49 .miso = BSP_S_SPI2_MISO_PIN, \ 50 .bus_name = "sspi2", \ 51 } 52 #endif /* BSP_USING_SOFT_SPI2 */ 53 54 rt_err_t rt_soft_spi_device_attach(const char *bus_name, const char *device_name, rt_base_t cs_pin); 55 int rt_soft_spi_init(void); 56 57 #endif /* __DRV_SOFT_SPI__ */ 58