14 #ifndef ADI_SPORT_DEF_H 15 #define ADI_SPORT_DEF_H 17 #include <drivers/general/adi_data_transfer.h> 19 #if defined(ADI_CFG_SPORT0A_SERIAL_WLEN) 20 #if (ADI_CFG_SPORT0A_SERIAL_WLEN <= 3u) || (ADI_CFG_SPORT0A_SERIAL_WLEN > 32u) 21 #error "Invalid word length : it must be between 4 and 32" 24 #error "ADI_CFG_SPORT0A_SERIAL_WLEN undefined!!! " 27 #if defined(ADI_CFG_SPORT0B_SERIAL_WLEN) 28 #if (ADI_CFG_SPORT0B_SERIAL_WLEN <= 3u) || (ADI_CFG_SPORT0B_SERIAL_WLEN > 32u) 29 #error "Invalid word length : it must be between 4 and 32" 32 #error "ADI_CFG_SPORT0B_SERIAL_WLEN undefined!!! " 35 #define ADI_SPORT_NUM_INSTANCES (1u) 36 #define ADI_SPORT_NUM_CHANNELS (2u) 38 #define BITM_SPORT_DATA_CONFIG ( BITM_SPORT_CTL_A_LSBF \ 39 | BITM_SPORT_CTL_A_PACK) 41 #define BITM_SPORT_CLOCK_CONFIG ( BITM_SPORT_CTL_A_ICLK \ 42 | BITM_SPORT_CTL_A_CKRE \ 43 | BITM_SPORT_CTL_A_GCLKEN) 45 #define BITM_SPORT_FS_CONFIG ( BITM_SPORT_CTL_A_FSR \ 46 | BITM_SPORT_CTL_A_IFS \ 47 | BITM_SPORT_CTL_A_DIFS \ 48 | BITM_SPORT_CTL_A_LFS \ 49 | BITM_SPORT_CTL_A_LAFS \ 50 | BITM_SPORT_CTL_A_FSERRMODE) 52 #define SPORT_BYTE_TRANSFER_LENGTH (8u) 53 #define SPORT_HALFWORD_TRANSFER_LENGTH (16u) 54 #define SPORT_WORD_TRANSFER_LENGTH (32u) 56 #define SPORT_GET_WLEN(ctlVal) ((((ctlVal) & (uint32_t) BITM_SPORT_CTL_A_SLEN) >> ((uint32_t) BITP_SPORT_CTL_A_SLEN)) + 1u) 57 #define SPORT_GET_PACKEN(ctlVal) ((ctlVal) & (uint32_t) BITM_SPORT_CTL_A_PACK) >> ((uint32_t) BITP_SPORT_CTL_A_PACK) 59 #define SPORT_CHECK_CFG_CTL(CFG) assert(0u == ((CFG) & (((uint32_t)BITM_SPORT_CTL_A_SPEN) | ((uint32_t)BITM_SPORT_CTL_A_DMAEN)))) 62 #define SPORT_BIT_PACK_NONE (((uint32_t) ADI_SPORT_NO_PACKING) >> ((uint32_t) BITP_SPORT_CTL_A_PACK)) 63 #define SPORT_BIT_PACK_8 (((uint32_t) ADI_SPORT_8BIT_PACKING) >> ((uint32_t) BITP_SPORT_CTL_A_PACK)) 64 #define SPORT_BIT_PACK_16 (((uint32_t) ADI_SPORT_16BIT_PACKING) >> ((uint32_t) BITP_SPORT_CTL_A_PACK)) 73 ADI_SPORT_STATE_UNINITIALIZED = 0,
74 ADI_SPORT_STATE_INITIALIZED,
75 ADI_SPORT_STATE_DATA_FLOW_ENABLED,
76 ADI_SPORT_STATE_DATA_FLOW_DISABLED,
77 ADI_SPORT_STATE_PAUSED
86 typedef struct _ADI_SPORT_CONFIG
100 typedef struct _ADI_SPORT_DEVICE_INFO
102 volatile ADI_SPORT_TypeDef* pSportRegs;
103 ADI_SPORT_CONFIG sportCfg;
104 ADI_SPORT_STATE eState;
105 const DMA_CHANn_TypeDef eDMAChnlID;
106 const IRQn_Type eDMAn;
107 const IRQn_Type eIRQn;
109 } ADI_SPORT_DEVICE_INFO;
115 #define NUM_SPORT_BUFFER (2u) 118 typedef struct _ADI_SPORT_DEVICE
120 ADI_SPORT_DEVICE_INFO * pSportInfo;
122 ADI_CALLBACK pfCallback;
124 ADI_DT_CHANNEL sportChannel;
125 volatile uint32_t nHwError;
129 static inline void sport_Init (ADI_SPORT_DEVICE * pDevice);
132 static inline void sport_Configure (ADI_SPORT_DEVICE *pDevice, ADI_SPORT_CONFIG
const * sportCfg);
135 static ADI_SPORT_RESULT sport_SubmitBufferDmaMode(ADI_SPORT_DEVICE * pDevice, ADI_DT_BUFF_INFO * pBuff);
138 static ADI_SPORT_RESULT sport_SubmitBufferIntMode(ADI_SPORT_DEVICE * pDevice, ADI_DT_BUFF_INFO * pBuff);
141 static void sport_Terminate(ADI_SPORT_DEVICE * pDevice);
146 static void sport_InterruptHandler(ADI_SPORT_DEVICE * pDevice);
148 static inline void sport_DmaErrorCallback(
void *pCBParam, uint32_t Event,
void *pArg);
150 static inline uint32_t GetBytesPerSportData(
const uint32_t ctlVal);