发新帖本帖赏金 30.00元(功能说明)我要提问
返回列表
打印
[APM32F4]

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

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


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




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

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

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

APM32F407.rar

11.22 MB

使用特权

评论回复

打赏榜单

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

评论
forgot 2023-7-28 08:56 回复TA
非常棒 
沙发
luobeihai| | 2023-7-27 13:51 | 只看该作者
APM32有RT-Thread的sdio驱动啦,试过 sdio + fatfs ,测试正常运行。

使用特权

评论回复
发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

1277

帖子

10

粉丝