drv_soft_spi.h 1.6 KB

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