OpenEdv-开源电子网

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

STM32F411上用VS1053模块录音,结果全部都是杂音,参考的是STM32战舰板子上的录音实验,调试好几天了,还没有解决,大神求助啊

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-3-5
在线时间
11 小时
发表于 2016-4-5 22:37:03 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-3-5
在线时间
11 小时
 楼主| 发表于 2016-4-5 22:56:02 | 显示全部楼层
VS1053的正弦测试和RAM测试,音乐播放,都没有问题,查看录制的WAV文件头数据也是正常的。程序中VS1053采样参数的设置,参考的是STM32F103战舰板子上的参数设置,会不会是参数设置这一块的问题啊?
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-3-5
在线时间
11 小时
 楼主| 发表于 2016-4-5 22:58:46 | 显示全部楼层
北极企鹅 发表于 2016-4-5 22:56
VS1053的正弦测试和RAM测试,音乐播放,都没有问题,查看录制的WAV文件头数据也是正常的。程序中VS1053采样 ...

void Recorder_Enter_RecMode(uint16_t agc)
{
   //如果是IMA ADPCM,采样率计算公式如下:
   //采样率=CLKI/256*d;       
   //假设d=0,并2倍频,外部晶振为12.288M.那么Fc=(2*12288000)/256*6=16Khz
   //如果是线性PCM,采样率直接就写采样值
  VS_W_Cmd(SPI_BASS,0x0000);
//  VS_R_Cmd(SPI_BASS);
  VS_W_Cmd(SPI_AICTRL0,16000);        //设置采样率,设置为8Khz
//  VS_R_Cmd(SPI_AICTRL0);
  VS_W_Cmd(SPI_AICTRL1,agc);                //设置增益,0,自动增益.1024相当于1倍,512相当于0.5倍,最大值65535=64倍       
//  VS_R_Cmd(SPI_AICTRL1);
  VS_W_Cmd(SPI_AICTRL2,0);                //设置增益最大值,0,代表最大值65536=64X
//  VS_R_Cmd(SPI_AICTRL2);
  VS_W_Cmd(SPI_AICTRL3,6);                //左通道(MIC单声道输入)
//  VS_R_Cmd(SPI_AICTRL3);
  VS_W_Cmd(SPI_CLOCKF,0X2000);        //设置VS10XX的时钟,MULT:2倍频;ADD:不允许;CLK:12.288Mhz
//  VS_R_Cmd(SPI_CLOCKF);
  VS_W_Cmd(SPI_MODE,0x1804);                //MIC,录音激活   
//  VS_R_Cmd(SPI_MODE);
  mico_thread_msleep( 5 );                                //等待至少1.35ms
  VS_Load_Patch((uint16_t*)wav_plugin,40);//VS1053的WAV录音需要patch
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-4-6 22:25:25 | 显示全部楼层
把录制的文件,用hex看看文件头,对不对.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-3-5
在线时间
11 小时
 楼主| 发表于 2016-4-6 23:17:06 | 显示全部楼层
我用UltraEdit 软件打开录制的文件,WAV数据头的文件大小(riff.ChunkSize)和数据大小(data.ChunkSize)都是正确的。初始化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
        wavhead->fmt.NumOfChannels=1;                //单声道
        wavhead->fmt.SampleRate=8000;                //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;                        //数据大小,还需要计算  
}
会不会是我PCM数据读取时的问题啊,检查发现经常会有数据溢出的现象。还有一个疑问是是:为啥录音模式一激活后,耳机就开始嘟嘟的响,声音很大。
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-3-5
在线时间
11 小时
 楼主| 发表于 2016-4-7 22:37:01 | 显示全部楼层
正点原子 发表于 2016-4-6 22:25
把录制的文件,用hex看看文件头,对不对.

原子哥,我现在已将数据溢出的问题解决了,是因为读取寄存器SPI-HDAT1、SPI-HDAT0的值操作时间过长,导致数据无法及时读取,产生溢出现象。现在可以录音了,但录制的文件还存在大量噪音,发现录音时拔掉耳机,就没有噪音,但插上耳机就会有噪音。还有就是程序一进入激活录音模式之后就发出嘟嘟的响声,不知是何原因。将ATK-VS1053模块连接到STM32战舰开发板上就可正常录音。原子哥,这个噪音是怎么回事了,电流干扰吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-4-9 22:24:34 | 显示全部楼层
你耳机没查错吧?
另外,供电 要足
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-3-5
在线时间
11 小时
 楼主| 发表于 2016-4-12 11:37:49 | 显示全部楼层
正点原子 发表于 2016-4-9 22:24
你耳机没查错吧?
另外,供电 要足

耳机应该没有差错,同样的插法,接在战舰板子上录音就是正常的。我使用的是3.3V供电,这个应该是可以正常工作的啊。原子哥,还有没有其他可能出现的问题啊?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-4-13 22:24:26 | 显示全部楼层
北极企鹅 发表于 2016-4-12 11:37
耳机应该没有差错,同样的插法,接在战舰板子上录音就是正常的。我使用的是3.3V供电,这个应该是可以正常 ...

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 22:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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