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

📄 dsp6713_mainproc.c

📁 于博士cadence视频配套工程文件
💻 C
字号:
/* ------------------------------------------------------------------ */
/* Copyright declaration                                              */
/* ------------------------------------------------------------------ */
/* ------------------------------------------------------------------ */
/* FileName:          DSP_mainproc.c                                  */
/* Writen by:         Yu zheng                                        */ 
/* ------------------------------------------------------------------ */

/* define chip */
#define CHIP_6713

/* Include header files */
#include <c6x.h>
#include <csl.h>
#include <csl_irq.h>
#include <csl_edma.h>
#include <csl_mcbsp.h>
#include <csl_gpio.h>

#include "DSP6713_CHIP.h"
#include "DSP6713_EDMA.h"
#include "DSP6713_MCBSP.h"
#include "DSP6713_const.h"
#include "DSP6713_algorithm.h"

/* Global variables used in ISRs */
volatile Uint32 recv_done = FALSE;
volatile Uint32 xmit_done = FALSE;

volatile Uint16 PINGPONG = PING;

/* allocate inputbuffer and outputbuffer automatically */
#pragma DATA_ALIGN(inputbuffer_ping,8)
int inputbuffer_ping[DATA_LEN];

#pragma DATA_ALIGN(inputbuffer_pong,8)
int inputbuffer_pong[DATA_LEN];

#pragma DATA_ALIGN(inputbuffer_ping,8)
int outputbuffer_ping[DATA_LEN];

#pragma DATA_ALIGN(inputbuffer_pong,8)
int outputbuffer_pong[DATA_LEN];


/* declare CSL objects*/
GPIO_Handle  hGpio;

MCBSP_Handle hMcbsp0;
MCBSP_Handle hMcbsp1;

EDMA_Handle hEdma_mcbsp_rcv;
EDMA_Handle hEdma_ping_rcv;
EDMA_Handle hEdma_pong_rcv;
EDMA_Handle hEdma_mcbsp_xmit;
EDMA_Handle hEdma_ping_xmit;
EDMA_Handle hEdma_pong_xmit;

/* include verctor table to call the IRQ ISR hookup */
extern far void vectors();


/*******************************************************/
void initGpio(void)
{
   hGpio = GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);

   GPIO_pinEnable(hGpio,GPIO_PIN10);  
   GPIO_pinDirection(hGpio,GPIO_PIN10,GPIO_OUTPUT);

   GPIO_pinWrite(hGpio,GPIO_PIN10,1);	// control signal output
}

/*******************************************************/
void main(void)
{
	/* define vars and structures */	 
    int wait = 0;
	
	CSL_init();				/* initialize CSL library */
	IRQ_setVecs(vectors);	/* point to the IRQ vector table */	
	DSP6713_chipinit();		/* initialize chip set */

    initGpio();
    for (wait=0; wait<200; wait++);
    
    // output reset signal by GPIO_10	
	GPIO_pinWrite(hGpio,GPIO_PIN10,0);
	for (wait=0; wait<0x2FFF00; wait++);
	GPIO_pinWrite(hGpio,GPIO_PIN10,1);
	for (wait=0; wait<0x1FFF00; wait++);
	
	my_mcbsp_start(mcbsp0);	/* open,config,enable MCBSP0 */
	
	/* Initialize convbuffers used in dataprocessing() function */
	initconvbuf();			
	initbuf();
							
	/* wait for data processing */
	while(1)
	{
		
      	/* FIR filter */ 
		if (recv_done && xmit_done) 
		{
			recv_done = FALSE;
			xmit_done = FALSE;
			
			if (PINGPONG == PING)
			{
				dataprocessing(PING);
				PINGPONG = PONG;
			}

			else 
			{
				dataprocessing(PONG);
				PINGPONG = PING;
			}
		}		
	}
}	
/* end of main */

/* ---------------------------------------------------------------- */
/* ---------------------------------------------------------------- */
/* vecs.asm hooks this up to IRQ 08 */
interrupt void c_int08(void)      
{
	if (EDMA_intTest(13))
	{
		recv_done = TRUE;
		EDMA_intClear(13);  /* clear the CIPR bit so future interrupt can be recognized */
	}
	else if (EDMA_intTest(12))
	{
		xmit_done = TRUE;
		EDMA_intClear(12); /* clear the CIPR bit so future interrupt can be recognized */
	}
	return; /* the interrupr service routin must have return instructive */
}

/* ---------------------------------------------------------------- */
/* ---------------------------------------------------------------- */




























⌨️ 快捷键说明

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