搜索
bottom↓
回复: 6

请教:VS1003录音时,不能用文件系统把数据写进sd卡中

[复制链接]

出0入0汤圆

发表于 2012-7-29 17:26:24 | 显示全部楼层 |阅读模式
本帖最后由 jiaohaitao 于 2012-7-29 17:27 编辑

代码如下,用的振南的文件系统,模拟spi读写sd卡实现mp3播放。
下面的录音程序是比着1003的数据手册上的程序改的
调试的时候,刚开始用串口输出缓冲区的数据,正常。
一旦加上文件系统写数据到sd文件的函数,就会出错。串口也不再输出数据,感觉卡在了某个地方,这是要退出录音的话
令KEY!=1;还是卡在那,有时猛拍两下单片机会跳出来,,,,,郁闷死了。。。。

我感觉有问题的地方就是因为内存不足,在读缓冲区的时候,我就把缓冲字符改成了256b,而手册上是512b
而文件系统的写函数又会占据一定时间,导致。。。。。。下面就不知道了
有遇到这样问题的同学没???指导下,不胜感激!!!

//录音函数
void RecordAdpcm1003(void)
{
       

              unsigned int w = 0, idx = 0;
        SD_Reset();
        SD_Init();        
        UART_Send_Str("SD已就绪....\n");// Check and locate free space on disk                
       
                        //上面是sd初始化
   
if(FAT32_Open_File(&FileInfo,"\\recorder0.wav",0))
        {
                UART_Send_Str("打开文件成功\n");
        }
        else
        UART_Send_Str("打开文件失败\n");
//上面是打开要存入录音数据文件
        UART_Send_Str("下面开始录音.........\n");
                //寄存器设置,都是按数据手册来的         
        VS_Write_Reg(0x0b,0x14,0x14);               
        VS_Write_Reg(0x02,0,0);
        VS_Write_Reg(0x03,0x44,0x30);//(SCI_CLOCKF, 0x4430);  //* 2.0x 12.288MHz
        delay1(10);
        VS_Write_Reg(0x0c,0,12);//WriteMp3SpiReg(SCI_AICTRL0, 12); // Div -> 12=8kHz 8=12kHz 6=16kHz
        delay1(10);
        VS_Write_Reg(0x0d,0,0);//WriteMp3SpiReg(SCI_AICTRL1, 0); // Auto gain
        delay1(10);       
        //这里line_in=0
                 if (line_in)
                {
                        VS_Write_Reg(0x00,0x58,0x04);//WriteMp3SpiReg(SCI_MODE, 0x5804); //Normal SW reset + other bits
                }
        else
                  {
                        VS_Write_Reg(0x00,0x18,0x04);//WriteMp3SpiReg(SCI_MODE, 0x1804); // Normal SW reset + other bits
                }
               

             //写入wav文件的头
        for (idx=0; idx < sizeof(header); idx++)
        {  
                db[idx] = header[idx];
                UART_Send_Byte(header[idx]);//把wav的格式头输出到串口
        }
        FAT32_Add_Dat(&FileInfo,sizeof(header),header);//把格式头写到文件中,这个写文件是可以执行的,下面的就不行了
        idx=0;
  
        //key=1时录音
     while(KEY==1)
{

        do {
                        w=VS_Read_Reg(0x09);         //w = ReadMp3SpiReg(SCI_HDAT1);         
                                
           }
        while ((w < 128 || w >= 896));                           // wait until 512 bytes available *
       

            //下面是对256个字节的处理
        while(idx < 256)
        {
                w=VS_Read_Reg(0x08);//w = ReadMp3SpiReg(SCI_HDAT0);
                db[idx++] = w>>8;
                db[idx++] = w&0xFF;          
        }         
        UART_Send_Str(db);        //问题在这:如果不加下面的写数据到文件的函数,就会正常输出数据到串口
//        FAT32_Add_Dat(&FileInfo,256,db);//一旦加上这个函数,就只会写入上面第一装入db[]中的数据,,,,而后单片机就会卡住了       
        idx = 0;
               }
                                       
       

                VS_Reset();
        UART_Send_Str("录音结束.......\n");
}

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

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

 楼主| 发表于 2012-7-29 17:30:27 | 显示全部楼层
追问下。。。。是不是把vs1003录音的寄存器设置好后,,,,不论操不操作缓冲区的数据,,,插上耳机都会听到正在录得声音??

出0入0汤圆

 楼主| 发表于 2012-7-30 09:04:21 | 显示全部楼层
顶一下,谁有1003录音的代码,能否让小弟参考下撒。。。。。。

出0入0汤圆

 楼主| 发表于 2012-7-31 11:44:13 | 显示全部楼层
高手出来撒。。。。还有当要中断wma格式的文件时,怎么设置才能继续播放。。。。

出0入0汤圆

发表于 2012-11-7 17:08:49 | 显示全部楼层
我也正在做录音并播放这一块,但是我需要实时播放,不好整啊

出0入0汤圆

 楼主| 发表于 2012-11-7 22:36:42 | 显示全部楼层
木v风 发表于 2012-11-7 17:08
我也正在做录音并播放这一块,但是我需要实时播放,不好整啊

实时播放很简单,1003设置下寄存器,就是个话筒了,就是按照录音的设置,你试试就知道的,亲

出0入0汤圆

发表于 2012-11-8 08:58:24 | 显示全部楼层
jiaohaitao 发表于 2012-11-7 22:36
实时播放很简单,1003设置下寄存器,就是个话筒了,就是按照录音的设置,你试试就知道的,亲 ...

哦,好的,谢谢。我想直接用一个麦克风传感器,接stm32自带的ad装换成数字信号,不知道这样行不行
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-3 10:51

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

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