各位大佬,請求援助啊。。
最近在做一個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單片機源碼:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "24cxx.h"
- #include "sdio_sdcard.h"
- #include "malloc.h"
- #include "vs10xx.h"
- #include "exfuns.h"
- #include "mp3player.h"
- //要寫入到24c16的字符串數組
- const u8 TEXT_Buffer[]={"WarShipSTM32 IIC TEST"};
- #define SIZE sizeof(TEXT_Buffer)
- int main(void)
- {
- // u8 datatemp[SIZE];
- u8 res;
- u16 temp;
- // u8 key;
-
-
-
-
- // u32 total,free;
- delay_init(); //延時函數初始化
- LED_Init(); //初始化與LED連接的硬件接口
- LCD_Init();
- AT24CXX_Init();
- exfuns_init();
- my_mem_init(SRAMIN); //初始化內部內存池
- VS_Init();
-
- res=f_mount(fs[0],"0:",1);
- if(res!=FR_OK)
- {
- LCD_ShowString(10,10,100,100,16,"error");
- }
-
-
- // while(AT24CXX_Check())//檢測不到24c16
- // {
- // LCD_ShowString(30,150,200,16,16,"24C16 Check Failed!");
- // delay_ms(500);
- // LCD_ShowString(30,150,200,16,16,"Please Check! ");
- // delay_ms(500);
- // LED0=!LED0;//DS0閃爍
- // }
-
- // while(SD_Init())//檢測不到SD卡
- // {
- // LCD_ShowString(30,150,200,16,16,"SD Card Error!");
- // delay_ms(500);
- // LCD_ShowString(30,150,200,16,16,"Please Check! ");
- // delay_ms(500);
- // LED0=!LED0;//DS0閃爍
- // }
-
-
- //
- // while(exf_getfree("0:",&total,&free));
- // LCD_ShowString(30,150,200,16,16,"FATFS OK!");
- // LCD_ShowString(30,170,200,16,16,"SD Total Size: MB");
- // LCD_ShowString(30,190,200,16,16,"SD Free Size: MB");
- // LCD_ShowNum(30+8*14,170,total>>10,5,16); //顯示SD卡總容量 MB
- // LCD_ShowNum(30+8*14,190,free>>10,5,16); //顯示SD卡剩余容量 MB
-
- while(1)
- {
- // LED0=0;
- // delay_ms(300); //延時300ms
- // LED0=1;
- // delay_ms(300); //延時300ms
- // LCD_Fill(1,1,50,50,GREEN);
-
- // p=mymalloc(sramx,16);
- // LCD_ShowNum(30+96,190,my_mem_perused(SRAMIN),3,16);//顯示內部內存使用率
-
- // VS_HD_Reset();
- // VS_WR_Cmd(SPI_VOL,0X2020);
- // temp=VS_RD_Reg(SPI_VOL);
-
-
- temp=VS_Ram_Test();
- LCD_ShowNum(30,100,temp,7,16);
- VS_Sine_Test();
- // mp3_play();
-
- // LCD_ShowNum(30,100,temp,5,16);
-
- }
- }
復制代碼
全部資料51hei下載地址:
基于是stm32的MP3播放器code.7z
(1.26 MB, 下載次數: 25)
2019-1-19 16:34 上傳
點擊文件名下載附件
MP3播放器原理圖&PCB.rar
(2.7 MB, 下載次數: 20)
2019-1-19 16:00 上傳
點擊文件名下載附件
|