OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6025|回复: 15

关于I2S2和I2S3同时开启录音的问题

[复制链接]

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
发表于 2018-1-16 16:36:21 | 显示全部楼层 |阅读模式
20金钱
我通过f4的录音例程添加了I2S3(PA15为WS,PB3为CLK,PB4为ext_sd,)

//进入PCM 录音模式                   
void recoder_enter_rec_mode(void)
{
       
  I2S2_Init(I2S_Standard_Phillips,I2S_Mode_MasterTx,I2S_CPOL_Low,I2S_DataFormat_16b);                        //飞利浦标准,主机发送,时钟低电平有效,16位帧长度
        I2S2ext_Init(I2S_Standard_Phillips,I2S_Mode_SlaveRx,I2S_CPOL_Low,I2S_DataFormat_16b);                //飞利浦标准,从机接收,时钟低电平有效,16位帧长度       
        I2S2_SampleRate_Set(16000);        //设置采样率
        I2S2_TX_DMA_Init((u8*)&i2splaybuf[0],(u8*)&i2splaybuf[1],1);                 //配置TX DMA
        DMA1_Stream4->CR&=~(1<<4);        //关闭传输完成中断(这里不用中断送数据)
        I2S2ext_RX_DMA_Init(i2srecbuf1,i2srecbuf2,I2S_RX_DMA_BUF_SIZE/2);         //配置RX DMA
       

       
       
        I2S3_Init(I2S_Standard_Phillips,I2S_Mode_MasterTx,I2S_CPOL_Low,I2S_DataFormat_16b);                        //飞利浦标准,主机发送,时钟低电平有效,16位帧长度
        I2S3ext_Init(I2S_Standard_Phillips,I2S_Mode_SlaveRx,I2S_CPOL_Low,I2S_DataFormat_16b);                //飞利浦标准,从机接收,时钟低电平有效,16位帧长度       
        I2S3_SampleRate_Set(16000);        //设置采样率
  I2S3_TX_DMA_Init((u8*)&i2splaybuf[0],(u8*)&i2splaybuf[1],1);                 //配置TX DMA
        DMA1_Stream5->CR&=~(1<<4);        //关闭传输完成中断(这里不用中断送数据)
        I2S3ext_RX_DMA_Init(i2s3recbuf1,i2s3recbuf2,I2S3_RX_DMA_BUF_SIZE/2);         //配置RX DMA
       
       
        i2s_rx_callback=rec_i2s_dma_rx_callback;//回调函数指wav_i2s_dma_callback
        i2s3_rx_callback=rec_i2s3_dma_rx_callback;
       
        I2S2_Play_Start();        //开始I2S数据发送(主机)
        I2S2_Rec_Start();         //开始I2S数据接收(从机)
        I2S3_Play_Start();        //开始I2S数据发送(主机)
        I2S3_Rec_Start();         //开始I2S数据接收(从机)
        //recoder_remindmsg_show(0);
}  


回调函数内容如下
//录音 I2S_DMA接收中断服务函数.在中断里面写入数据
void rec_i2s_dma_rx_callback(void)
{   
        u16 bw;
        u8 res;
        if(rec_sta==0X80)//录音模式
        {  
                if(DMA1_Stream3->CR&(1<<19))
                        {
                        res=f_write(f_rec,i2srecbuf1,I2S_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
                        if(res)
                        {
                                printf("write error:%d\r\n",res);
                        }
                         
                }else
                {
                        res=f_write(f_rec,i2srecbuf2,I2S_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
                        if(res)
                        {
                                printf("write error:%d\r\n",res);
                        }
                }
                wavsize+=I2S_RX_DMA_BUF_SIZE;
               

        }
}
void rec_i2s3_dma_rx_callback(void)
{   
        u16 bw;
        u8 res;
        if(rec_sta==0X80)//录音模式
        {
                        if(DMA1_Stream0->CR&(1<<19))
                {
                        res=f_write(f_rec,i2s3recbuf1,I2S3_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
                        if(res)
                        {
                                printf("write error:%d\r\n",res);
                        }
                         
                }else
                {
                        res=f_write(f_rec,i2s3recbuf2,I2S3_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
                        if(res)
                        {
                                printf("write error:%d\r\n",res);
                        }
                }
                wavsize+=I2S3_RX_DMA_BUF_SIZE;
        }
}



我现在的两个都可以录音,但是录出来的效果是那种空灵效果,请问下该怎么解决这个问题

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-16 16:37:57 | 显示全部楼层
现在录出来的声音是那种空灵效果声音这是怎么回事呢 ?@正点原子
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-16 17:01:42 | 显示全部楼层
有大神吗
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-16 19:26:41 | 显示全部楼层
@正点原子    原子哥
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-1-17 00:48:23 | 显示全部楼层
你同时录制,写到同一个文件,肯定不行 啊!!
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-17 08:45:48 | 显示全部楼层
不然该怎么办呢原子哥  @正点原子
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-17 09:22:45 | 显示全部楼层
我想把两个录音合在一个wav音频中不可以吗?@正点原子
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-17 15:38:03 | 显示全部楼层
原子哥@正点原子     怎样才能实现呢
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-17 16:20:11 | 显示全部楼层
原子哥  怎么才能实现  两个i2s 同时录音  生成一个wav文件呢   像打电话一样   我在讲的时候你也在讲   @正点原子
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-18 08:56:22 | 显示全部楼层
@正点原子     原子哥能给个建议吗
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-1-19 01:59:53 | 显示全部楼层
不良苏 发表于 2018-1-17 09:22
我想把两个录音合在一个wav音频中不可以吗?@正点原子

那你接wm8978的左右声道,这样可以
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-19 10:50:11 | 显示全部楼层
原子哥我是分别从两块FM1288语音芯片的i2s接口录取声音的,两个语音芯片,两个咪头,接到f4的i2s2  和i2s3,同时对着咪头讲话录音,可以录在同一个文件里吗@正点原子
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-1-20 02:23:05 | 显示全部楼层
不良苏 发表于 2018-1-19 10:50
原子哥我是分别从两块FM1288语音芯片的i2s接口录取声音的,两个语音芯片,两个咪头,接到f4的i2s2  和i2s3 ...

最好用硬件的方式去混音,你同时路i2s2,i2s3,就得自己做混音,影响速率。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-1-22 10:09:58 | 显示全部楼层
正点原子 发表于 2018-1-20 02:23
最好用硬件的方式去混音,你同时路i2s2,i2s3,就得自己做混音,影响速率。

原子哥  是不是想要把两路录音合成一个音频文件,就必须得做混音是吧?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-1-23 02:10:43 | 显示全部楼层
不良苏 发表于 2018-1-22 10:09
原子哥  是不是想要把两路录音合成一个音频文件,就必须得做混音是吧?

是的啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

59

主题

196

帖子

0

精华

高级会员

Rank: 4

积分
770
金钱
770
注册时间
2018-5-3
在线时间
192 小时
发表于 2019-5-15 11:41:24 | 显示全部楼层
我现在用到IIS3+8978来实现录音,不知道你的IIS3和DMA是怎么配置的,我配置的接收的数据全部为0,不知道什么原因?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-5 05:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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