3.3.5 SAFE_PLIB_DMAC
Set of safe functions for setting up and controlling the DMAC peripheral.
#define DMAC_TIMEOUT (10000)
#define DMAC_ERROR_CALLBACK_NOT_REGISTERED (0x1U)
#define DMAC_ERROR_INVALID_PARAMETER (0x2U)
#define DMAC_ERROR_TIMEOUT (0x3U)
// *****************************************************************************
typedef enum
{
/* DMAC Channel 0 */
DMAC_CHANNEL_0 = 0,
/* DMAC Channel 1 */
DMAC_CHANNEL_1 = 1,
/* DMAC Channel 2 */
DMAC_CHANNEL_2 = 2,
/* DMAC Channel 3 */
DMAC_CHANNEL_3 = 3,
/* DMAC Channel 4 */
DMAC_CHANNEL_4 = 4,
/* DMAC Channel 5 */
DMAC_CHANNEL_5 = 5,
/* DMAC Channel 6 */
DMAC_CHANNEL_6 = 6,
/* DMAC Channel 7 */
DMAC_CHANNEL_7 = 7,
/* DMAC Channel 8 */
DMAC_CHANNEL_8 = 8,
/* DMAC Channel 9 */
DMAC_CHANNEL_9 = 9,
/* DMAC Channel 10 */
DMAC_CHANNEL_10 = 10,
/* DMAC Channel 11 */
DMAC_CHANNEL_11 = 11,
/* DMAC Channel Max */
DMAC_CHANNEL_MAX = 12,
} DMAC_CHANNEL;
typedef enum
{
/* No event */
DMAC_TRANSFER_EVENT_NONE = 0,
/* Data was transferred successfully. */
DMAC_TRANSFER_EVENT_COMPLETE = 1,
/* Error while processing the request */
DMAC_TRANSFER_EVENT_ERROR = 2
} DMAC_TRANSFER_EVENT;
typedef enum
{
/* CRC16 (CRC-CCITT): 0x1021 */
DMAC_CRC_TYPE_16 = 0x0,
/* CRC32 (IEEE 802.3): 0x04C11DB7*/
DMAC_CRC_TYPE_32 = 0x1
} DMAC_CRC_POLYNOMIAL_TYPE;
typedef enum
{
/* Byte bus access. */
DMAC_CRC_BEAT_SIZE_BYTE = 0x0,
/* Half-word bus access. */
DMAC_CRC_BEAT_SIZE_HWORD = 0x1,
/* Word bus access. */
DMAC_CRC_BEAT_SIZE_WORD = 0x2
} DMAC_CRC_BEAT_SIZE;
typedef struct
{
/* CRCCTRL[CRCPOLY]: Polynomial Type (CRC16, CRC32) */
DMAC_CRC_POLYNOMIAL_TYPE polynomial_type;
/* CRCCHKSUM: Initial Seed for calculating the CRC */
uint32_t seed;
} DMAC_CRC_SETUP;
typedef uint32_t DMAC_CHANNEL_CONFIG;
typedef void (*DMAC_CHANNEL_CALLBACK) (DMAC_TRANSFER_EVENT event, uintptr_t contextHandle);
