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

📄 sine.c

📁 DSP课程课堂作业程序
💻 C
字号:
/*****************************************************************************/
/* sine.c                                                                    */
/*                                                                           */
/* sine wave generator.  edit by Gao                                                      */
/*                                                                           */
/*****************************************************************************/
#include <type.h>
#include <board.h>
#include <codec.h>
#include <mcbsp54.h>

/*****************************************************************************/
/* Function Prototypes                                                       */
/*****************************************************************************/

/* This delay routine does not conflict with DSP/BIOS.  It is used in this  */
/* example rather than brd_delay_msec which causes DSP/BIOS conflicts just  */
/* because of this.  If you are not using DSP/BIOS, you can change the code */
/* to use brd_delay_msec.                                                   */

void delay(s16 period);


/*****************************************************************************/
/* Global Variables                                                          */
/*****************************************************************************/

HANDLE hHandset;
s16 data;
u16 j=1;
s16 out_buffer[256];//定义

//**********************************************************************
//       SINE LOOKUP TABLE
//**********************************************************************

	s16 SINE_TABLE[]=
	{
	  0x00324
	 ,0x00647
	 ,0x0096A
	 ,0x00C8B
	 ,0x00FAB
	 ,0x012C7
	 ,0x015E1
	 ,0x018F8
	 ,0x01C0B
	 ,0x01F19
	 ,0x02223
	 ,0x02527
	 ,0x02826
	 ,0x02B1E
	 ,0x02E10
	 ,0x030FB
	 ,0x033DE
	 ,0x036B9
	 ,0x0398C
	 ,0x03C56
	 ,0x03F16
	 ,0x041CD
	 ,0x0447A
	 ,0x0471C
	 ,0x049B3
	 ,0x04C3F
	 ,0x04EBF
	 ,0x05133
	 ,0x0539A
	 ,0x055F4
	 ,0x05842
	 ,0x05A81
	 ,0x05CB3
	 ,0x05ED6
	 ,0x060EB
	 ,0x062F1
	 ,0x064E7
	 ,0x066CE
	 ,0x068A5
	 ,0x06A6C
	 ,0x06C23
	 ,0x06DC9
	 ,0x06F5E
	 ,0x070E1
	 ,0x07254
	 ,0x073B5
	 ,0x07503
	 ,0x07640
	 ,0x0776B
	 ,0x07883
	 ,0x07989
	 ,0x07A7C
	 ,0x07B5C
	 ,0x07C29
	 ,0x07CE2
	 ,0x07D89
	 ,0x07E1C
	 ,0x07E9C
	 ,0x07F08
	 ,0x07F61
	 ,0x07FA6
	 ,0x07FD7
	 ,0x07FF5
	 ,0x07FFE
	 ,0x07FF5
	 ,0x07FD7
	 ,0x07FA6
	 ,0x07F61
	 ,0x07F08
	 ,0x07E9C
	 ,0x07E1C
	 ,0x07D89
	 ,0x07CE2
	 ,0x07C29
	 ,0x07B5C
	 ,0x07A7C
	 ,0x07989
	 ,0x07883
	 ,0x0776B
	 ,0x07640
	 ,0x07503
	 ,0x073B5
	 ,0x07254
	 ,0x070E1
	 ,0x06F5E
	 ,0x06DC9
	 ,0x06C23
	 ,0x06A6C
	 ,0x068A5
	 ,0x066CE
	 ,0x064E7
	 ,0x062F1
	 ,0x060EB
	 ,0x05ED6
	 ,0x05CB3
	 ,0x05A81
	 ,0x05842
	 ,0x055F5
	 ,0x0539A
	 ,0x05133
	 ,0x04EBF
	 ,0x04C3F
	 ,0x049B3
	 ,0x0471C
	 ,0x0447A
	 ,0x041CD
	 ,0x03F16
	 ,0x03C56
	 ,0x0398C
	 ,0x036B9
	 ,0x033DE
	 ,0x030FB
	 ,0x02E10
	 ,0x02B1E
	 ,0x02826
	 ,0x02527
	 ,0x02223
	 ,0x01F19
	 ,0x01C0B
	 ,0x018F8
	 ,0x015E1
	 ,0x012C7
	 ,0x00FAB
	 ,0x00C8B
	 ,0x0096A
	 ,0x00647
	 ,0x00324
	 ,0x00000
	 ,0x0FCDC
	 ,0x0F9B9
	 ,0x0F696
	 ,0x0F375
	 ,0x0F056
	 ,0x0ED39
	 ,0x0EA1F
	 ,0x0E708
	 ,0x0E3F5
	 ,0x0E0E7
	 ,0x0DDDD
	 ,0x0DAD9
	 ,0x0D7DA
	 ,0x0D4E2
	 ,0x0D1F0
	 ,0x0CF05
	 ,0x0CC22
	 ,0x0C947
	 ,0x0C674
	 ,0x0C3AA
	 ,0x0C0EA
	 ,0x0BE33
	 ,0x0BB86
	 ,0x0B8E4
	 ,0x0B64D
	 ,0x0B3C1
	 ,0x0B141
	 ,0x0AECD
	 ,0x0AC66
	 ,0x0AA0C
	 ,0x0A7BE
	 ,0x0A57F
	 ,0x0A34D
	 ,0x0A12A
	 ,0x09F15
	 ,0x09D0F
	 ,0x09B19
	 ,0x09932
	 ,0x0975B
	 ,0x09594
	 ,0x093DD
	 ,0x09237
	 ,0x090A2
	 ,0x08F1F
	 ,0x08DAC
	 ,0x08C4C
	 ,0x08AFD
	 ,0x089C0
	 ,0x08895
	 ,0x0877D
	 ,0x08677
	 ,0x08584
	 ,0x084A4
	 ,0x083D8
	 ,0x0831E
	 ,0x08277
	 ,0x081E4
	 ,0x08164
	 ,0x080F8
	 ,0x0809F
	 ,0x0805A
	 ,0x08029
	 ,0x0800B
	 ,0x08002
	 ,0x0800B
	 ,0x08029
	 ,0x0805A
	 ,0x0809F
	 ,0x080F8
	 ,0x08164
	 ,0x081E4
	 ,0x08277
	 ,0x0831E
	 ,0x083D7
	 ,0x084A4
	 ,0x08584
	 ,0x08677
	 ,0x0877D
	 ,0x08895
	 ,0x089C0
	 ,0x08AFD
	 ,0x08C4B
	 ,0x08DAC
	 ,0x08F1F
	 ,0x090A2
	 ,0x09237
	 ,0x093DD
	 ,0x09594
	 ,0x0975B
	 ,0x09932
	 ,0x09B19
	 ,0x09D0F
	 ,0x09F15
	 ,0x0A12A
	 ,0x0A34D
	 ,0x0A57F
	 ,0x0A7BE
	 ,0x0AA0B
	 ,0x0AC66
	 ,0x0AECD
	 ,0x0B141
	 ,0x0B3C1
	 ,0x0B64D
	 ,0x0B8E4
	 ,0x0BB86
	 ,0x0BE33
	 ,0x0C0EA
	 ,0x0C3AA
	 ,0x0C674
	 ,0x0C947
	 ,0x0CC22
	 ,0x0CF05
	 ,0x0D1F0
	 ,0x0D4E1
	 ,0x0D7DA
	 ,0x0DAD9
	 ,0x0DDDD
	 ,0x0E0E7
	 ,0x0E3F5
	 ,0x0E708
	 ,0x0EA1E
	 ,0x0ED38
	 ,0x0F055
	 ,0x0F375
	 ,0x0F696
	 ,0x0F9B9
	 ,0x0FCDC
	 ,0x00000
	 }; 
	 
/*****************************************************************************/
/* MAIN                                                                      */
/*****************************************************************************/

void main()
{
    s16 amp=1;		//sine amplitude coefficient
    s16 cnt=2;
    
	u16 i=0;

    if (brd_init(100))
        return;

	/* blink the leds a couple times */
	while ( cnt-- )
	{
		brd_led_toggle(BRD_LED0);
		/* brd_delay_msec(1000); */
		delay(1000);
		brd_led_toggle(BRD_LED1);
		/* brd_delay_msec(1000); */
		delay(1000);
		brd_led_toggle(BRD_LED2);
		/* brd_delay_msec(1000); */
		delay(1000);
	}


   /* Open Handset Codec */
    hHandset = codec_open(HANDSET_CODEC);               /* Acquire handle to codec */

    /* Set codec parameters */
    codec_dac_mode(hHandset, CODEC_DAC_15BIT);          /* DAC in 15-bit mode */
    //codec_adc_mode(hHandset, CODEC_ADC_15BIT);          /* ADC in 15-bit mode */
    //codec_ain_gain(hHandset, CODEC_AIN_6dB);            /* 6dB gain on analog input to ADC */
    //codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB);    /* -6dB gain on analog output from DAC */
    codec_sample_rate(hHandset,SR_16000);               /* 16KHz sampling rate */


    /* Polling and digital loopback */
  while (1)
    {
       /* Wait for sample from handset */
       while (!MCBSP_XRDY(HANDSET_CODEC)) {};
   

       /* Read sample from and write back to handset codec */
       //data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC);
       //*(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data; 
       *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = amp*SINE_TABLE[i];
       //f=fs/256/N
     i=i+1;		//62.5HZ
     //  i=i+10;	//625HZ
       // i=i+100;		//6250HZ
     
        
         i&=0x00ff;
         
     //   out_buffer[j]=amp*SINE_TABLE[i];//数据存放在数组中
   //j++;
   //j&=0x00ff;    //mod 255
    
}
}


void delay(s16 period)
{
    int i, j;
    
    for(i=0; i<period; i++)
    {
        for(j=0; j<period>>1; j++);
    }
}

⌨️ 快捷键说明

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