找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2793|回復(fù): 0
收起左側(cè)

STM32+VS1053b不能播放音樂(lè)?"嘟嘟滴"兩短一長(zhǎng)的雜音

[復(fù)制鏈接]
ID:149948 發(fā)表于 2019-1-19 16:00 | 顯示全部樓層 |閱讀模式
各位大佬,請(qǐng)求援助啊。。
       最近在做一個(gè)MP3播放器,大概做法就是stm32f103vet6讀取SD卡中的音頻文件,然后在傳入VS1053b進(jìn)行解碼播放。我用FATfs文件系統(tǒng)讀取SD卡中的一個(gè)MP3文件,然后傳入VS1053b進(jìn)行解碼,然后從耳機(jī)中聽(tīng)”嘟嘟滴“兩短一長(zhǎng)的雜音,其他就沒(méi)有什么音樂(lè)了。
       有以下幾個(gè)疑問(wèn)
       1.VS1053b做過(guò)了RAM測(cè)試,返回值為0x83ff。正弦測(cè)試聽(tīng)到的聲音聽(tīng)到的是“滴、滴、滴、滴、滴”類(lèi)似于監(jiān)測(cè)心跳的儀器發(fā)出的聲音,不過(guò)頻率是比較快的,我也不知道正弦算不算過(guò)了?如果說(shuō)正弦過(guò)了的話,那是不是可能硬件上有問(wèn)題。關(guān)于VS1053b硬件部分的排查有哪幾點(diǎn)需要注意的有哪位仁兄之情的話,告知一下鄙人。謝謝
       2.我截取了幾段重要的代碼
        fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));//申請(qǐng)內(nèi)存
        databuf=(u8*)mymalloc(SRAMIN,4096);        //開(kāi)辟4096字節(jié)的內(nèi)存區(qū)域
        f_open(fmp3,"0:/MUSIC/zywg.mp3",FA_READ);
        f_read(fmp3,databuf,4096,(UINT*)&br);
        FATfs從SD卡將zywg.mp3這個(gè)文件的音頻數(shù)據(jù)存入databuf,通過(guò)屬性我查看這個(gè)MP3文件有5,6M大小,databuf夠存?音頻數(shù)據(jù)難道很小嗎?

       另附上原理圖和代碼
0.jpg 0.png 0.png

STM32單片機(jī)源碼:
  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. //要寫(xiě)入到24c16的字符串?dāng)?shù)組
  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();            //延時(shí)函數(shù)初始化         
  27.         LED_Init();                          //初始化與LED連接的硬件接口
  28.         LCD_Init();
  29.         AT24CXX_Init();
  30.         exfuns_init();
  31.         my_mem_init(SRAMIN);                //初始化內(nèi)部?jī)?nèi)存池
  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())//檢測(cè)不到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())//檢測(cè)不到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卡總?cè)萘?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);         //延時(shí)300ms
  71. //                LED0=1;
  72. //                delay_ms(300);        //延時(shí)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);//顯示內(nèi)部?jī)?nèi)存使用率
  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. }
復(fù)制代碼

全部資料51hei下載地址:
基于是stm32的MP3播放器code.7z (1.26 MB, 下載次數(shù): 25)
MP3播放器原理圖&PCB.rar (2.7 MB, 下載次數(shù): 20)

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表