当前位置:首页 > 单片机 > 单片机
[导读]/**************************************************************************************************************文件名:dma.c*功能:S3C6410DMA底层驱动函数*作者:cp1300@139.com*创建时间:2013年01月23日21:06

/*************************************************************************************************************

*文件名:dma.c

*功能:S3C6410DMA底层驱动函数

*作者:cp1300@139.com

*创建时间:2013年01月23日21:06

*最后修改时间:2013年01月23日

*详细:DMA控制器底层驱动

*************************************************************************************************************/

#include"system.h"

#include"DMA.h"

/*************************************************************************************************************************

*函数:voidDMA_Init(void)

*功能:DMA初始化

*参数:无

*返回:无

*依赖:底层

*作者:cp1300@139.com

*时间:20130131

*最后修改时间:20130131

*说明:无

*************************************************************************************************************************/

voidDMA_Init(void)

{

Set_GateClk(HCLK_DMA0,ENABLE);

Set_GateClk(HCLK_DMA1,ENABLE);

}

/*************************************************************************************************************************

*函数:voidDMA_SetConfig(DMA_TypeDef*DMA,DMA_CHXch,DMA_Config*config)

*功能:DMA配置

*参数:DMA:DMA模块选择,见DMA_TypeDef;ch:通道选择,见DMA_CHX;config:配置,见DMA_Config

*返回:无

*依赖:底层

*作者:cp1300@139.com

*时间:20130131

*最后修改时间:20130131

*说明:用于设置DMA

*************************************************************************************************************************/

voidDMA_SetConfig(DMA_TypeDef*DMA,DMA_CHXch,DMA_Config*config)

{

DMA_Enable(DMA);//使能DMA模块

(DMA->CH[ch]).SrcAddr=config->SrcAddr;//设置源地址

(DMA->CH[ch]).DestAddr=config->DestAddr;//设置目标地址

(DMA->CH[ch]).Control0=0x80000000//1<<31//是否在当前的传输完成后产生中断

|((config->DestIncrement==ENABLE)?(1<<27):0)//目标地址自增

|((config->SrcIncrement==ENABLE)?(1<<26):0)//源地址自增

|((config->DestPeripheral==DMA_MEM)?AHB_M1:AHB_M2)<<25//目标AHB主机选择

|((config->SrcPeripheral==DMA_MEM)?AHB_M1:AHB_M2)<<24//源AHB主机选择

|(config->FlowWidth&0x7)<<21//目标传输宽度

|(config->FlowWidth&0x7)<<18//源传输宽度

|(config->BurstSize&0x7)<<15//目标传输脉冲大小,单次传输的数量

|(config->BurstSize&0x7)<<12;//源传输脉冲大小,单次传输的数量

(DMA->CH[ch]).Control1=config->DataSize&0x1ffffff;//传输数据数量

(DMA->CH[ch]).Config=(0<<18)//enableDMArequests

|(0<<16)//disableslockedtransfers

|(1<<15)//Teminalcountinterruptenable

| (0<<14) // Interrupt error mask

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭