找回密码
 立即注册

微信扫码登录

查看: 870|回复: 1

[Audio] B91音频录音不正常

[复制链接]

5

主题

0

回帖

47

积分

英勇黄铜

积分
47
发表于 2025-2-13 15:44:08 | 显示全部楼层 |阅读模式
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; // 位操作切换缓冲区
                }
    }
}


3

主题

72

回帖

302

积分

版主

积分
302
发表于 2025-2-14 10:26:23 | 显示全部楼层
hi,可以把录音发出来听听,看看录成什么样,代码一下子没看明白在干啥
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-4-2 13:48 , Processed in 0.084279 second(s), 21 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表