STM32
直播中

张昂笙

9年用户 1109经验值
私信 关注
[问答]

用stm32f103vet6读取SD卡中的音频文件遇到的疑问求解

各位大佬,请求援助啊。。
       最近在做一个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够存?音频数据难道很小吗?
      

回帖(1)

杨福林

2024-5-10 18:01:39
您好!看起来您在使用STM32F103VET6和VS1053b制作MP3播放器时遇到了一些问题。我会尽力帮助您解决这些问题。首先,我们来分析一下您提到的问题和可能的原因。

1. VS1053b RAM测试返回值为0x83ff:这个值表示VS1053b的RAM测试通过,说明硬件方面应该没有太大问题。

2. 正弦波测试听到的声音:您提到在进行正弦波测试时,听到的声音类似于监测心跳的仪器发出的声音。这可能是因为VS1053b的输出信号频率较高,导致耳机无法很好地还原声音。您可以尝试调整VS1053b的输出设置,以获得更好的音质。

针对您的问题,我建议您按照以下步骤进行排查和解决:

1. 确保SD卡中的MP3文件是有效的,可以在其他设备上正常播放。

2. 检查STM32F103VET6的SPI通信是否正确设置。确保SPI时钟速率、数据位、CPOL和CPHA等参数与VS1053b兼容。

3. 确认STM32F103VET6正确地读取了SD卡中的MP3文件。您可以使用串口打印出读取到的数据,以确保数据正确。

4. 检查VS1053b的配置。确保您已经正确设置了SPI接口、DREQ引脚、SCS引脚等。同时,确保VS1053b的时钟设置正确。

5. 检查VS1053b的播放流程。确保您已经按照VS1053b的数据手册进行了正确的初始化、播放控制和数据处理。

6. 如果以上步骤都没有问题,您可以尝试使用其他音频格式(如WAV)进行测试,以排除MP3文件本身的问题。

7. 如果问题仍然存在,您可以考虑使用STM32的官方固件库(如STM32CubeMX)进行开发,以确保底层驱动的稳定性。

希望以上建议对您有所帮助。如果您在排查过程中遇到任何问题,欢迎随时提问。祝您的项目顺利进行!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分