OpenEdv-开源电子网

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

vs1053录音问题

[复制链接]

23

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-3-15
在线时间
13 小时
发表于 2012-11-6 11:47:35 | 显示全部楼层 |阅读模式

使用vs1053录音,录出来的声音好像快放一样,声音比正常要快很多,设置什么的都对,测试也是对的,就是不知道加上操作系统哪里出问题了
---------------------------
/*******************************************
函数名称:u8 rec_pre_input(void)
功能描述:话筒预录导入
全局变量:无
参数说明:无
返回值:  无
说明:
********************************************/
u8 rec_pre_input(void)
{
 u16 i;
 u32 rec_mic_num = 0;
 u32 offset;
 u8 ptt_flag = 0;
 u8 temp;//段数
 u16 count, start;//读取文件的扇区数量
 u16 vs_temp;
 u16 rec_start;
 OS_ENTER_CRITICAL();
 NAND_ReadSector(0, nand_buf);
 temp = nand_buf[PRE_NUM_ADD + 3];//该写入的段数
 start = ((u16)nand_buf[PRE_START_ADD + ((temp - 1) * 16) + 2]) << 8;//读取上一段起始地址
 start = start | (u16)nand_buf[PRE_START_ADD + ((temp - 1) * 16) + 3];
 count = ((u16)nand_buf[PRE_START_ADD + ((temp - 1) * 16) + 6]) << 8;//读取上一段扇区总数
 count = count | (u16)nand_buf[PRE_START_ADD + ((temp - 1) * 16) + 7];
 rec_start = count + start;//新段的开始地址                 
 while(1)
 {  
  if(PTT_OPEN == 0)
  { 
   if(ptt_flag == 0)
   {
    recoder_mode_mic();//开启录音模式 
   }
   ptt_flag = 1;
   vs_temp = VS_RD_Reg(VS1003_HDAT1); 
   if((vs_temp >= 256) && (vs_temp < 896))
   {
    for(i = 0; i < 256; i++)
    {
     vs_temp = VS_RD_Reg(VS1003_HDAT0);
     nand_buf[i * 2] = vs_temp >> 8;
     nand_buf[i * 2 + 1] = vs_temp;   
    }
    NAND_WriteSector((pre_count + rec_start + 1), nand_buf);
    while(NAND_RB == 0);//等待忙管脚变高
       pre_count++;
   }         
   if(pre_count > 25599)
   {
    for(i = 201; i < 300; i++)
    {
     NAND_EraseBlock(i);
    }
    NAND_ReadSector(0, nand_buf);//读取第0扇区
 
       rec_mic_num = (nand_buf[MIC_NUM_ADD] << 24);//读取话筒录音计数值
    rec_mic_num = rec_mic_num | (nand_buf[MIC_NUM_ADD + 1] << 16);
    rec_mic_num = rec_mic_num | (nand_buf[MIC_NUM_ADD + 2] << 8);
    rec_mic_num = rec_mic_num | nand_buf[MIC_NUM_ADD + 3];
   
     if(rec_mic_num >= 0x3fec)
    {
     rec_mic_num = 0;
    }
    offset = MIC_START_ADD + (rec_mic_num * 16);
    offset = offset / 512;
    for(i = 0; i < offset; i++)
    {
     NAND_ReadSector(i, nand_buf);
     NAND_WriteSector(i + 256, nand_buf); 
    }
 
    NAND_ReadSector(0, nand_buf);//读第一块第0扇区
    NAND_EraseBlock(0);//擦除第0块
    nand_buf[PRE_NUM_ADD + 3] = 0;
    nand_buf[PRE_START_ADD + 2] = 0xC9;
    nand_buf[PRE_START_ADD + 3] = 0;
    nand_buf[PRE_START_ADD + 6] = 0;
    nand_buf[PRE_START_ADD + 7] = 0;
    NAND_WriteSector(0, nand_buf);
    for(i = 1; i < offset; i++)
    {
     NAND_ReadSector(i + 256, nand_buf);
     NAND_WriteSector(i, nand_buf);
    }
    OS_EXIT_CRITICAL(); 
    return 99;
   }    
  }
  if((ptt_flag == 1) && (PTT_OPEN == 1))
  {
   ptt_flag = 0;
   recoder_header_info(rec_start, pre_count);
   NAND_ReadSector(0, nand_buf);//读取第0扇区

      rec_mic_num = (nand_buf[MIC_NUM_ADD] << 24);//读取话筒录音计数值
   rec_mic_num = rec_mic_num | (nand_buf[MIC_NUM_ADD + 1] << 16);
   rec_mic_num = rec_mic_num | (nand_buf[MIC_NUM_ADD + 2] << 8);
   rec_mic_num = rec_mic_num | nand_buf[MIC_NUM_ADD + 3];
       
   if(rec_mic_num >= 0x3fec)
   {
    rec_mic_num = 0;
   } 
   offset = MIC_START_ADD + (rec_mic_num * 16);
   offset = offset / 512;
   for(i = 0; i < offset; i++)
   {
    NAND_ReadSector(i, nand_buf);
    NAND_WriteSector(i + 256, nand_buf); 
   }

   NAND_ReadSector(0, nand_buf);//读第一块第0扇区
   NAND_EraseBlock(0);//擦除第0块      
   nand_buf[PRE_NUM_ADD + 3] = temp;
      nand_buf[PRE_START_ADD + (temp * 16) + 2] = (u8)((rec_start >> 8) & 0xff);
   nand_buf[PRE_START_ADD + (temp * 16) + 3] = (u8)(rec_start & 0xff);
   nand_buf[PRE_START_ADD + (temp * 16) + 6] = (u8)(((pre_count + 1) >> 8) & 0xff);
   nand_buf[PRE_START_ADD + (temp * 16) + 7] = (u8)((pre_count + 1) & 0xff);
   NAND_WriteSector(0, nand_buf);
   for(i = 1; i < offset; i++)
   {
    NAND_ReadSector(i + 256, nand_buf);
    NAND_WriteSector(i, nand_buf);
   }
   OS_EXIT_CRITICAL(); 
   return 99;  
   }
 }
}

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

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-11-6 12:51:28 | 显示全部楼层
你这注释貌似不是中文.....
回复 支持 反对

使用道具 举报

22

主题

436

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-8-6
在线时间
2 小时
发表于 2012-11-6 12:56:15 | 显示全部楼层
回复【2楼】lsj9383:
---------------------------------
dui  a
往事随风!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-11-6 17:41:16 | 显示全部楼层
你录音保存的时候设置不对吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-4-27
在线时间
0 小时
发表于 2012-11-9 11:35:58 | 显示全部楼层
检查快速播放playspeed,增大bitrate 试试  
VLSI-代理.我这里提供,开发板,样片,技术资料.15361638451
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-3-1 05:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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