00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef DMA1_H
00012 #define DMA1_H
00013
00014 #define DMA_WRITE 0
00015 #define DMA_READ 1
00016
00017
00018 #define DMA1_BASE 0x00
00019
00020
00021
00022 #define DMA_CH0_ADDRESS 0x00
00023 #define DMA_CH0_COUNTER 0x01
00024 #define DMA_CH1_ADDRESS 0x02
00025 #define DMA_CH1_COUNTER 0x03
00026 #define DMA_CH2_ADDRESS 0x04
00027 #define DMA_CH2_COUNTER 0x05
00028 #define DMA_CH3_ADDRESS 0x06
00029 #define DMA_CH3_COUNTER 0x07
00030 #define DMA_COMMAND_REG 0x08 //command register
00031 #define DMA_STATUS_REG 0x08 //status register
00032 #define DMA_REQUEST_REG 0x09 //request register
00033 #define DMA_SINGLEMASK_REG 0x0a //mask register
00034 #define DMA_MODE_REG 0x0b //mode register
00035 #define DMA_FFRESET_REG 0x0c //clear internal flip flop
00036 #define DMA_TEMP_REG 0x0d //temp register read only
00037 #define DMA_SOFTRESET_REG 0x0d //software reset register write only
00038 #define DMA_CLEARMASK_REG 0x0e //clear mask register
00039 #define DMA_MASK_REG 0x0f //mask register
00040
00041
00042 #define REQUEST_MODE 0x00
00043 #define SINGLE_MODE 0x40
00044 #define SEGMENT_MODE 0x80
00045 #define CASCADE_MODE 0xc0
00046
00047 #define ADDRESS_INC 0x00
00048 #define ADDRESS_DEC 0x20
00049
00050 #define AUTOLOAD_ENABLE 0x00
00051 #define AUTOLOAD_DISABLE 0x10
00052
00053 #define TYPE_VERIFY 0x00
00054 #define TYPE_READ 0x04
00055 #define TYPE_WRITE 0x08
00056 #define TYPE_INVALID 0x0c
00057
00058 #define DMA_CHANNEL0 0x00
00059 #define DMA_CHANNEL1 0x01
00060 #define DMA_CHANNEL2 0x02
00061 #define DMA_CHANNEL3 0x03
00062
00063
00064 #define SINGLEMASK_SET 0x04
00065 #define SINGLEMASK_CHANNEL0 0x00
00066 #define SINGLEMASK_CHANNEL1 0x01
00067 #define SINGLEMASK_CHANNEL2 0x02
00068 #define SINGLEMASK_CHANNEL3 0x03
00069
00070
00071 #define MASK_CH0_SET 0x01
00072 #define MASK_CH1_SET 0x02
00073 #define MASK_CH2_SET 0x03
00074 #define MASK_CH3_SET 0x04
00075
00076
00077 #define REQUEST_SET 0x04
00078 #define REQUEST_CHANNEL0 0x00
00079 #define REQUEST_CHANNEL1 0x01
00080 #define REQUEST_CHANNEL2 0x02
00081 #define REQUEST_CHANNEL3 0x03
00082
00083
00084 #define STATUS_CH0_TC 0x01
00085 #define STATUS_CH1_TC 0x02
00086 #define STATUS_CH2_TC 0x04
00087 #define STATUS_CH3_TC 0x08
00088 #define STATUS_DMA0_TC 0x10
00089 #define STATUS_DMA1_TC 0x20
00090 #define STATUS_DMA2_TC 0x40
00091 #define STATUS_DMA3_TC 0x80
00092
00093
00094 #define DMA_CH0_PAGELOW 0x087
00095 #define DMA_CH0_PAGEHIGH 0x487
00096 #define DMA_CH1_PAGELOW 0x083
00097 #define DMA_CH1_PAGEHIGH 0x483
00098 #define DMA_CH2_PAGELOW 0x081
00099 #define DMA_CH2_PAGEHIGH 0x481
00100 #define DMA_CH3_PAGELOW 0x082
00101 #define DMA_CH3_PAGEHIGH 0x482
00102 #define DMA_CH4_PAGELOW 0x08f
00103 #define DMA_CH4_PAGEHIGH 0x48f
00104 #define DMA_CH5_PAGELOW 0x08b
00105 #define DMA_CH5_PAGEHIGH 0x48b
00106 #define DMA_CH6_PAGELOW 0x089
00107 #define DMA_CH6_PAGEHIGH 0x489
00108 #define DMA_CH7_PAGELOW 0x08a
00109 #define DMA_CH7_PAGEHIGH 0x48a
00110
00111 #define DMA_OFFSET 0x04
00112 #define DMA_LENGTH 0x05
00113
00114 void Dma1Init(void);
00115 void Dma1EnableDma(U8 DmaChannel);
00116 void Dma1DisableDma(U8 DmaChannel);
00117 void Dma1ClearFlipflop(void);
00118 void Dma1SetDmaAddress(U8 DmaChannelNumber,U32 Address);
00119 void Dma1SetPage(U8 DmaChannelNumber,U16 PageNumber);
00120 void Dma1SetDmaMode(U8 Channel,U8 Mode);
00121 void Dma1SetDmaCount(U8 Channel,U16 Length);
00122 void Dma1Transfer(U32 Address,U32 Length,U8 RwFlag,U8 DmaChannel);
00123
00124 #endif
00125