SPI_DMA.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #ifndef __SPI_DMA_H_
  2. #define __SPI_DMA_H_
  3. #include "main.h"
  4. /********************************SPI1*****************************/
  5. /****** GPIO 配置******/
  6. //SPI1 GPIO
  7. #define SPI1_RCC_GPIO_CONFIG() (RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE))
  8. #define SPI1_RCC_CONFIG() (RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE))
  9. #define SPI1_PORT_CONFIG (GPIOA)
  10. #define SPI1_PIN_AF_CONFIG (GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7)
  11. #define SPI1_PIN_CS_CONFIG (GPIO_Pin_4)
  12. #define SPI_EEPROM_CS_LOW() (GPIO_ResetBits(SPI1_PORT_CONFIG, SPI1_PIN_CS_CONFIG))
  13. #define SPI_EEPROM_CS_HIGH() (GPIO_SetBits(SPI1_PORT_CONFIG, SPI1_PIN_CS_CONFIG))
  14. //通讯参数
  15. #define SPI1_Mode_CONFIG (SPI_Mode_Master)
  16. #define SPI1_Baud_CONFIG (SPI_BaudRatePrescaler_256)
  17. //SPI1 号
  18. #define SPI1_CONFIG (SPI1)
  19. /****** SPI1优先级******/
  20. #define SPI1_NVIC_Group (NVIC_PriorityGroup_0)
  21. #define SPI1_NVIC_Interrupt (SPI1_IRQn) //uart1中断号
  22. #define SPI1_NVIC_Pre (0)
  23. #define SPI1_NVIC_Sub (3)
  24. /********DMA配置********/
  25. #define DMA_SPI1_DR_Addr ((u32)&SPI1->DR)//0x4001300C
  26. #define DMA_SPI1_RCC_CONFIG (RCC_AHBPeriph_DMA1)
  27. #define DMA_SPI1_Rx_CHANNLE_CONFIG (DMA1_Channel2)
  28. #define DMA_SPI1_Rx_ADDR_CONFIG (SPI1_RX_Buff)
  29. #define DMA_SPI1_Tx_CHANNLE_CONFIG (DMA1_Channel3)
  30. #define DMA_SPI1_Tx_ADDR_CONFIG (SPI1_TX_Buff)
  31. /****** DMA优先级******/
  32. #define DMA_SPI1_NVIC_Group (NVIC_PriorityGroup_0)
  33. #define DMA_SPI1_NVIC_Rx_Interrupt (DMA1_Channel2_IRQn) //uart1中断号
  34. #define DMA_SPI1_NVIC_Rx_Pre (0)
  35. #define DMA_SPI1_NVIC_Rx_Sub (4)
  36. #define DMA_SPI1_NVIC_Tx_Interrupt (DMA1_Channel3_IRQn) //uart1中断号
  37. #define DMA_SPI1_NVIC_Tx_Pre (0)
  38. #define DMA_SPI1_NVIC_Tx_Sub (5)
  39. /********************************SPI2*****************************/
  40. /****** GPIO 配置******/
  41. //SPI2 GPIO
  42. #define SPI2_RCC_GPIO_CONFIG() (RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE))
  43. #define SPI2_RCC_CONFIG() (RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE))
  44. #define SPI2_PORT_CONFIG (GPIOB)
  45. #define SPI2_PIN_AF_CONFIG (GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15)
  46. #define SPI2_PIN_CS_CONFIG (GPIO_Pin_12)
  47. #define SPI2_EEPROM_CS_VAL (PBin(12))
  48. //通讯参数
  49. #define SPI2_Mode_CONFIG (SPI_Mode_Slave)
  50. #define SPI2_Baud_CONFIG (SPI_BaudRatePrescaler_16)
  51. //SPI1 号
  52. #define SPI2_CONFIG (SPI2)
  53. /****** SPI1优先级******/
  54. #define SPI2_NVIC_Group (NVIC_PriorityGroup_0)
  55. #define SPI2_NVIC_Interrupt (SPI2_IRQn) //uart1中断号
  56. #define SPI2_NVIC_Pre (0)
  57. #define SPI2_NVIC_Sub (6)
  58. /********DMA配置********/
  59. #define DMA_SPI2_DR_Addr ((u32)&SPI2->DR)//0x4001300C
  60. #define DMA_SPI2_RCC_CONFIG (RCC_AHBPeriph_DMA1)
  61. #define DMA_SPI2_Rx_CHANNLE_CONFIG (DMA1_Channel4)
  62. #define DMA_SPI2_Rx_ADDR_CONFIG (SPI2_RX_Buff)
  63. #define DMA_SPI2_Tx_CHANNLE_CONFIG (DMA1_Channel5)
  64. #define DMA_SPI2_Tx_ADDR_CONFIG (SPI2_TX_Buff)
  65. /****** DMA优先级******/
  66. #define DMA_SPI2_NVIC_Group (NVIC_PriorityGroup_0)
  67. #define DMA_SPI2_NVIC_Rx_Interrupt (DMA1_Channel4_IRQn) //uart1中断号
  68. #define DMA_SPI2_NVIC_Rx_Pre (0)
  69. #define DMA_SPI2_NVIC_Rx_Sub (7)
  70. #define DMA_SPI2_NVIC_Tx_Interrupt (DMA1_Channel5_IRQn) //uart1中断号
  71. #define DMA_SPI2_NVIC_Tx_Pre (0)
  72. #define DMA_SPI2_NVIC_Tx_Sub (8)
  73. #define BufferSize (32)
  74. extern void SPI1_GPIO_Configuration ( void );
  75. extern void SPI1_NVIC_Configuration ( void );
  76. extern void DMA1_SPI1_Configuration ( void );
  77. extern void DMA1_SPI1_NVIC_Configuration ( void );
  78. extern u8 SPIx_ReadWriteByte(u8 byte);
  79. extern void SPI1_Send ( u8 *buff, u32 len );
  80. extern void SPI1_Recive ( u8 *buff, u32 len );
  81. extern void SPI2_GPIO_Configuration ( void );
  82. extern void SPI2_NVIC_Configuration ( void );
  83. extern void DMA1_SPI2_Configuration ( void );
  84. extern void DMA1_SPI2_NVIC_Configuration ( void );
  85. extern u8 SPI2_ReadWriteByte(u8 byte);
  86. extern void SPI2_Send ( u8 *buff, u32 len );
  87. extern void SPI2_Recive ( u8 *buff, u32 len );
  88. extern u8 SPI1_TX_Buff[];
  89. extern u8 SPI1_RX_Buff[];
  90. extern u8 SPI2_TX_Buff[];
  91. extern u8 SPI2_RX_Buff[];
  92. extern u8 RxCounterSpi1;
  93. extern u8 TxCounterSpi1;
  94. extern u8 RxCounterSpi2;
  95. extern u8 TxCounterSpi2;
  96. extern bool SPI1_data_come;
  97. extern bool SPI2_data_come;
  98. #endif