DSP TMS320C5509A之DMA

https://blog.csdn.net/pxy198831/article/details/86615497

DSP TMS320C5509A之ADC MAX121中的ADC芯片即是采用DMA的方式进行控制的,

设置为一个字节打断CPU一次,进行数据的处理,程序如下:

#include <csl.h>
#include <csl_mcbsp.h>
#include <csl_dma.h>
#include "Inc\dsplib.h"
#include "Inc\Globe.h"
#include "Inc\DMA.h"
#include "Inc\fdacoefs.h"
#include "Inc\fdacoefs_audio_bp.h"
#include "Inc\fdacoefs_audio_hp.h"
#include "Inc\sin_table.h"


/* dst data table address */
#pragma DATA_SECTION(dstPing,".globe_para");
Uint16 dstPing[ADC_N];

#pragma DATA_SECTION(dstPing,".globe_para");
Uint16 dstPong[ADC_N];

#pragma DATA_SECTION(pingpong,".globe_para");
Uint16 pingpong;

#pragma DATA_SECTION(agcBuf,".globe_para");
Uint32 agcBuf[AGC_DMA_N];

#pragma DATA_SECTION(audioBuf,".globe_para");
Uint16 audioBuf[AUDIO_DMA_N];

#pragma DATA_SECTION(audio_DDS,".globe_para");
int audio_DDS[1024];
Uint16 Index;

int head=0,rear=0;

TAGC_OUT *AGC_OUT;

//#define AGC_OUT	((TAGC_OUT *)agcBuf)


/*define NCO*/
//DDS  NCO
#define K	4505
unsigned int rom_result;
unsigned int sin_addr;
unsigned int cos_addr;
int sin,cos;

#pragma DATA_SECTION(I_dbuf,".globe_para");
DATA I_dbuf[53];

#pragma DATA_SECTION(Q_dbuf,".globe_para");
DATA Q_dbuf[53];

#pragma DATA_SECTION(BP_dbuf,".globe_para");
DATA BP_dbuf[300];

#pragma DATA_SECTION(BP_dbuf_out,".globe_para");
DATA BP_dbuf_out[300];

#pragma DATA_SECTION(BS_dbuf,".globe_para");
DATA BS_dbuf[400];

//Step 2: Define and initialize the DMA channel configuration structure.

interrupt void dmaCh0Isr(void);

void dmaCh0Process(void);	//处理收到的数据
void dmaDmod(void);			


void IniDMA_CH0(void);
void IniDMA_CH1(void);
void IniDMA_CH2(void);

void IniDDS(void);
void IniFIR(void);


void IniDMAPara(void);		//初始化DMA全局参数

int AGC_audio(int AGC_in);	


/**/
#pragma DATA_SECTION(tmpadc,".input");
int tmpadc[1024];
int tmp_index;




//CH0用于ADC的采样
DMA_Config DMACH0_Cfg = { 		/* DMA configuration structure*/

DMA_DMACSDP_RMK(
	DMA_DMACSDP_DSTBEN_NOBURST, /* Destination burst
									DMA_DMACSDP_DSTBEN_NOBURST
									DMA_DMACSDP_DSTBEN_BURST4
									*/
	DMA_DMACSDP_DSTPACK_OFF, 	/* Destination packing
								DMA_DMACSDP_DSTPACK_ON
								DMA_DMACSDP_DSTPACK_OFF */

	DMA_DMACSDP_DST_DARAM,		/* Destination selection
								DMA_DMACSDP_DST_SARAM
								DMA_DMACSDP_DST_DARAM
								DMA_DMACSDP_DST_EMIF
								DMA_DMACSDP_DST_PERIPH */
	DMA_DMACSDP_SRCBEN_NOBURST,	 /* Source burst
									DMA_DMACSDP_SRCBEN_NOBURST
									DMA_DMACSDP_SRCBEN_BURST4 */
	DMA_DMACSDP_SRCPACK_OFF, 	/* Source packing
								DMA_DMACSDP_SRCPACK_ON
								DMA_DMACSDP_SRCPACK_OFF */
	DMA_DMACSDP_SRC_PERIPH, 	/* Source selection
								DMA_DMACSDP_SRC_SARAM
								DMA_DMACSDP_SRC_DARAM
								DMA_DMACSDP_SRC_EMIF
								DMA_DMACSDP_SRC_PERIPH */
	DMA_DMACSDP_DATATYPE_16BIT /* Data type
								DMA_DMACSDP_DATATYPE_8BIT
								DMA_DMACSDP_DATATYPE_16BIT
								DMA_DMACSDP_DATATYPE_32BIT */
	), /* DMACSDP */

DMA_DMACCR_RMK(
	DMA_DMACCR_DSTAMODE_POSTINC, /* Destination address mode
									DMA_DMACCR_DSTAMODE_CONST
									DMA_DMACCR_DSTAMODE_POSTINC
									DMA_DMACCR_DSTAMODE_SGLINDX
									DMA_DMACCR_DSTAMODE_DBLINDX */
	DMA_DMACCR_SRCAMODE_CONST, 	/* Source address mode	源地址不改变
									DMA_DMACCR_SRCAMODE_CONST
									DMA_DMACCR_SRCAMODE_POSTINC
									DMA_DMACCR_SRCAMODE_SGLINDX
									DMA_DMACCR_SRCAMODE_DBLINDX */
	DMA_DMACCR_ENDPROG_OFF, 	/* End of programmation bit
									DMA_DMACCR_ENDPROG_ON
									DMA_DMACCR_ENDPROG_OFF */
	DMA_DMACCR_REPEAT_OFF,	/* Repeat condition
							DMA_DMACCR_REPEAT_ON
							DMA_DMACCR_REPEAT_ALWAYS
							DMA_DMACCR_REPEAT_ENDPROG1
							DMA_DMACCR_REPEAT_OFF */
	DMA_DMACCR_AUTOINIT_OFF,/* Auto initialization bit	。。。。。。。。。。。。。
							DMA_DMACCR_AUTOINIT_ON
							DMA_DMACCR_AUTOINIT_OFF */
	DMA_DMACCR_EN_STOP,		/* Channel enable
							DMA_DMACCR_EN_START
							DMA_DMACCR_EN_STOP */
	DMA_DMACCR_PRIO_LOW,		/* Channel priority	通道优先级设置为低
								DMA_DMACCR_PRIO_HI
								DMA_DMACCR_PRIO_LOW */
	DMA_DMACCR_FS_ELEMENT, /* Frame\Element Sync
							DMA_DMACCR_FS_ENABLE
							DMA_DMACCR_FS_DISABLE
							DMA_DMACCR_FS_ELEMENT
							DMA_DMACCR_FS_FRAME */
	DMA_DMACCR_SYNC_REVT0 /* Synchronization control
							DMA_DMACCR_SYNC_NONE
							DMA_DMACCR_SYNC_REVT0
							DMA_DMA
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值