找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2300|回复: 0
打印 上一主题 下一主题
收起左侧

STM32+VS1053b不能播放音乐?"嘟嘟滴"两短一长的杂音

[复制链接]
跳转到指定楼层
楼主
各位大佬,请求援助啊。。
       最近在做一个MP3播放器,大概做法就是stm32f103vet6读取SD卡中的音频文件,然后在传入VS1053b进行解码播放。我用FATfs文件系统读取SD卡中的一个MP3文件,然后传入VS1053b进行解码,然后从耳机中听”嘟嘟滴“两短一长的杂音,其他就没有什么音乐了。
       有以下几个疑问
       1.VS1053b做过了RAM测试,返回值为0x83ff。正弦测试听到的声音听到的是“滴、滴、滴、滴、滴”类似于监测心跳的仪器发出的声音,不过频率是比较快的,我也不知道正弦算不算过了?如果说正弦过了的话,那是不是可能硬件上有问题。关于VS1053b硬件部分的排查有哪几点需要注意的有哪位仁兄之情的话,告知一下鄙人。谢谢
       2.我截取了几段重要的代码
        fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));//申请内存
        databuf=(u8*)mymalloc(SRAMIN,4096);        //开辟4096字节的内存区域
        f_open(fmp3,"0:/MUSIC/zywg.mp3",FA_READ);
        f_read(fmp3,databuf,4096,(UINT*)&br);
        FATfs从SD卡将zywg.mp3这个文件的音频数据存入databuf,通过属性我查看这个MP3文件有5,6M大小,databuf够存?音频数据难道很小吗?

       另附上原理图和代码


STM32单片机源码:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "24cxx.h"
  7. #include "sdio_sdcard.h"
  8. #include "malloc.h"
  9. #include "vs10xx.h"
  10. #include "exfuns.h"
  11. #include "mp3player.h"


  12. //要写入到24c16的字符串数组
  13. const u8 TEXT_Buffer[]={"WarShipSTM32 IIC TEST"};
  14. #define SIZE sizeof(TEXT_Buffer)        


  15. int main(void)
  16. {
  17. //        u8 datatemp[SIZE];

  18.         u8 res;
  19.         u16 temp;

  20. //        u8 key;  
  21.         
  22.         
  23.         
  24.         
  25. //        u32 total,free;
  26.         delay_init();            //延时函数初始化         
  27.         LED_Init();                          //初始化与LED连接的硬件接口
  28.         LCD_Init();
  29.         AT24CXX_Init();
  30.         exfuns_init();
  31.         my_mem_init(SRAMIN);                //初始化内部内存池
  32.         VS_Init();
  33.         
  34.         res=f_mount(fs[0],"0:",1);
  35.         if(res!=FR_OK)
  36.         {
  37.                 LCD_ShowString(10,10,100,100,16,"error");
  38.         }

  39.         
  40. //        while(AT24CXX_Check())//检测不到24c16        
  41. //        {
  42. //                LCD_ShowString(30,150,200,16,16,"24C16 Check Failed!");
  43. //                delay_ms(500);
  44. //                LCD_ShowString(30,150,200,16,16,"Please Check!      ");
  45. //                delay_ms(500);
  46. //                LED0=!LED0;//DS0闪烁
  47. //        }
  48.         
  49. //        while(SD_Init())//检测不到SD卡
  50. //        {
  51. //                LCD_ShowString(30,150,200,16,16,"SD Card Error!");
  52. //                delay_ms(500);                                       
  53. //                LCD_ShowString(30,150,200,16,16,"Please Check! ");
  54. //                delay_ms(500);
  55. //                LED0=!LED0;//DS0闪烁
  56. //        }
  57.         

  58.                
  59. //        
  60. //        while(exf_getfree("0:",&total,&free));
  61. //        LCD_ShowString(30,150,200,16,16,"FATFS OK!");         
  62. //        LCD_ShowString(30,170,200,16,16,"SD Total Size:     MB");         
  63. //        LCD_ShowString(30,190,200,16,16,"SD  Free Size:     MB");            
  64. //         LCD_ShowNum(30+8*14,170,total>>10,5,16);                                //显示SD卡总容量 MB
  65. //         LCD_ShowNum(30+8*14,190,free>>10,5,16);                                        //显示SD卡剩余容量 MB                           
  66.         
  67.         while(1)
  68.         {

  69. //                LED0=0;
  70. //                delay_ms(300);         //延时300ms
  71. //                LED0=1;
  72. //                delay_ms(300);        //延时300ms
  73. //                LCD_Fill(1,1,50,50,GREEN);


  74.                
  75. //                p=mymalloc(sramx,16);
  76. //                LCD_ShowNum(30+96,190,my_mem_perused(SRAMIN),3,16);//显示内部内存使用率
  77.                

  78. //                VS_HD_Reset();
  79. //    VS_WR_Cmd(SPI_VOL,0X2020);
  80. //                temp=VS_RD_Reg(SPI_VOL);
  81.                
  82.                
  83.                 temp=VS_Ram_Test();
  84.                 LCD_ShowNum(30,100,temp,7,16);

  85.                 VS_Sine_Test();

  86. //                mp3_play();
  87.                         

  88. //                LCD_ShowNum(30,100,temp,5,16);
  89.                
  90.         }
  91. }
复制代码

全部资料51hei下载地址:
基于是stm32的MP3播放器code.7z (1.26 MB, 下载次数: 25)
MP3播放器原理图&PCB.rar (2.7 MB, 下载次数: 20)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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