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

📄 dma.h

📁 os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm
💻 H
字号:
/* *	ApOS (Another Project software for s3c2410) *	 *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. *			 *						Copyright caiyuqing * */#ifndef _DMA_H#define _DMA_H#include "cpu.h"/* *	dma chanel structure,we can visit all the registers of the  *	chanel in dma block througth this structure *	dma 通道结构体,通过该结构体可以访问到每个dma通道 *	中的所有寄存器 */struct dma_chanel{		/*	 *	DMA INITIAL SOURCE (DISRC) REGISTER	 *		 *	该寄存器包含了 DMA数据源首地址	 */	volatile unsigned int *disrc;	/*	 *	DMA INITIAL SOURCE CONTROL (DISRCC) REGISTER	 *	 *	数据源控制寄存器含有两个控制位,分别是LOC和INC	 *	 *	LOC: 选择数据源位置(system bus/peripheral bus)	 *	 *		0: the source is in the system bus (AHB).	 *		1: the source is in the peripheral bus (APB).	 *	 *	INC: 选择地址的增长模式	 *		0:Increment	 *		1:Fixed	 */		volatile unsigned int *disrcc;	/*	 *	DMA INITIAL DESTINATION (DIDST) REGISTER	 *	 *	该寄存器包含了DMA传送目的地首地址	 */	volatile unsigned int *didst;	/*	 *	DMA INITIAL DESTINATION CONTROL (DIDSTC) REGISTER	 *	数据目的地控制寄存器,含有两个控制位 LOC和INC(同DISRCCs)	 */	volatile unsigned int *didstc;	/*	 *	DMA CONTROL (DCON) REGISTER(详细请查看s3c2410用户手册)	 *	DMA控制寄存器	 */	volatile unsigned int *dcon;	/*	 *	DMA STATUS (DSTAT) REGISTER	 *	 *	DMA状态寄存器.包含两个部分 STAT和CURR_TC	 *	STAT:当前状态	 *	CURR_TC:当前传送计数器	 */	volatile unsigned int *dstat;	/*	 *	DMA CURRENT SOURCE (DCSRC) REGISTER	 *	当前传送的数据源地址寄存器.	 */	volatile unsigned int *dcsrc;	/*	 *	CURRENT DESTINATION (DCDST) REGISTER	 *	当前传送的数据目的地址寄存器.	 */	volatile unsigned int *dcdst;	//DMA MASK TRIGGER (DMASKTRIG) REGISTER(详细请查看s3c2410用户手册)	volatile unsigned int *dmasktrig;		//DCON寄存器中的DSZ与TSZ来确定tc_opt,而tc_opt则确定DCON寄存器中TC部分	unsigned int tc_opt;};/* *	dma blocks structure,including 4 chanel structures. we can  *	control each chanel of the dma block throught this struct. *	s3c2410 dma模块结构体,包含4个通道。通过该结构体可以控制dma模块中 *	的每个通道 */struct dma_ctrl_object{	struct dma_chanel chanel0;	struct dma_chanel chanel1;	struct dma_chanel chanel2;	struct dma_chanel chanel3;};/* *	the offset about DISRCC and DIDSTC 's control bit * *	关于DISRCC和DIDSTC的控制位位移 */#define LOC_OFFSET	1#define INC_OFFSET	0#define AHB		0#define APB		1#define INCREMENT	0#define FIXED		1/* *	the offset about DCON's control bit *	关于DCON的控制位位移 */#define DMD_HS_OFFSET	31#define SYNC_OFFSET	30#define INT_OFFSET	29#define TSZ_OFFSET	28#define SERVMODE_OFFSET 27#define HWSRCSEL_OFFSET	24#define SWHW_SEL_OFFSET	23#define RELOAD_OFFSET	22#define DSZ_OFFSET	20#define TC_OFFSET	0#define DEMAND 		0#define HANDSHAKE	1#define SYNC_PCLK	0#define SYNC_HCLK	1#define INT_OFF		0#define INT_ON		1#define UNIT_MODE	0#define BURST_MODE	1#define SINGLE		0#define WHOLE		1/* *	dma trigger mode select *	 *	dma触发源模式选择,每个通道有四种模式可以选择 * *		REQ_SRC_MODE0	REQ_SRC_MODE1	REQ_SRC_MODE2	REQ_SRC_MODE3	REQ_SRC_MODE4 *	DCON0: 	000:nXDREQ0   	001:UART0    	010:SDI       	011:Timer    	100:USB device EP1 *	DCON1: 	000:nXDREQ1   	001:UART1    	010:I2SSDI   	011:SPI      	100:USB device EP2 *	DCON2: 	000:I2SSDO    	001:I2SSDI   	010:SDI      	011:Timer    	100:USB device EP3 *	DCON3: 	000:UART2     	001:SDI      	010:SPI       	011:Timer    	100:USB device EP4 */#define REQ_SRC_MODE0	0x0#define REQ_SRC_MODE1	0x1#define REQ_SRC_MODE2	0x2#define REQ_SRC_MODE3	0x3#define REQ_SRC_MODE4	0x4#define SW		0#define HW		1#define RELAOD_ON	0#define RELAOD_OFF	1#define BYTE		0#define HWORD		1#define WORD		2/* *	the offset about DSTAT's control bit *	关于DSTAT的控制位位移 */#define STAT_OFFSET	20#define CURR_TC_OFFSET	0/* *	the offset about DMASKTRIG's control bit *	关于DMASKTRIG的控制位位移 */#define STOP_OFFSET	2#define ON_OFF_OFFSET	1#define SW_TRIG_OFFSET	0#define DMA_CHANEL_0	0#define DMA_CHANEL_1	1#define DMA_CHANEL_2	2#define DMA_CHANEL_3	3#endif

⌨️ 快捷键说明

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