drv_spi.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. #include <rtthread.h>
  11. #include <rtdevice.h>
  12. #include <rthw.h>
  13. #include "spi.h"
  14. #ifndef __DRV_SPI_H_
  15. #define __DRV_SPI_H_
  16. /**
  17. * @brief Attach the spi device to SPI bus, this function must be used after initialization.
  18. * @param bus_name spi bus name "spi0"/"spi1"/"spi2"
  19. * @param device_name spi device name "spi0x"/"spi1x"/"spi2x"
  20. * @param ss_pin spi ss pin number
  21. * @retval -RT_ERROR / RT_EOK
  22. */
  23. rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, rt_uint32_t ss_pin);
  24. //SPI bus config
  25. #ifdef BSP_USING_SPI0
  26. #define MCU_SPI0_CONFIG \
  27. { \
  28. .bus_name = "spi0", \
  29. .spi_instance = SPI0A, \
  30. }
  31. #endif
  32. #ifdef BSP_USING_SPI1
  33. #ifdef BSP_USING_SPI1A //The SPI1A is conflit with UART1 TX RX P0.10 P0.11
  34. #define MCU_SPI1_CONFIG \
  35. { \
  36. .bus_name = "spi1", \
  37. .spi_instance = SPI1A \
  38. }
  39. #else
  40. #define MCU_SPI1_CONFIG \
  41. { \
  42. .bus_name = "spi1", \
  43. .spi_instance = SPI1B \
  44. }
  45. #endif
  46. #endif
  47. struct mcu_drv_spi_config
  48. {
  49. char *bus_name;
  50. spi_type spi_instance;
  51. };
  52. struct mcu_drv_spi
  53. {
  54. spi_type spi_instance;
  55. spi_req_t spixfer_req;
  56. struct rt_spi_configuration *cfg;
  57. struct rt_spi_bus spi_bus;
  58. };
  59. #endif /*__DRV_SPI_H_*/