搜索
bottom↓
回复: 11

VS1003录音噪音太大(附代码)

[复制链接]

出0入0汤圆

发表于 2008-9-13 09:46:51 | 显示全部楼层 |阅读模式
可以录,但是有沙沙沙的背景噪音,去不掉,不知什么原因
unsigned char RIFFHeader0[] = {
   'R' , 'I' , 'F' , 'F' , // Chunk ID (RIFF)
   0x70, 0x70, 0x70, 0x70, // Chunk payload size (calculate after rec!)
   'W' , 'A' , 'V' , 'E' , // RIFF resource format type
   
   'f' , 'm' , 't' , ' ' , // Chunk ID (fmt )
   0x14, 0x00, 0x00, 0x00, // Chunk payload size (0x14 = 20 bytes)
   0x11, 0x00,             // Format Tag (IMA ADPCM)
   0x01, 0x00,             // Channels (1)
   0x80, 0x3e, 0x00, 0x00, // Sample Rate, 0x3e80 = 16.0kHz
   0xd7, 0x0f, 0x00, 0x00, // Average Bytes Per Second
   0x00, 0x01,             // Data Block Size (256 bytes)
   0x04, 0x00,             // ADPCM encoded bits per sample (4 bits)
   0x02, 0x00,             // Extra data (2 bytes)
   0xf9, 0x01,             // Samples per Block (505 samples)
   
   'f' , 'a' , 'c' , 't' , // Chunk ID (fact)
   0xc8, 0x01, 0x00, 0x00, // Chunk payload size (456 bytes (zeropad!))
   0xff, 0xff, 0xff, 0xff  // Number of Samples (calculate after rec!)
   // Insert 448 zeroes here!
};
unsigned char RIFFHeader504[] = {
   'd' , 'a' , 't' , 'a' , // Chunk ID (data)
   0x70, 0x70, 0x70, 0x70  // Chunk payload size (calculate after rec!)
};

unsigned long SEC_CAL=0;
               
                delayms(10);
                VS1003_CMD_Write(0x03,0x6696);
                VS1003_CMD_Write(0x0c,9);
                VS1003_CMD_Write(0x0d,0x1000);
                VS1003_CMD_Write(0,0x1804);
                _delay_ms(50);
                VS1003_CMD_Write(0x03,0x6696);
                _delay_ms(50);
                for (i=0; i<56; i++)
                {
                        buffer = RIFFHeader0;
                }
                for (i=52; i<504; i++)
                {
                        buffer = 0;
                }
                for (i=504; i<512; i++)
                {
                        buffer = RIFFHeader504[i-504];
                }

               
                if(f_open(&fdst, "test.wav", FA_CREATE_ALWAYS | FA_WRITE))
                {
                        LCD_TextOut(0, 0,"OPEN ER!");
                        while(1);
                }
                f_write(&fdst, buffer,512, &bw);
                j=0;
                p=buffer;
                REC_Scount=1;
                while (VS1003_CMD_Read(0x09)>>8);
                while(!(key1_up(1)))
                {
                         
                        if(VS1003_CMD_Read(0x09) >= 128)
                        {
                                for (i=0;i<128;i++)
                                {
                                        z = VS1003_CMD_Read(0x08);
                                        *p++ = (z>>8);
                                        *p++ = (z & 0xff);
                                }
                                j++;
                        }
                       
                        if(j==2)
                        {
                                j=0;
                                if(f_write(&fdst,buffer,512, &bw))
                                {
                                        LCD_TextOut(0, 1,"WR ER!");
                                        while(1);
                                }
                                REC_Scount++;
                                p=buffer;       
                        }
                }
               
                for (i=0; i<56; i++)
                {
                        buffer = RIFFHeader0;
                }
                for (i=52; i<504; i++)
                {
                        buffer = 0;
                }
                for (i=504; i<512; i++)
                {
                        buffer = RIFFHeader504[i-504];
                }
       
                SEC_CAL=(REC_Scount-1UL)*1010UL;
               
                buffer[48] = (SEC_CAL & 0xff);
                buffer[49] = ((SEC_CAL >>8) & 0xff);
                buffer[50] = ((SEC_CAL >>16) & 0xff);
                buffer[51] = ((SEC_CAL >>24) & 0xff);
               
               
                SEC_CAL = (REC_Scount*512UL)-8UL;
                buffer[4] = (SEC_CAL & 0xff);
                buffer[5] = ((SEC_CAL >>8) & 0xff);
                buffer[6] = ((SEC_CAL >>16) & 0xff);
                buffer[7] = ((SEC_CAL >>24) & 0xff);
               
               
                SEC_CAL = (REC_Scount-1)*512UL;
                buffer[508] = (SEC_CAL & 0xff);
                buffer[509] = ((SEC_CAL >>8) & 0xff);
                buffer[510] = ((SEC_CAL >>16) & 0xff);
                buffer[511] = ((SEC_CAL >>24) & 0xff);
                LCD_Num(0, 2,SEC_CAL);
               
                f_lseek(&fdst,0);
                f_write(&fdst, buffer,512, &bw);
                f_lseek(&fdst,fdst.fsize);
        //        VS1003_Init();
               
                f_close(&fdst);

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
头像被屏蔽

出0入0汤圆

发表于 2008-9-13 09:58:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2008-9-13 10:42:22 | 显示全部楼层
就是从你们网站邮购的
头像被屏蔽

出0入0汤圆

发表于 2008-9-13 10:43:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

出0入0汤圆

发表于 2008-9-13 10:44:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2008-9-13 11:23:09 | 显示全部楼层
好的
头像被屏蔽

出0入0汤圆

发表于 2008-9-13 11:24:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2010-5-29 22:34:04 | 显示全部楼层
mark,                              


armok 阿莫


能否发一份VS1003录音的程序参考下?

出0入0汤圆

发表于 2010-8-6 17:06:56 | 显示全部楼层
能否发一分录音的操作文档给我学习一下..

出0入0汤圆

发表于 2011-7-20 21:30:45 | 显示全部楼层
回复【楼主位】hywhywhyw98
-----------------------------------------------------------------------

请问,您这句里面的while(!(key1_up(1))) 中的这个key1_up(1)是什么意思?是自己定义的按键函数吗?

出0入0汤圆

发表于 2014-2-2 22:49:53 | 显示全部楼层
楼主能否给我答疑。
1、fmt chunk中 Data Block Size这一项为什么是256,而一般性的解释这一项为一次采样所占字节数。
2、fmt chunk中 额外增加的两个字节Samples per Block设置为505这里有什么用。
3、fact chunk 百度百科的解释是这一项是可有可无的,插入448个0可以解释为了使整个wave文件头占512个字节(恰好是256的倍数)。
     但为什么在 0xc8, 0x01, 0x00, 0x00(插入0的个数)后面4个字节的数据要另外计算,因为从这里开始的数据应该是fact chunk的正式数据。
4、为什么这里要填充一个fact项呢。

出0入0汤圆

发表于 2014-11-28 18:15:09 | 显示全部楼层
armok 发表于 2008-9-13 10:44
如果仍不能解决问题,可以联系我们的技术人员(邮购部网页底部能查到电话,MSN或QQ),可以给你一段我们的 ...

你好,我现在用VS1003做录音和放音,放MP3声音很动听,没有任何杂音,但放录音,就很多杂音,应该是录不好,背景杂音很大,并且录音有一点点失真,不知是芯片问题还是电路板问题,一开始以为是干拢而造成录音有噪,后来打几款板都一样,接着以为是芯片问题的,换了几个供应,效果都是一样,我看了你回复“CS1003录音噪音太大”的贴子,你提用你的VS1003没有一点背景杂音,不知是不是真的,如果是。真的想采购的你的芯片,期待你的回复。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 12:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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