各位大佬,请求援助啊。。
最近在做一个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)
MP3播放器原理图&PCB.rar
(2.7 MB, 下载次数: 20)
|