25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

100 lines
4.0 KiB

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 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_ */