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

📄 dec6713_codec.c

📁 使用ti6713芯片
💻 C
字号:

/******************************************************************************/
/*  Copyright 2004 by SEED Electronic Technology LTD.                         */
/*  All rights reserved. SEED Electronic Technology LTD.                      */
/*  Restricted rights to use, duplicate or disclose this code are             */
/*  granted through contract.                                                 */
/******************************************************************************/
/********************************************************************************\
\*DEC6713_CODEC.c		-Codec AIC23B test programme.
\*
\*
\*
\********************************************************************************/
#include <csl.h>
#include <csl_mcbsp.h>
#include <DEC6713.h>
#include <c6x.h>
#include <codec.h>
#include <csl_edma.h>
#include <csl_irq.h>
#include <stdio.h>
#include <csl_emif.h>



//#include <config.h>
#define Ture 1
extern far void vectors();
Uint32 *Src_StartAdd;
Uint32 TempData;

int wait;
int i,a=0;
Uint32 data1[5]={1127,2328,5629,1530,6331};
Uint32 data2[5]={2132,3353,5234,3425,6636};
Uint32 edmainbuff=60;

 void init_mcbsp0(void);
 void set_interrupts_edma(void);
 
 
MCBSP_Handle hMcbsp1;
EDMA_Handle hEdma1;
EDMA_Handle hEdma2;   
EDMA_Handle hEdmaPing1; /* Handle for the ping EDMA reload parameters  */
EDMA_Handle hEdmaPong1; /* Handle for the pong EDMA reload parameters  */
EDMA_Config cfgEdma1;   /* EDMA configuration structure   */
//EDMA_Handle hEdmadummy;
 
 
EDMA_Config cfgEdmaPing1 = {  
      EDMA_OPT_RMK(
       EDMA_OPT_PRI_HIGH,
       EDMA_OPT_ESIZE_32BIT,
       EDMA_OPT_2DS_NO,
       EDMA_OPT_SUM_INC,
       EDMA_OPT_2DD_NO,
       EDMA_OPT_DUM_NONE,
       EDMA_OPT_TCINT_YES,
       EDMA_OPT_TCC_OF(12),
       EDMA_OPT_LINK_YES,
       EDMA_OPT_FS_NO
       ),
       EDMA_SRC_RMK(0x00000000),
       EDMA_CNT_RMK(0,2),
       EDMA_DST_RMK(0X00000000),
       EDMA_IDX_RMK(0,2),
       EDMA_RLD_RMK(0,0)
};  
EDMA_Config cfgEdmaPong1 = {  
      EDMA_OPT_RMK(
       EDMA_OPT_PRI_HIGH,
       EDMA_OPT_ESIZE_32BIT,
       EDMA_OPT_2DS_NO,
       EDMA_OPT_SUM_INC,
       EDMA_OPT_2DD_NO,
       EDMA_OPT_DUM_NONE,
       EDMA_OPT_TCINT_YES,
       EDMA_OPT_TCC_OF(12),
       EDMA_OPT_LINK_YES,
       EDMA_OPT_FS_NO
       ),
       EDMA_SRC_RMK(0x00000000),
       EDMA_CNT_RMK(0,5),
       EDMA_DST_RMK(0X00000000),
       EDMA_IDX_RMK(0,2),
       EDMA_RLD_RMK(0,0)
}; 
void main()
 {
     CSL_init();
     DEC6713_init();
     IRQ_setVecs(vectors);
     init_mcbsp0();
	 MCBSP_enableSrgr(hMcbsp1); 
     for(wait=0;wait<0x10;wait++);
    EDMA_clearPram(0x00000000);
     set_interrupts_edma();
     
     /**************************************************************/
     hEdma1=EDMA_open(EDMA_CHA_XEVT0,EDMA_OPEN_RESET);
     
  hEdmaPing1 = EDMA_allocTable(-1);
  hEdmaPong1 = EDMA_allocTable(-1);
 
  /* Let's copy the ping reload configuration structure to an */
  /* intermediate configuration structure.                    */
  cfgEdmaPing1.src = EDMA_SRC_RMK(data1);
  cfgEdmaPong1.src = EDMA_SRC_RMK(data2);
  cfgEdmaPing1.dst = EDMA_DST_RMK(MCBSP_ADDRH(hMcbsp1,DXR));
  cfgEdmaPong1.dst = EDMA_DST_RMK(MCBSP_ADDRH(hMcbsp1,DXR));
  /* Let's initialize the link fields of the configuration structures */
  
 
  
  cfgEdmaPing1.rld = EDMA_RLD_RMK(0,hEdmaPong1);
  cfgEdmaPong1.rld = EDMA_RLD_RMK(0,hEdmaPing1);
  cfgEdma1 = cfgEdmaPing1;
  
  
  
  /* Now let's program up the EDMA channel with the configuration structure */
  EDMA_config(hEdma1, &cfgEdma1);  
  /* Let's also configure the reload parameter tables in the EDMA PRAM  */
  /* with the values in the configuration structures.                   */
  EDMA_config(hEdmaPing1, &cfgEdmaPing1);
  EDMA_config(hEdmaPong1, &cfgEdmaPong1);  
  

 
      
      
      EDMA_enableChannel(hEdma1);
    //    EDMA_enableChannel(hEdma2);
      MCBSP_enableXmt(hMcbsp1);
    //    MCBSP_enableRcv(hMcbsp0);
  // MCBSP_enableFsync(hMcbsp0);

while(Ture)
 {
;		
}
  }
	



/********************************************************************************/
/* End of DEC6713_CODEC.C */
/********************************************************************************/

 void init_mcbsp0(void)
 {
   MCBSP_Config mcbspCfg1={
   MCBSP_SPCR_RMK(
   MCBSP_SPCR_FREE_DEFAULT,
   MCBSP_SPCR_SOFT_DEFAULT,
   MCBSP_SPCR_FRST_YES,
   MCBSP_SPCR_GRST_DEFAULT,
   MCBSP_SPCR_XINTM_XRDY,
   MCBSP_SPCR_XSYNCERR_DEFAULT,
   MCBSP_SPCR_XRST_YES,
   MCBSP_SPCR_DLB_ON,
   MCBSP_SPCR_RJUST_RZF,
   MCBSP_SPCR_CLKSTP_DEFAULT,
   MCBSP_SPCR_DXENA_ON,
   MCBSP_SPCR_RINTM_RRDY,
   MCBSP_SPCR_RSYNCERR_DEFAULT,
   MCBSP_SPCR_RRST_DEFAULT
   ),

         MCBSP_RCR_RMK(
   MCBSP_RCR_RPHASE_SINGLE,
   MCBSP_RCR_RFRLEN2_DEFAULT,
   MCBSP_RCR_RWDLEN2_DEFAULT,
   MCBSP_RCR_RCOMPAND_MSB,
   MCBSP_RCR_RFIG_YES,
   MCBSP_RCR_RDATDLY_0BIT,
   MCBSP_RCR_RFRLEN1_OF(0),
   MCBSP_RCR_RWDLEN1_32BIT,
   MCBSP_RCR_RWDREVRS_DISABLE
   ),
   
      MCBSP_XCR_RMK(
   MCBSP_XCR_XPHASE_SINGLE,
   MCBSP_XCR_XFRLEN2_DEFAULT,
   MCBSP_XCR_XWDLEN2_DEFAULT,
   MCBSP_XCR_XCOMPAND_MSB,
   MCBSP_XCR_XFIG_YES,
   MCBSP_XCR_XDATDLY_0BIT,
   MCBSP_XCR_XFRLEN1_OF(0),
   MCBSP_XCR_XWDLEN1_32BIT,
   MCBSP_XCR_XWDREVRS_DISABLE
   ),
   MCBSP_SRGR_RMK(
   MCBSP_SRGR_GSYNC_DEFAULT,
   MCBSP_SRGR_CLKSP_DEFAULT,
   MCBSP_SRGR_CLKSM_INTERNAL,
   MCBSP_SRGR_FSGM_DXR2XSR,
   MCBSP_SRGR_FPER_DEFAULT,
   MCBSP_SRGR_FWID_DEFAULT,
   MCBSP_SRGR_CLKGDV_OF(15)
   ),
   MCBSP_MCR_DEFAULT,
   MCBSP_RCER_DEFAULT,
   MCBSP_XCER_DEFAULT,
   MCBSP_PCR_RMK(
   MCBSP_PCR_XIOEN_SP,
   MCBSP_PCR_RIOEN_DEFAULT,
   MCBSP_PCR_FSXM_EXTERNAL,
   MCBSP_PCR_FSRM_EXTERNAL,
   MCBSP_PCR_CLKXM_INPUT,
   MCBSP_PCR_CLKRM_INPUT,
   MCBSP_PCR_CLKSSTAT_DEFAULT,
   MCBSP_PCR_DXSTAT_DEFAULT,
   MCBSP_PCR_FSXP_ACTIVEHIGH,
   MCBSP_PCR_FSRP_ACTIVEHIGH,
   MCBSP_PCR_CLKXP_RISING,
   MCBSP_PCR_CLKRP_FALLING
   )
   };
   hMcbsp1=MCBSP_open(MCBSP_DEV0,MCBSP_OPEN_RESET);
   MCBSP_config(hMcbsp1,&mcbspCfg1);
   
 }
 /***************************************************************/
 void set_interrupts_edma(void)
 {
   IRQ_nmiEnable();
   IRQ_globalEnable();
   IRQ_reset(IRQ_EVT_EDMAINT);
   IRQ_disable(IRQ_EVT_EDMAINT);
   EDMA_intDisable(12);
 //  EDMA_intDisable(13);
   IRQ_clear(IRQ_EVT_EDMAINT);
  EDMA_intClear(12);
  // EDMA_intClear(13);
   IRQ_enable(IRQ_EVT_EDMAINT);
  EDMA_intEnable(12);
 //  EDMA_intEnable(13);
   return;
   
 }
 
 
 interrupt void 
 c_int08()
 {
 
   EDMA_intClear(12);
 /*  a++;
  if(a%2==0)
    EDMA_link(hEdma1,hEdmaPong1);
    else
    EDMA_link(hEdma1,hEdmaPing1);  */
 }
 

⌨️ 快捷键说明

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