mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-19 00:13:21 +08:00
171 lines
3.6 KiB
C
171 lines
3.6 KiB
C
/**
|
|
*****************************************************************************
|
|
* @file: dma.h
|
|
* @author Ingrid Chen
|
|
* @version V1.0.0
|
|
* @data 06-June-2013
|
|
* @Brief DMA module driver header file.
|
|
******************************************************************************
|
|
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
|
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
|
|
* TIME. AS A RESULT, MVSILICON SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
|
|
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
|
|
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
|
|
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
|
*
|
|
* <h2><center>© COPYRIGHT 2013 MVSilicon </center></h2>
|
|
*/
|
|
#ifndef __DMA_H__
|
|
#define __DMA_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif//__cplusplus
|
|
|
|
/*
|
|
**********************************************************
|
|
* TYPE DEFINE
|
|
**********************************************************
|
|
*/
|
|
/**
|
|
* DMA Transfer Mode
|
|
*/
|
|
typedef enum _DMA_XFER_MODE
|
|
{
|
|
DMA_XFER_MODE_NONE,
|
|
DMA_XFER_MODE_BASIC,
|
|
DMA_XFER_MODE_PP,
|
|
DMA_XFER_MODE_SHUT
|
|
} DMA_XFER_MODE;
|
|
|
|
/**
|
|
* DMA Transfer Channel
|
|
*/
|
|
typedef enum _DMA_XFER_CHANNEL
|
|
{
|
|
DMA_XFER_ALTCH0,
|
|
DMA_XFER_PRICH0,
|
|
DMA_XFER_PRICH1
|
|
} DMA_XFER_CHANNEL;
|
|
|
|
/**
|
|
* DMA Address increment
|
|
*/
|
|
typedef enum _DMA_ADDR_INC
|
|
{
|
|
DMA_ADDR_INC_NO,
|
|
DMA_ADDR_INC_BYTE,
|
|
DMA_ADDR_INC_WORD,
|
|
DMA_ADDR_INC_DWORD
|
|
} DMA_ADDR_INC;
|
|
|
|
/**
|
|
* DMA Address Width
|
|
*/
|
|
typedef enum _DMA_ADDR_WIDTH
|
|
{
|
|
DMA_ADDR_WIDTH_BYTE,
|
|
DMA_ADDR_WIDTH_WORD,
|
|
DMA_ADDR_WIDTH_DWORD
|
|
} DMA_ADDR_WIDTH;
|
|
|
|
/*
|
|
**********************************************************
|
|
* GLOBAL FUNCTION PROTOTYPE
|
|
**********************************************************
|
|
*/
|
|
/**
|
|
* @Brief 通过DMA通道CH0在XMEM/VMEM/PMEM/SDRAM内部或两两传输数据
|
|
* @Param SrcAddr
|
|
* @Param DstAddr
|
|
* @Param Length
|
|
* @Return None
|
|
* @Note@ Transfer Length is max to 65536 bytes
|
|
*/
|
|
void DmaMemoryCopy(uint32_t SrcAddr, uint32_t DstAddr, uint32_t Length);
|
|
|
|
/**
|
|
* @Brief Get DMA Primary CH0 interrupt status
|
|
* @Param None
|
|
* @Return Interrupt flag
|
|
* @Note@
|
|
*/
|
|
bool DmaPriCh0GetInt(void);
|
|
|
|
/**
|
|
* @Brief Clear DMA Primary CH0 interrupt status
|
|
* @Param None
|
|
* @Return None
|
|
* @Note@
|
|
*/
|
|
void DmaPriCh0IntClr(void);
|
|
|
|
|
|
/**
|
|
* @Brief Set DMA channel transfer mode
|
|
* @Param Channel refer to DMA_XFER_CHANNEL
|
|
* @Param Mode refer to DMA_XFER_MODE
|
|
* @Return None
|
|
* @Note@
|
|
*/
|
|
void DmaSetChannelMode(uint8_t Channel, uint8_t Mode);
|
|
|
|
/**
|
|
* @Brief Close DMA Primary CH0
|
|
* @Param None
|
|
* @Return None
|
|
* @Note@
|
|
*/
|
|
void DmaPriCh0Close(void);
|
|
|
|
/**
|
|
* @Brief DMA CH0 request
|
|
* @Param None
|
|
* @Return None
|
|
* @Note@
|
|
*/
|
|
void DmaCh0SwReq(void);
|
|
|
|
/**
|
|
* @Brief Get DMA Primary CH1 interrupt status
|
|
* @Param None
|
|
* @Return Interrupt flag
|
|
* @Note@
|
|
*/
|
|
bool DmaPriCh1GetInt(void);
|
|
|
|
/**
|
|
* @Brief Clear DMA Primary CH1 interrupt status
|
|
* @Param None
|
|
* @Return None
|
|
* @Note@
|
|
*/
|
|
void DmaPriCh1IntClr(void);
|
|
|
|
/**
|
|
* @Brief Close DMA Primary CH1
|
|
* @Param None
|
|
* @Return None
|
|
* @Note@
|
|
*/
|
|
void DmaPriCh1Close(void);
|
|
|
|
/**
|
|
* @Brief 设置DMA传输的参数
|
|
* @Param 请结合几个参数的数据结构理解
|
|
* @Return None
|
|
* @Note@
|
|
*/
|
|
void DmaSetParameter(uint8_t Channel,
|
|
uint32_t SrcAddr, DMA_ADDR_INC SrcAddrNCR, DMA_ADDR_WIDTH SrcDataWIDTH,
|
|
uint32_t DstAddr, DMA_ADDR_INC DStAddrINCR, DMA_ADDR_WIDTH DstDataWIDTH,
|
|
uint8_t BurstSize, uint32_t XferSize);
|
|
|
|
bool DmaCopyDone(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif//__cplusplus
|
|
|
|
#endif
|