rt_stm32f10x_spi.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef STM32_SPI_H_INCLUDED
  2. #define STM32_SPI_H_INCLUDED
  3. #include <rtdevice.h>
  4. #include "stm32f10x.h"
  5. #include "stm32f10x_spi.h"
  6. #include "board.h"
  7. #if defined(SPI1_USING_DMA) || defined(SPI2_USING_DMA) || defined(SPI3_USING_DMA)
  8. #define SPI_USE_DMA
  9. #endif /*defined(SPI1_USING_DMA) || defined(SPI2_USING_DMA) || defined(SPI3_USING_DMA)*/
  10. #ifdef SPI_USE_DMA
  11. #define SPI_DMA_RX_DONE 0x01
  12. #define SPI_DMA_TX_DONE 0x02
  13. #define SPI_DMA_COMPLETE (SPI_DMA_RX_DONE | SPI_DMA_TX_DONE)
  14. struct stm32_spi_dma_private
  15. {
  16. DMA_Channel_TypeDef * DMA_Channel_TX;
  17. DMA_Channel_TypeDef * DMA_Channel_RX;
  18. uint32_t DMA_Channel_TX_FLAG_TC;
  19. uint32_t DMA_Channel_TX_FLAG_TE;
  20. uint32_t DMA_Channel_RX_FLAG_TC;
  21. uint32_t DMA_Channel_RX_FLAG_TE;
  22. uint8_t tx_irq_ch;
  23. uint8_t rx_irq_ch;
  24. uint32_t tx_gl_flag;
  25. uint32_t rx_gl_flag;
  26. };
  27. struct stm32_spi_dma
  28. {
  29. const struct stm32_spi_dma_private *priv_data;
  30. struct rt_event event;
  31. };
  32. #endif /*SPI_USE_DMA*/
  33. struct stm32_spi_bus
  34. {
  35. struct rt_spi_bus parent;
  36. SPI_TypeDef * SPI;
  37. #ifdef SPI_USE_DMA
  38. struct stm32_spi_dma *dma;
  39. #endif /* SPI_USE_DMA */
  40. };
  41. struct stm32_spi_cs
  42. {
  43. GPIO_TypeDef * GPIOx;
  44. uint16_t GPIO_Pin;
  45. };
  46. /* public function list */
  47. rt_err_t stm32_spi_register(SPI_TypeDef * SPI,
  48. struct stm32_spi_bus * stm32_spi,
  49. const char * spi_bus_name);
  50. #endif // STM32_SPI_H_INCLUDED