// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // File name : edma_drv.h // Version : V0.1 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #ifndef EDMA_DRV_H_ #define EDMA_DRV_H_ #include "type.h" #include "edma_reg.h" #include "memmap.h" //////////////////////////////////////////////////////////////////////////////// //EDMAC PN TABLE #define EDMA_SRAM (0x00000000) //SRAM #define EDMA_SPI1 (0x00000000) //SPI1 #define EDMA_SPI2 (0x00000100) //SPI2 #define EDMA_USI1 (0x00000200) //USI1 #define EDMA_USI2 (0x00000300) //USI2 #define EDMA_SCI1 (0x00000800) //SCI1 #define EDMA_SCI3 (0x00000b00) //SCI3 #define EDMA_SCI2 (0x00000d00) //SCI2 #define EDMA_SPI3 (0x00000e00) //SPI3 #define IS_EDMA_EDMA_PN(PN) (((PN) == EDMA_SRAM) || \ ((PN) == EDMA_SPI1) || \ ((PN) == EDMA_SPI2) || \ ((PN) == EDMA_USI1) || \ ((PN) == EDMA_USI2) || \ ((PN) == EDMA_SCI3) || \ ((PN) == EDMA_SCI1) || \ ((PN) == EDMA_SCI2) || \ ((PN) == EDMA_SPI3)) ///////////////////////////////////////////////////////////////////////////////// //EDMAC Control Register of Channel (EDMACCR)//offset at 0x00000000 #define EDMAC_TTYPE0 (0x00000000)//sram to sram #define EDMAC_TTYPE1 (0x00000020)//peripheral to sram #define EDMAC_TTYPE2 (0x00000040)//sram to peripheral #define EDMAC_TTYPE3 (0x00000060)//sram to peripheral then peripheral to sram #define IS_EDMA_TTYPE(TTYPE) (((TTYPE) == EDMAC_TTYPE0) || \ ((TTYPE) == EDMAC_TTYPE1) || \ ((TTYPE) == EDMAC_TTYPE2) || \ ((TTYPE) == EDMAC_TTYPE3)) //#define EDMA_INT #define EDMA_CH0 ((EDMA_TypeDef *)(EDMAC_BASE_ADDR)) #define EDMA_CH1 ((EDMA_TypeDef *)(EDMAC_BASE_ADDR+0x40)) #define IS_EDMA_ALL_PERIPH(PERIPH) (((PERIPH) == EDMA_CH0) || \ ((PERIPH) == EDMA_CH1)) /******************************************************************************* * Function Name : EDMA_CHx * Description : EDMA 传输处理 * Input : - EDMA_CHx: where x can be 0 to 1 to select the EDMA peripheral; * - sendAddr:EDMAC Read Buffer Address * - recvAddr:EDMAC Write Buffer Address * - ttpye: Channel Transfer Type 取值:EDMAC_TTYPE0~EDMAC_TTYPE3 * - pn: Channel Periperal Number * - len: Channel Minor Transfer Data Sum(in byte) * * Output : None * Return : None ******************************************************************************/ extern void EDMA_CHx(EDMA_TypeDef *EDMA0_CHx, UINT32 readAddr, UINT32 writeAddr, UINT32 ttpye, UINT32 pn, UINT32 len); /******************************************************************************* * Function Name : EDMA_CHx_SAMEDATA * Description : EDMA 传输固定数值 * Input : - EDMA_CHx: where x can be 0 to 1 to select the EDMA peripheral; * - sendAddr:EDMAC Read Buffer Address * - recvAddr:EDMAC Write Buffer Address * - ttpye: Channel Transfer Type 取值:EDMAC_TTYPE0~EDMAC_TTYPE3 * - pn: Channel Periperal Number * - len: Channel Minor Transfer Data Sum(in byte) * * Output : None * Return : None ******************************************************************************/ void EDMA_CHx_SAMEDATA(EDMA_TypeDef *EDMA_CHx, UINT32 sendAddr, UINT32 recvAddr, UINT32 ttpye, UINT32 pn, UINT32 len); /******************************************************************************* * Function Name : EDMA_Init * Description : EDMA初始化 * Input : None * * Output : None * Return : None ******************************************************************************/ extern void EDMA_Init(void); #endif /* EDMA_DRV_H_ */