OpenEdv-开源电子网

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

关于STM32单片机录音的问题

[复制链接]

34

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2014-5-27
在线时间
7 小时
发表于 2014-5-27 09:35:19 | 显示全部楼层 |阅读模式
5金钱

各位高手,小弟正在基于STM32单片机开发音频采集应用,运行程序后,发现存储的音频文件无内容。调试后发现

调用VS1003_ReadReg(SPI_HDAT1)读出的值不在256896之间,无法执行后续的操作。请教其中的原因。以下是主函数的代码。谢谢!

u16 w;

  FIL* f_rec=0;

  __WaveHeader *wavhead=0;

  u8 *recbuf;

  u8 *pname=0;

  u16 idx=0;

  u32 sectorsize=0;

 

  RCC_Configuration();              //设置内部时钟及外设时钟使能

  if (SysTick_Config(720))          //时钟节拍中断时10us一次  用于定时

  {

    /* Capture error */

    while (1);

  }    

  NVIC_Configuration();                 //中断源配置 

                           //xRST =1  

 

  Usart1_Init();                    //串口1初始化

  SPI_VS1003_Init();               //VS1003 初始化   

 

 

  Delay_us(10000);                 //延时100ms

  SD_TEST();                         //SD卡测试函数

 

  disk_initialize(0);                           //fatfs可以管理多个介质的分区所以把物理存储介质SST25VF016B标示为0相当于磁盘编号

  //VS1003_start();/*启动VS1003*/

 

  f_mount(0, &fs);                              //将文件系统设置到0

 

  f_rec = (FIL *)malloc (sizeof(FIL));         //开辟FIL字节的内存区域

  if (f_rec == NULL)

  {

      USART_OUT(USART1,"\n f_rec malloc error \n");

  }

 

  wavhead = (__WaveHeader*)malloc (sizeof(__WaveHeader));/*分配WAV音频头文件存储空间*/

  if (wavhead == NULL)

  {

      USART_OUT(USART1,"\n wavhead malloc error \n");

  }   

 

  /*分配接收缓冲区内存空间*/

  recbuf = malloc (512);  

  if(recbuf==NULL)

  {

      USART_OUT(USART1,"\n recbuf malloc error \n");

  }

 

  /*分配pname存储空间*/

  pname = malloc(30);                  //申请30个字节内存,类似"0:RECORDER/REC00001.wav"

  if(pname==NULL)

  {

      USART_OUT(USART1,"\n pname malloc error \n");

  }

 

  VS1003_start();/*启动VS1003*/   

 

  while (VS1003_ReadReg(SPI_HDAT1)>>8);/*清空缓冲区*/

  pname[0]=0;                          //pname没有任何文件名  

 

  /*开始录音*/

  recoder_wav_init(wavhead);               //初始化wav数据

 

  /*创建音频文件*/

  //if (f_open(&fsrc , "0:/audio.wav" , FA_READ | FA_WRITE | FA_CREATE_NEW) != FR_OK)

  if (f_open(f_rec , "0:/audio5.wav" , FA_CREATE_ALWAYS | FA_WRITE)!= FR_OK)

  {

    USART_OUT(USART1,"\n open error \n");

  } 

 

  USART_OUT(USART1,"\n open success \n");

 

  /*将音频头写入文件*/

  if (f_write(f_rec , (const void*)wavhead , sizeof(__WaveHeader) , &bw) != FR_OK)

  {

     USART_OUT(USART1,"\n write error \n");

  }

 

  USART_OUT(USART1,"\n write success \n");

 

  if (f_sync (f_rec) != FR_OK)

  {

      USART_OUT(USART1,"\n sync error \n");

  }

 

  while (1)

  {

      w=VS1003_ReadReg(SPI_HDAT1);

      USART_OUT(USART1,"\n w = %x\n" , w);

     if((w>=256)&&(w<896))

      {

         USART_OUT(USART1,"\n enter if((w>=256)&&(w<896)) \n");

          idx=0;                   

          while(idx<512)   //一次读取512字节

          {   

              w=VS1003_ReadReg(SPI_HDAT0);                    

             recbuf[idx++]=w&0XFF;

             recbuf[idx++]=w>>8;

          }                 

         res=f_write(f_rec ,recbuf,512,&bw);//写入文件

         if(res)

         {

             printf("err:%d\r\n",res);

             printf("bw:%d\r\n",bw);

             break;//写入出错.  

         }

 

         if (f_sync (f_rec) != FR_OK)

          {

              USART_OUT(USART1,"\n sync error \n");

          }

         sectorsize++;//扇区数增加1,约为32ms  

     }

  }       

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-27 23:36:55 | 显示全部楼层
论坛有网友发过vs1003的录音代码,你搜索下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

34

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2014-5-27
在线时间
7 小时
 楼主| 发表于 2014-6-9 10:42:45 | 显示全部楼层
好的,我搜索一下,谢谢!
回复

使用道具 举报

34

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2014-5-27
在线时间
7 小时
 楼主| 发表于 2014-6-9 10:43:32 | 显示全部楼层
好的,我搜索一下,谢谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 15:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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