⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dma.h

📁 嵌入式系统关于串口传输、触摸屏、定时器、控制器、中断处理、音频控制等实验代码
💻 H
字号:
#ifndef __DMA_H__
#define __DMA_H__

#define XSDMA_CHANNEL_MAX		15
#define XSDMA_CHANNEL_NUM		(XSDMA_CHANNEL_MAX + 1)
#define DMA_REGISTER_BASE		0x40000000

typedef enum XsDmaDrcmrIdE
{
    XSDMA_DRCMR_ID_DREQ_0         = 0, // companion chip request 0
    XSDMA_DRCMR_ID_DREQ_1         = 1, // companion chip request 1
    XSDMA_DRCMR_ID_I2S_RX         = 2, // I2S receive request
    XSDMA_DRCMR_ID_I2S_TX         = 3, // I2S transmit request
    XSDMA_DRCMR_ID_BTUART_RX      = 4, // BTUART receive request
    XSDMA_DRCMR_ID_BTUART_TX      = 5, // BTUART transmit request
    XSDMA_DRCMR_ID_FFUART_RX      = 6, // FFUART receive request
    XSDMA_DRCMR_ID_FFUART_TX      = 7, // FFUART transmit request
    XSDMA_DRCMR_ID_AC97_MIC_RX    = 8, // AC97 microphone request
    XSDMA_DRCMR_ID_AC97_MODEM_RX  = 9, // AC97 MODEM receive request
    XSDMA_DRCMR_ID_AC97_MODEM_TX  = 10, // AC97 MODEM transmit request
    XSDMA_DRCMR_ID_AC97_AUDIO_RX  = 11, // AC97 Audio receive request
    XSDMA_DRCMR_ID_AC97_AUDIO_TX  = 12, // AC97 Audio transmit request
    XSDMA_DRCMR_ID_SSP_RX         = 13, // SSP receive request
    XSDMA_DRCMR_ID_SSP_TX         = 14, // SSP transmit request
    XSDMA_DRCMR_ID_RSVD_15        = 15, // reserved
    XSDMA_DRCMR_ID_RSVD_16        = 16, // reserved
    XSDMA_DRCMR_ID_FICP_RX        = 17, // ICP receive request
    XSDMA_DRCMR_ID_FICP_TX        = 18, // ICP transmit request
    XSDMA_DRCMR_ID_STUART_RX      = 19, // STUART receive request
    XSDMA_DRCMR_ID_STUART_TX      = 20, // STUART transmit request
    XSDMA_DRCMR_ID_MMC_RX         = 21, // MMC receive request
    XSDMA_DRCMR_ID_MMC_TX         = 22, // MMC transmit request
    XSDMA_DRCMR_ID_RSVD_23        = 23, // reserved
    XSDMA_DRCMR_ID_RSVD_24        = 24, // reserved
    XSDMA_DRCMR_ID_USB_CLNT_EP_1  = 25, // USB endpoint 1 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_2  = 26, // USB endpoint 2 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_3  = 27, // USB endpoint 3 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_4  = 28, // USB endpoint 4 request
    XSDMA_DRCMR_ID_RSVD_29        = 29, // reserved
    XSDMA_DRCMR_ID_USB_CLNT_EP_6  = 30, // USB endpoint 6 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_7  = 31, // USB endpoint 7 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_8  = 32, // USB endpoint 8 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_9  = 33, // USB endpoint 9 request
    XSDMA_DRCMR_ID_RSVD_34        = 34, // reserved
    XSDMA_DRCMR_ID_USB_CLNT_EP_11 = 35, // USB endpoint 11 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_12 = 36, // USB endpoint 12 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_13 = 37, // USB endpoint 13 request
    XSDMA_DRCMR_ID_USB_CLNT_EP_14 = 38, // USB endpoint 14 request
    XSDMA_DRCMR_ID_RSVD_39        = 39, // reserved
    XSDMA_DRCMR_ID_MAX            = XSDMA_DRCMR_ID_RSVD_39,
    XSDMA_DRCMR_ID_NUM            = (XSDMA_DRCMR_ID_MAX+1),
    XSDMA_DRCMR_ID_ILLEGAL        = XSDMA_DRCMR_ID_NUM,
    // Memory doesn't have a DRCMR.  Define this for users of records
    //  where XsDmaDrcmrIdT values are stored.
    XSDMA_DRCMR_ID_MEMORY         = (XSDMA_DRCMR_ID_NUM+1)

} XsDmaDrcmrIdT;

typedef struct XsDmaDescriptorGroupS {
    VUINT32   DDADR;  // descriptor address reg
    VUINT32   DSADR;  // source address register
    VUINT32   DTADR;  // target address register
    VUINT32   DCMD;   // command address register
} XsDmaDescriptorGroupT;

typedef struct XsDmaCtrlS {
    VUINT32   DCSR[XSDMA_CHANNEL_NUM]; //DMA CSRs by channel

    UINT32    PAD0[44];  // unused addresses
    VUINT32   DINT;        // DMA interrupt register
    UINT32    PAD1[3];   // unused addresses

                           // Indexed by the XsDmaDrcmrIdT enums.
    VUINT32   DRCMR[XSDMA_DRCMR_ID_NUM];
    UINT32      PAD2[24];  
    XsDmaDescriptorGroupT DDG[XSDMA_CHANNEL_NUM]; // DMA descriptor group array

} XsDmaCtrlT;

//volatile XsDmaCtrlT * XsDmaControlRegsP = (XsDmaCtrlT *)DMA_REGISTER_BASE;
extern volatile XsDmaCtrlT * XsDmaControlRegsP;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -