123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- /**
- ******************************************************************************
- * @brief SPI header file of the firmware library.
- ******************************************************************************
- */
- /* Define to prevent recursive inclusion -------------------------------------*/
- #ifndef __GD32F10X_SPI_H
- #define __GD32F10X_SPI_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Includes ------------------------------------------------------------------*/
- #include "gd32f10x.h"
- /** @addtogroup GD32F10x_Firmware
- * @{
- */
- /** @addtogroup SPI
- * @{
- */
- /** @defgroup SPI_Exported_Types
- * @{
- */
- /**
- * @brief SPI Initial Parameters
- */
- typedef struct {
- uint16_t SPI_TransType; /*!< The transfer type, choose one from @ref SPI_transfer_type. */
- uint16_t SPI_Mode; /*!< The operating mode, choose one from @ref SPI_mode. */
- uint16_t SPI_FrameFormat; /*!< The SPI data frame format, choose one from @ref SPI_data_frame_format. */
- uint16_t SPI_SCKPL; /*!< The clock polarity in idel state, choose one from @ref SPI_Clock_Polarity. */
- uint16_t SPI_SCKPH; /*!< The clock phase, choose one from @ref SPI_Clock_Phase. */
- uint16_t SPI_SWNSSEN; /*!< The NSS signal management, choose one from @ref SPI_Software_NSS_management. */
- uint16_t SPI_PSC; /*!< The Baud Rate prescaler value, choose one from @ref SPI_BaudRate_Prescaler. */
- uint16_t SPI_FirstBit; /*!< The data transfers start from MSB or LSB bit, choose one from @ref SPI_MSB_LSB_transmission. */
- uint16_t SPI_CRCPOL; /*!< The polynomial used for the CRC calculation. */
- } SPI_InitPara;
- /**
- * @brief I2S Initial Parameters
- */
- typedef struct {
- uint16_t I2S_Mode; /*!< The operating mode and transfer direction, choose one from @ref I2S_Mode. */
- uint16_t I2S_STD; /*!< The I2S standard, choose one from @ref I2S_Standard. */
- uint16_t I2S_FrameFormat; /*!< The I2S data length and channel length, choose one from @ref I2S_Data_Format. */
- uint16_t I2S_MCKOE; /*!< The I2S MCK output is enabled or disable, choose one from @ref I2S_MCLK_Output. */
- uint32_t I2S_AudioFreq; /*!< The audio sampling frequency, choose one from @ref I2S_Audio_Frequency. */
- uint16_t I2S_CKPL; /*!< The clock polarity in idel state, choose one from @ref I2S_Clock_Polarity. */
- } I2S_InitPara;
- /**
- * @}
- */
- /** @defgroup SPI_Exported_Constants
- * @{
- */
- /** @defgroup SPI_transfer_type
- * @{
- */
- #define SPI_TRANSTYPE_FULLDUPLEX ((uint16_t)0x0000)
- #define SPI_TRANSTYPE_RXONLY SPI_CTLR1_RO
- #define SPI_TRANSTYPE_BDMRX SPI_CTLR1_BDM
- #define SPI_TRANSTYPE_BDMTX (SPI_CTLR1_BDM | SPI_CTLR1_BDOE)
- /**
- * @}
- */
- /** @defgroup SPI_mode
- * @{
- */
- #define SPI_MODE_MASTER (SPI_CTLR1_MSTMODE|SPI_CTLR1_SWNSS)
- #define SPI_MODE_SLAVE ((uint16_t)0x0000)
- /**
- * @}
- */
- /** @defgroup SPI_data_frame_format
- * @{
- */
- #define SPI_FRAMEFORMAT_16BIT SPI_CTLR1_FF16
- #define SPI_FRAMEFORMAT_8BIT ((uint16_t)0x0000)
- /**
- * @}
- */
- /** @defgroup SPI_Clock_Polarity
- * @{
- */
- #define SPI_SCKPL_LOW ((uint16_t)0x0000)
- #define SPI_SCKPL_HIGH SPI_CTLR1_SCKPL
- /**
- * @}
- */
- /** @defgroup SPI_Clock_Phase
- * @{
- */
- #define SPI_SCKPH_1EDGE ((uint16_t)0x0000)
- #define SPI_SCKPH_2EDGE SPI_CTLR1_SCKPH
- /**
- * @}
- */
- /** @defgroup SPI_Software_NSS_management
- * @{
- */
- #define SPI_SWNSS_SOFT SPI_CTLR1_SWNSSEN
- #define SPI_SWNSS_HARD ((uint16_t)0x0000)
- /**
- * @}
- */
- /** @defgroup SPI_BaudRate_Prescaler
- * @{
- */
- #define SPI_PSC_2 ((uint16_t)0x0000)
- #define SPI_PSC_4 ((uint16_t)0x0008)
- #define SPI_PSC_8 ((uint16_t)0x0010)
- #define SPI_PSC_16 ((uint16_t)0x0018)
- #define SPI_PSC_32 ((uint16_t)0x0020)
- #define SPI_PSC_64 ((uint16_t)0x0028)
- #define SPI_PSC_128 ((uint16_t)0x0030)
- #define SPI_PSC_256 ((uint16_t)0x0038)
- /**
- * @}
- */
- /** @defgroup SPI_MSB_LSB_transmission
- * @{
- */
- #define SPI_FIRSTBIT_MSB ((uint16_t)0x0000)
- #define SPI_FIRSTBIT_LSB SPI_CTLR1_LF
- /**
- * @}
- */
- /** @defgroup I2S_Mode
- * @{
- */
- #define I2S_MODE_SLAVETX ((uint16_t)0x0000)
- #define I2S_MODE_SLAVERX ((uint16_t)0x0100)
- #define I2S_MODE_MASTERTX ((uint16_t)0x0200)
- #define I2S_MODE_MASTERRX ((uint16_t)0x0300)
- /**
- * @}
- */
- /** @defgroup I2S_Standard
- * @{
- */
- #define I2S_STD_PHILLIPS ((uint16_t)0x0000)
- #define I2S_STD_MSB ((uint16_t)0x0010)
- #define I2S_STD_LSB ((uint16_t)0x0020)
- #define I2S_STD_PCMSHORT ((uint16_t)0x0030)
- #define I2S_STD_PCMLONG ((uint16_t)0x00B0)
- /**
- * @}
- */
- /** @defgroup I2S_Data_Format
- * @{
- */
- #define I2S_FRAMEFORMAT_DL16b_CL16b ((uint16_t)0x0000)
- #define I2S_FRAMEFORMAT_DL16b_CL32b ((uint16_t)0x0001)
- #define I2S_FRAMEFORMAT_DL24b_CL32b ((uint16_t)0x0003)
- #define I2S_FRAMEFORMAT_DL32b_CL32b ((uint16_t)0x0005)
- /**
- * @}
- */
- /** @defgroup I2S_MCLK_Output
- * @{
- */
- #define I2S_MCK_ENABLE SPI_I2SCKP_MCKOE
- #define I2S_MCK_DISABLE ((uint16_t)0x0000)
- /**
- * @}
- */
- /** @defgroup I2S_Audio_Frequency
- * @{
- */
- #define I2S_AUDIOFREQ_DEFAULT ((uint32_t)2)
- #define I2S_AUDIOFREQ_8K ((uint32_t)8000)
- #define I2S_AUDIOFREQ_11K ((uint32_t)11025)
- #define I2S_AUDIOFREQ_16K ((uint32_t)16000)
- #define I2S_AUDIOFREQ_22K ((uint32_t)22050)
- #define I2S_AUDIOFREQ_32K ((uint32_t)32000)
- #define I2S_AUDIOFREQ_44K ((uint32_t)44100)
- #define I2S_AUDIOFREQ_48K ((uint32_t)48000)
- #define I2S_AUDIOFREQ_96K ((uint32_t)96000)
- #define I2S_AUDIOFREQ_192K ((uint32_t)192000)
- /**
- * @}
- */
- /** @defgroup I2S_Clock_Polarity
- * @{
- */
- #define I2S_CKPL_LOW ((uint16_t)0x0000)
- #define I2S_CKPL_HIGH SPI_I2SCTLR_CKPL
- /**
- * @}
- */
- /** @defgroup SPI_I2S_DMA_transfer_requests
- * @{
- */
- #define SPI_I2S_DMA_TX SPI_CTLR2_DMATE
- #define SPI_I2S_DMA_RX SPI_CTLR2_DMARE
- /**
- * @}
- */
- /** @defgroup SPI_NSS_internal_software_management
- * @{
- */
- #define SPI_SWNSS_SET ((uint16_t)0x0001)
- #define SPI_SWNSS_RESET ((uint16_t)0x0000)
- /**
- * @}
- */
- /** @defgroup SPI_CRC_Transmit_Receive
- * @{
- */
- #define SPI_CRC_TX ((uint8_t)0x00)
- #define SPI_CRC_RX ((uint8_t)0x01)
- /**
- * @}
- */
- /** @defgroup SPI_direction_transmit_receive
- * @{
- */
- #define SPI_BDOE_RX (~SPI_CTLR1_BDOE)
- #define SPI_BDOE_TX SPI_CTLR1_BDOE
- /**
- * @}
- */
- /** @defgroup SPI_I2S_interrupts_definition
- * @{
- */
- #define SPI_I2S_INT_TBE ((uint8_t)0x71)
- #define SPI_I2S_INT_RBNE ((uint8_t)0x60)
- #define SPI_I2S_INT_ERR ((uint8_t)0x50)
- #define SPI_I2S_INT_OVR ((uint8_t)0x56)
- #define SPI_INT_MODF ((uint8_t)0x55)
- #define SPI_INT_CRCERR ((uint8_t)0x54)
- #define I2S_INT_UDR ((uint8_t)0x53)
- /**
- * @}
- */
- /** @defgroup SPI_I2S_flags_definition
- * @{
- */
- #define SPI_FLAG_RBNE SPI_STR_RBNE
- #define SPI_FLAG_TBE SPI_STR_TBE
- #define SPI_FLAG_CRCERR SPI_STR_CRCE
- #define SPI_FLAG_MODF SPI_STR_CONFE
- #define SPI_FLAG_OVR SPI_STR_RXORE
- #define SPI_FLAG_BSY SPI_STR_TRANS
- #define I2S_FLAG_RBNE SPI_STR_RBNE
- #define I2S_FLAG_TBE SPI_STR_TBE
- #define I2S_FLAG_CHSIDE SPI_STR_I2SCH
- #define I2S_FLAG_UDR SPI_STR_TXURE
- #define I2S_FLAG_OVR SPI_STR_RXORE
- #define I2S_FLAG_BSY SPI_STR_TRANS
- /**
- * @}
- */
- /**
- * @}
- */
- /** @defgroup SPI_Exported_Functions
- * @{
- */
- void SPI_I2S_DeInit(SPI_TypeDef *SPIx);
- void SPI_Init(SPI_TypeDef *SPIx, SPI_InitPara *SPI_InitParameter);
- void I2S_Init(SPI_TypeDef *SPIx, I2S_InitPara *I2S_InitParameter);
- void SPI_ParaInit(SPI_InitPara *SPI_InitParameter);
- void I2S_ParaInit(I2S_InitPara *I2S_InitParameter);
- void SPI_Enable(SPI_TypeDef *SPIx, TypeState NewValue);
- void I2S_Enable(SPI_TypeDef *SPIx, TypeState NewValue);
- void SPI_I2S_INTConfig(SPI_TypeDef *SPIx, uint8_t SPI_I2S_INT, TypeState NewValue);
- void SPI_I2S_DMA_Enable(SPI_TypeDef *SPIx, uint16_t SPI_I2S_DMAReq, TypeState NewValue);
- void SPI_I2S_SendData(SPI_TypeDef *SPIx, uint16_t Data);
- uint16_t SPI_I2S_ReceiveData(SPI_TypeDef *SPIx);
- void SPI_SWNSSConfig(SPI_TypeDef *SPIx, uint16_t SPI_SWNSS);
- void SPI_NSSDRV(SPI_TypeDef *SPIx, TypeState NewValue);
- void SPI_FrameFormatConfig(SPI_TypeDef *SPIx, uint16_t SPI_DataSize);
- void SPI_SendCRCNext(SPI_TypeDef *SPIx);
- void SPI_CRC_Enable(SPI_TypeDef *SPIx, TypeState NewValue);
- uint16_t SPI_GetCRC(SPI_TypeDef *SPIx, uint8_t SPI_CRC);
- uint16_t SPI_GetCRCPolynomial(SPI_TypeDef *SPIx);
- void SPI_BDOEConfig(SPI_TypeDef *SPIx, uint16_t SPI_BDOE);
- TypeState SPI_I2S_GetBitState(SPI_TypeDef *SPIx, uint16_t SPI_I2S_FLAG);
- void SPI_I2S_ClearBitState(SPI_TypeDef *SPIx, uint16_t SPI_I2S_FLAG);
- TypeState SPI_I2S_GetIntBitState(SPI_TypeDef *SPIx, uint8_t SPI_I2S_INT);
- void SPI_I2S_ClearIntBitState(SPI_TypeDef *SPIx, uint8_t SPI_I2S_INT);
- #ifdef __cplusplus
- }
- #endif
- #endif /*__GD32F10X_SPI_H */
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
|