SN_SPI.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef SN_SPI_H
  2. #define SN_SPI_H
  3. #include "ciu32f003_std.h"
  4. #define SPI_MOSI_PA0 1U
  5. #define SPI_MOSI_PA7 2U
  6. #define SPI_MOSI_PB7 3U
  7. #define SPI_MISO_PA1 1U
  8. #define SPI_MISO_PB6 2U
  9. #define SPI_MISO_PC1 3U
  10. #define SPI_SCK_PA6 1U
  11. #define SPI_SCK_PB0 2U
  12. #define SPI_SCK_PB2 3U
  13. #define SPI_NSS_NULL 1U
  14. #define SPI_NSS_PA6 2U
  15. #define SPI_NSS_PB1 3U
  16. #define SPI_NSS_PB5 4U
  17. #define SPI_SOF_CS_PA0 1U
  18. #define SPI_SOF_CS_PA1 2U
  19. #define SPI_SOF_CS_PA2 3U
  20. #define SPI_SOF_CS_PA3 4U
  21. #define SPI_SOF_CS_PA4 5U
  22. #define SPI_SOF_CS_PA5 6U
  23. #define SPI_SOF_CS_PA6 7U
  24. #define SPI_SOF_CS_PA7 8U
  25. #define SPI_SOF_CS_PB0 9U
  26. #define SPI_SOF_CS_PB1 10U
  27. #define SPI_SOF_CS_PB2 11U
  28. #define SPI_SOF_CS_PB3 12U
  29. #define SPI_SOF_CS_PB4 13U
  30. #define SPI_SOF_CS_PB5 14U
  31. #define SPI_SOF_CS_PB6 15U
  32. #define SPI_SOF_CS_PB7 16U
  33. #define SPI_SOF_CS_PC0 17U
  34. #define SPI_SOF_CS_PC1 18U
  35. // SPI 模式 CPOL CPHA 说明
  36. // 模式 0 0 0 时钟空闲为低电平,在时钟第一个边沿进行数据采样,即数据在时钟的上升沿采样,下降沿变化。
  37. // 模式 1 0 1 时钟空闲为低电平,在时钟第二个边沿进行数据采样,即数据在时钟的下降沿采样,上升沿变化。
  38. // 模式 2 1 0 时钟空闲为高电平,在时钟第一个边沿进行数据采样,即数据在时钟的下降沿采样,上升沿变化。
  39. // 模式 3 1 1 时钟空闲为高电平,在时钟第二个边沿进行数据采样,即数据在时钟的上升沿采样,下降沿变化。
  40. #define SPI_MODE_0 0U
  41. #define SPI_MODE_1 1U
  42. #define SPI_MODE_2 2U
  43. #define SPI_MODE_3 3U
  44. #define SPI_MSB SPI_FIRSTBIT_MSB
  45. #define SPI_LSB SPI_FIRSTBIT_LSB
  46. void SN_SPI_IO_set(uint8_t SPI_MOSI_x , uint8_t SPI_MISO_x , uint8_t SPI_SCK_x, uint8_t SPI_NSS_x ); //设置SPI的io
  47. void SN_SPI_MASTER_init(uint32_t SPI_DIV, uint8_t SPI_MODE_X , uint8_t SPI_MSB_OR_LSB ); //SPI外设设置并且启动
  48. void SN_SPI_IO_SOF_cs(uint8_t SPI_SOF_CS_Px); //设置软件片选
  49. void SN_SPI_TX_RX(uint8_t * send_data ,uint8_t * read_data ,uint16_t len); //SPI发送接收
  50. void SN_SPI_TX(uint8_t * send_data ,uint16_t len); //SPI发送数据
  51. void SN_SPI_RX(uint8_t * read_data ,uint16_t len); //SPI接收数据
  52. #define SN_SPI_Deinit() {std_spi_deinit(); std_rcc_apb2_clk_disable(RCC_PERIPH_CLK_SPI1)} //SPI去初始化
  53. #endif