Blocking mode
SSLDD 3.0 implements core mode as blocking mode. In this mode, a read or write call does not return until the read or write transaction has completed. Core Mode APIs can be used to transfer data through a peripheral in blocking mode i.e. the API blocks until the complete data is received. It is recommended to use this mode for transferring small number of bytes. If any peripheral error is detected, these APIs return an error and application can use adi_xxx_GetHWErrorStatus ( ) API to know the details of Hardware Error.
Example APIs
adi_xxx_CoreWrite() , adi_xxx_CoreRead()
xxx implies that the API is applicable to all controller drivers.
Process Flow Diagram:
Non-Blocking mode (DMA Mode):
SSLDD 3.0 implements DMA mode as non-blocking mode. Here a read or write call does returns immediately, even if the read or write transaction has not completed yet. DMA mode APIs are non-blocking APIs and can be used to transfer large amount of data by submitting DMA
descriptors to the driver. Application shall register a callback function in order to receive the transfer completion or a possible hardware error notifications. Application can submit a single descriptor for "Single Shot" or "Auto buffer" DMA transfer modes. Or a chain of multiple descriptors to use "List" or "Array" DMA transfer modes. Note that to reduce the complexity in drivers, application need to choose whether it want to use List mode or Array mode in compile time using PDMA service static configuration macro: "ADI_PDMA_LISTDESCRIPTOR" defined in
adi_pdma_config_2156x.h
Example APIs
adi_xxx_DMARead(), adi_xxx_ DMAWrite()
xxx implies that the API is applicable to all controller drivers.
Process Flow Diagram: