|
Information
说明: |
建议参照本版块置顶帖内容输入必要信息 |
芯片型号: |
B91 |
驱动SDK版本: |
v3.2 |
大佬们帮忙看看,录音的出来的音频不正常,是什么原因?
#define MIC_BUFF_SIZE 2048
signed short MIC_BUFF0[MIC_BUFF_SIZE] __attribute__((aligned(4)));
signed short MIC_BUFF1[MIC_BUFF_SIZE] __attribute__((aligned(4)));
const signed int *buf0_start = (const signed int *)MIC_BUFF0;
const signed int *buf0_end = (const signed int *)MIC_BUFF0 + (MIC_BUFF_SIZE >> 1);
const signed int *buf1_start = (const signed int *)MIC_BUFF1;
const signed int *buf1_end = (const signed int *)MIC_BUFF1 + (MIC_BUFF_SIZE >> 1);
audio_set_codec_in_path_a_d_gain(CODEC_IN_D_GAIN_20_DB,CODEC_IN_A_GAIN_8_DB);//recommend setting dgain:20db,again 0db
audio_init(AMIC_IN_TO_BUF_TO_LINE_OUT, AUDIO_48K, MONO_BIT_16);
audio_set_codec_adc_wnf(CODEC_ADC_WNF_MODE3);
/*ping-pong buff*/
audio_rx_dma_config(DMA2,(unsigned short*)(&MIC_BUFF0[0]),MIC_BUFF_SIZE,&rx_dma_list_config[0]);
audio_rx_dma_add_list_element(&rx_dma_list_config[0],&rx_dma_list_config[1],(unsigned short*)(&MIC_BUFF1[0]),MIC_BUFF_SIZE);
audio_rx_dma_add_list_element(&rx_dma_list_config[1],&rx_dma_list_config[0],(unsigned short*)(&MIC_BUFF0[0]),MIC_BUFF_SIZE);
audio_rx_dma_en();
_attribute_ram_code_sec_ void wirte_audio_data_new(void)
{
static unsigned char next_write_buf = 0;
__attribute__((unused)) unsigned char res;
unsigned int bw;
// 获取当前DMA写入地址并转换为字节指针
const int *cur_dma_addr = (const int *)audio_get_rx_dma_wptr(DMA2);
if ((cur_dma_addr >= buf0_start) && (cur_dma_addr < buf0_end) && (next_write_buf == 1)){
unsigned int bw;
if (f_write(&fp, (char *)MIC_BUFF1, MIC_BUFF_SIZE*sizeof(signed short), &bw) == FR_OK) {
wavHeader.dataSize += MIC_BUFF_SIZE*sizeof(signed short);
next_write_buf ^= 0x01; // 位操作切换缓冲区
}
}
if ((cur_dma_addr >= buf1_start) && (cur_dma_addr < buf1_end) && (next_write_buf == 0)){
unsigned int bw;
if (f_write(&fp, (char *)MIC_BUFF0, MIC_BUFF_SIZE*sizeof(signed short), &bw) == FR_OK) {
wavHeader.dataSize += MIC_BUFF_SIZE*sizeof(signed short);
next_write_buf ^= 0x01; // 位操作切换缓冲区
}
}
}
|
|