各位大牛,我把原子战舰板子自带的录音机程序采样率改为48000后录音的语速变快,不知为何,请大家指教!
void recoder_enter_rec_mode(u16 agc)
{
//??????IMA ADPCM,???ù??????????????:
//???ù??=CLKI/256*d;
//???èd=0,??2±???,?????§????12.288M.????Fc=(2*12288000)/256*6=16Khz
//??????????PCM,???ù???±?????????ù??
VS_WR_Cmd(SPI_BASS,0x0000);
VS_WR_Cmd(SPI_AICTRL0,48000); //?è?????ù??,?è????8Khz
VS_WR_Cmd(SPI_AICTRL1,agc); //?è??????,0,×???????.1024?à?±??1±?,512?à?±??0.5±?,×??ó??65535=64±?
VS_WR_Cmd(SPI_AICTRL2,0); //?è??????×??ó??,0,?ú±í×??ó??65536=64X
VS_WR_Cmd(SPI_AICTRL3,6); //×ó?¨??(MIC???ù??????)
VS_WR_Cmd(SPI_CLOCKF,0X2000); //?è??VS10XX???±??,MULT:2±???;ADD:?????í;CLK:12.288Mhz
VS_WR_Cmd(SPI_MODE,0x1804); //MIC,?????¤??
delay_ms(5); //????????1.35ms
VS_Load_Patch((u16*)wav_plugin,40);//VS1053??WAV?????è??patch
}
//??????WAV?·.
void recoder_wav_init(__WaveHeader* wavhead) //??????WAV?·
{
wavhead->riff.ChunkID=0X46464952; //"RIFF"
wavhead->riff.ChunkSize=0; //?????·?¨,×??ó?è??????
wavhead->riff.Format=0X45564157; //"WAVE"
wavhead->fmt.ChunkID=0X20746D66; //"fmt "
wavhead->fmt.ChunkSize=16; //?ó????16??×???
wavhead->fmt.AudioFormat=0X01; //0X01,±í??PCM;0X01,±í??IMA ADPCM
wavhead->fmt.NumOfChannels=1; //???ù??
wavhead->fmt.SampleRate=48000; //8Khz???ù?? ???ù????
wavhead->fmt.ByteRate=wavhead->fmt.SampleRate*2;//16??,??2??×???
wavhead->fmt.BlockAlign=2; //?é?ó??,2??×??????????é
wavhead->fmt.BitsPerSample=16; //16??PCM
wavhead->data.ChunkID=0X61746164; //"data"
wavhead->data.ChunkSize=0; //?????ó??,???è??????
}
|