?? echo.c
字號:
#include "audio.h"
#include "dipled.h"
#include <stdio.h>
#include <csl.h>
#include <csl_mcbsp.h>
/* Configurations for the control and data interface (audio.c) */
extern MCBSP_Config audioCntlCfg;
extern MCBSP_Config audioDataCfg;
/* AIC23 configuration (audio.c) */
extern CODEC_Config codecCfg;
/* Handles to the McBSP ports (audio.c) */
extern MCBSP_Handle hAudio_cntl;
extern MCBSP_Handle hAudio_data;
#define bufferlength 3000 //buffer size for delay
#pragma DATA_SECTION(left_buffer, ".buffer");
#pragma DATA_SECTION(right_buffer, ".buffer");
short left_buffer[bufferlength]; //create buffer
short right_buffer[bufferlength]; //create buffer
short i = 0;
short amplitude = 5; //to vary amplitude of echo
/* configure the codec to operate at 8KHz samp. rate */
void audio_setFreq_8k(void)
{
codecCfg.regs[8] &= ~0x003e; /* mask SR3..SR0 & BOSR */
codecCfg.regs[8] |= 0x000d;
audio_reset();
}
/*Joshuatok*/
void main(void)
{
Int16 left_in, right_in;
Int16 left_out, right_out;
printf("Echo\n");
CSL_init(); /* initialize CSL, required! */
audio_setup(); /* configure the audio interface */
audio_start(); /* start the receive and transmit of samples */
audio_setFreq_8k();
for (i=0; i<bufferlength; i++){
left_buffer[i] = 0;
right_buffer[i] = 0;
}
i = 0;
while(1){
while(!MCBSP_rrdy(hAudio_data));
left_in = MCBSP_read16(hAudio_data);
while(!MCBSP_rrdy(hAudio_data));
right_in = MCBSP_read16(hAudio_data);
left_out = left_in + 0.1*amplitude*left_buffer[i];
right_out = right_in + 0.1*amplitude*right_buffer[i];
/* replace the oldest sample */
//left_buffer[i] = left_in;
left_buffer[i] = left_out;
//right_buffer[i] = right_in;
right_buffer[i] = right_out;
i++;
if (i>=bufferlength){
i = 0;
}
while(!MCBSP_xrdy(hAudio_data));
MCBSP_write16(hAudio_data, left_out);
while(!MCBSP_xrdy(hAudio_data));
MCBSP_write16(hAudio_data, right_out);
}
}
/*Joshuatok*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -