1 /* 2 * Copyright (c) 2006-2018, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2021-02-14 supperthomas first version 9 */ 10 11 #include <rtthread.h> 12 #include <rtdevice.h> 13 #include <rthw.h> 14 15 #include "spi.h" 16 17 #ifndef __DRV_SPI_H_ 18 #define __DRV_SPI_H_ 19 20 /** 21 * @brief Attach the spi device to SPI bus, this function must be used after initialization. 22 * @param bus_name spi bus name "spi0"/"spi1"/"spi2" 23 * @param device_name spi device name "spi0x"/"spi1x"/"spi2x" 24 * @param ss_pin spi ss pin number 25 * @retval -RT_ERROR / RT_EOK 26 */ 27 rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, rt_uint32_t ss_pin); 28 29 //SPI bus config 30 #ifdef BSP_USING_SPI0 31 #define MCU_SPI0_CONFIG \ 32 { \ 33 .bus_name = "spi0", \ 34 .spi_instance = SPI0A, \ 35 } 36 #endif 37 #ifdef BSP_USING_SPI1 38 #ifdef BSP_USING_SPI1A //The SPI1A is conflit with UART1 TX RX P0.10 P0.11 39 #define MCU_SPI1_CONFIG \ 40 { \ 41 .bus_name = "spi1", \ 42 .spi_instance = SPI1A \ 43 } 44 #else 45 #define MCU_SPI1_CONFIG \ 46 { \ 47 .bus_name = "spi1", \ 48 .spi_instance = SPI1B \ 49 } 50 #endif 51 #endif 52 53 struct mcu_drv_spi_config 54 { 55 char *bus_name; 56 spi_type spi_instance; 57 }; 58 59 struct mcu_drv_spi 60 { 61 spi_type spi_instance; 62 spi_req_t spixfer_req; 63 struct rt_spi_configuration *cfg; 64 struct rt_spi_bus spi_bus; 65 }; 66 67 #endif /*__DRV_SPI_H_*/ 68