返回列表 发新帖我要提问本帖赏金: 30.00元(功能说明)

[APM32F4] 【极海APM32F4xx Tiny】RT-Thread SDIO+Fatfs, Helix MP3解码I2S输出

[复制链接]
 楼主| qiangtech 发表于 2023-7-21 11:44 | 显示全部楼层 |阅读模式
RT-Thread SDIO+Fatfs, Helix MP3解码I2S输出
收到板子有几个星期了,研究了一下用这个板子来播放MP3.水平有限,所以花了一些时间。
RT-Thread Studio已经是支持了GEEHY的407系列,所以可以直接在RT-Thread Studio中建立工程:
05.png
等建好模板工程后,先把板子上的灯亮起来,顺便测试一下编译,GEEHY LINK的下载和调试。
04.png
还好一切顺利,板子上的LED顺利闪动起来了。可以进行下一步了。
增加SDIO驱动,我没有使用Studio内的SDIO驱动包,从GEEHY SDK的例程里找了个SDIO的驱动文件拷进来的.bsp_sdio.c和bsp_sdio.h,放进驱动里。
06.png
这两个文件里已经完成了对SDIO的初始化,中断处理和块读写等操作函数,可以满足移值Fatfs的需要了。
07.png
这两个文件中,还定义有硬件GPIO引脚接口,按照定义,把GPIO连接到SD卡模块上。
10.png

11.png

接上SD卡模块后:
08.jpg
09.jpg
因为GEEHY LINK还没有复合CDC设备,不能够与目标芯片的串口通信,所以还准备了一个USB转串口芯片连接到UART2 引脚 。这样,硬件准备就绪了。
增加FATFS,也没有使用STUDIO的ELM FATFS,拷了一个FATFS源文件到项目下面来。
12.png
完善下diskio.c,与bsp_sdio.c连接起来。  
14.png
15.png

16.png

17.png

18.png

完成后,就可以用f_mount函数测试一下了:
13.png
下一步,增加HELIX MP3解码包,这个可以直接用STUDIO自带的软件包,在RT-Thread Settings里面填加进去:
19.png
加入HELIX软件包后,编译发现有四个警告。四个变量定义了未使用。
03.png
接下来就是读取SD卡的MP3文件解码了, 这个步骤参考了原子哥的例程来做。

先建一个MP3播放的线程,并加入APP自启动列表中。
20.png
在线程中打开根目录,扫描根目录下的MP3文件,并记录文件名到列表中。
21.png
在循环中,按顺序播放MP3.
22.png
播放时先初始化I2S  
23.png

播放时MP3数据不断放入I2S的BUFFER.
24.png
这些完成以后,测试一下。能够工作了,但是解码播放过程中,经常出现数据错误,或者播放到一半就出错返回。在网上查了一下,最终把SDIO的数据线宽改成单线的就解决了。
25.png
02.png
播放时I2S波形。因为手头上没有I2S的音频模块,所以还不能测试下确实是否能放出声音来。
01.png
总结,终于磕磕绊绊的做成了,基本达到了播放SD MP3文件,I2S输出的目的。但是还是有一些细节没顾上,比如播放按键控制等。后面有空再慢慢来完善。附件把Studio的工程附上,水平有限,仅供参考。

APM32F407.rar

11.22 MB, 下载次数: 50

打赏榜单

Gfan 打赏了 30.00 元 2023-08-17
理由:APM32F407IG Tiny Board精选测评

评论

非常棒  发表于 2023-7-28 08:56
luobeihai 发表于 2023-7-27 13:51 | 显示全部楼层
APM32有RT-Thread的sdio驱动啦,试过 sdio + fatfs ,测试正常运行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

80

主题

1430

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部