ADuCM302x Device Drivers API Reference Manual  Release 3.1.2.0
adi_spi.h
1 
46 #ifndef ADI_SPI_H__
47 #define ADI_SPI_H__
48 
49 #include <adi_processor.h>
50 #include <rtos_map/adi_rtos_map.h>
51 #include <adi_spi_config.h>
52 
58 #include <adi_spi_config.h>
59 #include <adi_callback.h>
60 
61 #ifdef __cplusplus
62 extern "C" {
63 #endif /* __cplusplus */
64 
65 
72 #define ADI_SPI_MEMORY_SIZE (40u + ADI_SEM_SIZE)
73 
74 
84 typedef enum
85 {
119 
128 typedef enum
129 {
149 
151 
165 typedef enum
166 {
178 
179 
181 typedef struct __ADI_SPI_DEV_DATA_TYPE* ADI_SPI_HANDLE;
183 typedef const struct __ADI_SPI_DEV_DATA_TYPE* ADI_SPI_CONST_HANDLE;
184 
185 
243 typedef struct
244 {
246  uint8_t* pTransmitter;
248  uint8_t* pReceiver;
252  uint16_t ReceiverBytes;
254  uint8_t nTxIncrement;
256  uint8_t nRxIncrement;
258  bool bDMA;
260  bool bRD_CTL;
261 
263 
264 
265 
266 /******************************************************************************
267  * SPI Device External API function prototypes
268  *****************************************************************************/
269 
270 /* Device Initialization and Uninitialization Interfaces */
271 ADI_SPI_RESULT adi_spi_Open(
272  uint32_t nDeviceNum,
273  void *pDevMemory,
274  uint32_t nMemorySize,
275  ADI_SPI_HANDLE* const phDevice
276  );
277 
278 ADI_SPI_RESULT adi_spi_Close(
279  ADI_SPI_HANDLE const hDevice
280  );
281 
282 /******************************************************************
283  * Eliminatable functions that may be optimized out by the linker *
284  *****************************************************************/
285 
286 ADI_SPI_RESULT adi_spi_MasterReadWrite(
287  ADI_SPI_HANDLE const hDevice,
288  const ADI_SPI_TRANSCEIVER* const pXfr
289  );
290 
291 
292 ADI_SPI_RESULT adi_spi_SetMasterMode(
293  ADI_SPI_CONST_HANDLE const hDevice,
294  const bool bFlag
295  );
296 
297 /* Slave Mode APIs */
298 ADI_SPI_RESULT adi_spi_SlaveReadWrite(
299  ADI_SPI_HANDLE const hDevice,
300  const ADI_SPI_TRANSCEIVER* const pXfr
301  );
302 
303 /* Command/Data transceiver API */
304 ADI_SPI_RESULT adi_spi_MasterSubmitBuffer(
305  ADI_SPI_HANDLE const hDevice,
306  const ADI_SPI_TRANSCEIVER* const pXfr
307  );
308 
309 ADI_SPI_RESULT adi_spi_SlaveSubmitBuffer(
310  ADI_SPI_HANDLE const hDevice,
311  const ADI_SPI_TRANSCEIVER*
312  const pXfr
313  );
314 
315 ADI_SPI_RESULT adi_spi_RegisterCallback (
316  ADI_SPI_HANDLE const hDevice,
317  ADI_CALLBACK const pfCallback,
318  void *const pCBParam
319  );
320 
321 
322 /* Turn a non-blocking call into a blocking call. Wait for the transaction to complete */
323 ADI_SPI_RESULT adi_spi_GetBuffer(
324  ADI_SPI_HANDLE const hDevice,
325  uint32_t * const pHWErrors
326  );
327 
328 /* Hardware Configuration Interface */
329 ADI_SPI_RESULT adi_spi_SetClockPhase(
330  ADI_SPI_HANDLE const hDevice,
331  const bool bFlag
332  );
333 
334 ADI_SPI_RESULT adi_spi_SetClockPolarity(
335  ADI_SPI_HANDLE const hDevice,
336  const bool bFlag
337  );
338 
339 /* Query function for the data transfer completion */
340 ADI_SPI_RESULT adi_spi_isBufferAvailable(
341  ADI_SPI_CONST_HANDLE const hDevice,
342  bool* const bComplete
343  );
344 
345 
346 
347 ADI_SPI_RESULT adi_spi_SetContinuousMode(
348  ADI_SPI_CONST_HANDLE const hDevice,
349  const bool bFlag
350  );
351 
352 
353 ADI_SPI_RESULT adi_spi_SetLoopback(
354  ADI_SPI_CONST_HANDLE const hDevice,
355  const bool bFlag
356  );
357 
358 ADI_SPI_RESULT adi_spi_SetIrqmode (
359  ADI_SPI_CONST_HANDLE const hDevice,
360  const uint8_t nMode);
361 
362 ADI_SPI_RESULT adi_spi_SetReceiveOverflow(
363  ADI_SPI_CONST_HANDLE const hDevice,
364  const bool bFlag
365  );
366 
367 ADI_SPI_RESULT adi_spi_SetTransmitUnderflow(
368  ADI_SPI_CONST_HANDLE const hDevice,
369  const bool bFlag
370  );
371 
372 /* Mode Configuration Interface */
373 ADI_SPI_RESULT adi_spi_SetBitrate(
374  ADI_SPI_CONST_HANDLE const hDevice,
375  const uint32_t Hertz
376  );
377 ADI_SPI_RESULT adi_spi_SetChipSelect(
378  ADI_SPI_HANDLE const hDevice,
379  const ADI_SPI_CHIP_SELECT eChipSelect
380  );
381 
382 ADI_SPI_RESULT adi_spi_GetBitrate(
383  ADI_SPI_CONST_HANDLE const hDevice,
384  uint32_t* const pnBitrate
385  );
386 
387 
388 #ifdef __cplusplus
389 }
390 #endif
391 
392 
396 #endif /* ADI_SPI_H__ */
397 
ADI_SPI_RESULT adi_spi_SetTransmitUnderflow(ADI_SPI_CONST_HANDLE const hDevice, const bool bFlag)
Set the SPI transmit FIFO underflow mode.
Definition: adi_spi.c:557
ADI_SPI_RESULT adi_spi_GetBuffer(ADI_SPI_HANDLE const hDevice, uint32_t *const pHWErrors)
Block until the SPI transaction is complete.
Definition: adi_spi.c:1244
ADI_SPI_RESULT adi_spi_SlaveReadWrite(ADI_SPI_HANDLE const hDevice, const ADI_SPI_TRANSCEIVER *const pXfr)
Submit data buffers for SPI Slave-Mode transaction in "Blocking mode".This function returns only af...
Definition: adi_spi.c:1567
uint16_t TransmitterBytes
Definition: adi_spi.h:250
uint8_t * pReceiver
Definition: adi_spi.h:248
uint8_t * pTransmitter
Definition: adi_spi.h:246
ADI_SPI_RESULT
Definition: adi_spi.h:84
ADI_SPI_RESULT adi_spi_SetClockPhase(ADI_SPI_HANDLE const hDevice, const bool bFlag)
Set the clock phase.
Definition: adi_spi.c:789
ADI_SPI_RESULT adi_spi_SetContinuousMode(ADI_SPI_CONST_HANDLE const hDevice, const bool bFlag)
Set the continuous transfer mode.
Definition: adi_spi.c:407
ADI_SPI_RESULT adi_spi_Open(uint32_t nDeviceNum, void *pDevMemory, uint32_t nMemorySize, ADI_SPI_HANDLE *const phDevice)
Initialize and allocate an SPI device for use in Master Mode.
Definition: adi_spi.c:184
ADI_SPI_RESULT adi_spi_Close(ADI_SPI_HANDLE const hDevice)
Uninitialize and deallocate an SPI device.
Definition: adi_spi.c:280
ADI_SPI_RESULT adi_spi_isBufferAvailable(ADI_SPI_CONST_HANDLE const hDevice, bool *const bComplete)
Get the SPI transaction completion status.
Definition: adi_spi.c:1279
ADI_SPI_RESULT adi_spi_SetChipSelect(ADI_SPI_HANDLE const hDevice, const ADI_SPI_CHIP_SELECT eChipSelect)
Set the chip select.
Definition: adi_spi.c:745
uint8_t nRxIncrement
Definition: adi_spi.h:256
ADI_SPI_RESULT adi_spi_SetLoopback(ADI_SPI_CONST_HANDLE const hDevice, const bool bFlag)
Set the internal loopback mode.
Definition: adi_spi.c:441
ADI_SPI_RESULT adi_spi_GetBitrate(ADI_SPI_CONST_HANDLE const hDevice, uint32_t *const pnBitrate)
Get the SPI serial clock frequency.
Definition: adi_spi.c:656
ADI_SPI_RESULT adi_spi_RegisterCallback(ADI_SPI_HANDLE const hDevice, ADI_CALLBACK const pfCallback, void *const pCBParam)
Register or unregister the callback.
Definition: adi_spi.c:319
ADI_SPI_RESULT adi_spi_SetClockPolarity(ADI_SPI_HANDLE const hDevice, const bool bFlag)
Set the clock polarity.
Definition: adi_spi.c:710
ADI_SPI_RESULT adi_spi_SetIrqmode(ADI_SPI_CONST_HANDLE const hDevice, const uint8_t nMode)
Set the IRQ mode.
Definition: adi_spi.c:367
ADI_SPI_RESULT adi_spi_SetReceiveOverflow(ADI_SPI_CONST_HANDLE const hDevice, const bool bFlag)
Set the SPI receive FIFO overflow mode.
Definition: adi_spi.c:519
ADI_SPI_HW_ERRORS
Definition: adi_spi.h:128
ADI_SPI_RESULT adi_spi_MasterReadWrite(ADI_SPI_HANDLE const hDevice, const ADI_SPI_TRANSCEIVER *const pXfr)
Submit data buffers for SPI Master-Mode transaction in "Blocking mode".This function returns only a...
Definition: adi_spi.c:834
struct __ADI_SPI_DEV_DATA_TYPE * ADI_SPI_HANDLE
Definition: adi_spi.h:181
uint16_t ReceiverBytes
Definition: adi_spi.h:252
ADI_SPI_RESULT adi_spi_SetMasterMode(ADI_SPI_CONST_HANDLE const hDevice, const bool bFlag)
Set SPI Master-Mode operation.
Definition: adi_spi.c:476
ADI_SPI_CHIP_SELECT
Definition: adi_spi.h:165
const struct __ADI_SPI_DEV_DATA_TYPE * ADI_SPI_CONST_HANDLE
Definition: adi_spi.h:183
uint8_t nTxIncrement
Definition: adi_spi.h:254
ADI_SPI_RESULT adi_spi_SlaveSubmitBuffer(ADI_SPI_HANDLE const hDevice, const ADI_SPI_TRANSCEIVER *const pXfr)
Submit data buffers for SPI Slave-Mode transaction.
Definition: adi_spi.c:1322
ADI_SPI_RESULT adi_spi_SetBitrate(ADI_SPI_CONST_HANDLE const hDevice, const uint32_t Hertz)
Set the SPI serial clock frequency.
Definition: adi_spi.c:599
ADI_SPI_RESULT adi_spi_MasterSubmitBuffer(ADI_SPI_HANDLE const hDevice, const ADI_SPI_TRANSCEIVER *const pXfr)
Submit data buffers for SPI Master-Mode transaction.
Definition: adi_spi.c:874