Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ART-Pi
SDIO总线
wavplayer
Art-Pi学习笔记9:如何使用art-pi的多媒体扩展板播放TF卡中的音乐文件
发布于 2021-06-24 15:32:03 浏览:2546
订阅该版
开发板 art-pi + 多媒体扩展版 开发环境 rtthread studio 内核版本 4.0.3 参考贴子 论坛热贴 | RT-Thread音频驱动开发(一)_FILLMOREad的博客-CSDN博客 https://blog.csdn.net/FILLMOREad/article/details/103470925 RT-Thread Studio快速配置AB32进行音频输出_JeckXu的博客-CSDN博客 https://blog.csdn.net/qq_45396672/article/details/117525626 多媒体扩展屏到手之后玩了一下显示和触摸,然后加上GUI小玩了一下就被打入冷宫一直吃灰了。近期由于项目需要做和音频播放相关的应用,才想起来多媒体扩展屏的音频功能一直还没玩过,赶紧拿出来装上,开启挖坑填坑之旅。 首先是打开rtthread-settings,配置打开多媒体扩展屏的audio功能宏定义,暂时不勾选MP3功能。可以看到,勾选了audio功能之后,会自动选中I2C3,因为多媒体扩展屏上使用的WM8988是通过I2C控制的。 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/93c7fd8451edd6c8e790cb252b5a384e.png.webp) ![image.png](https://oss-club.rt-thread.org/uploads/20210624/ca9b17845c23a5c0f80dbb074de62459.png.webp) 保存退出,编译通过,然后烧录到板子上,使用调试终端指令list_device查看,就可以看到sound0设备了 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/b907deefef5ae98a89a20d059d6e0c2b.png) 具体看看项目中添加了什么文件,可以看到多了一个audio的目录,目录下面放了drv_sound设备驱动文件和wm8988芯片驱动文件 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/80850a43b58af9bbbbc34e32a1122112.png) 其中wm8988.c文件和wm8988.h文件主要是提供了芯片wm8988的寄存器和一些控制指令的宏定义,以及寄存器的读写代码。其中的芯片初始化void wm8988_init(struct rt_i2c_bus_device *dev)函数将会在drv_sound.c文件中被调用。 真正的注册和初始化sound0设备的代码是在drv_sound.c文件中。 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/1db689a8925e55b991d98966b550025e.png) 前面已经提到了wm8988的控制信号接口使用的是I2C,而音频码流信号使用的是PCM接口,也是需要对应的硬件初始化的。同样是在drv_sound.c文件中 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/3fcf4ed9f0c428005d3b2fc80971cadc.png.webp) ![image.png](https://oss-club.rt-thread.org/uploads/20210624/217d8c949b2f5b49911d4378899ddc35.png.webp) 这里顺带说明一下什么是SAI接口,参考网上大佬的贴子说明 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/a59f9d5495d66d7935667021645b1add.png.webp) 硬件和设备是初始化好了,下面就来试试怎么发出声音。 由于这里要播放的音乐文件是放在SD卡的,因此有必要打开SD和文件系统,配置如下: 在组件里面配置“虚拟文件系统” ![image.png](https://oss-club.rt-thread.org/uploads/20210624/3fa9b627e238a4f9de428df62b7a3eb3.png.webp) 以及SD/MMC设备驱动程序 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/6830f7dd6784f0f77183fdbe138727ed.png) 在硬件里面配置总线 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/5af0b7572494220aaaea10b493f53b80.png.webp) 之后编译通过,并下载到板子上,可以从终端打印查看到设备sd0,以及插入的卡信息,以及挂载点 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/86c492333ae6c70739610936a11b4be7.png) 这里参考了大佬的贴子,使用wavplayer来测试。打开rtthread settings,添加软件包 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/d13f62007cfc4a8280fd4e3292e1e037.png) 其中,wavplayer软件包依赖于optparse软件包,添加了wavplayer软件包之后会自动添加optparse软件包。optparse是WavPlay软件包依赖,因此optparse软件包在 wavplayer 勾选后,自动选择。optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数,所以只要配置WavPlay软件包就行 这里对于wavplayer软件包的配置如下图所示 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/26964f80d494bde9385fb80c602f6887.png) 根据软件包的说明文件,软件包提供cmd调试程序,方便调试使用。 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/b376bdc95430fc34b737c08565ba19be.png.webp) 这里我已经事先在sdcard中放入了测试用的wav文件。 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/595edaec5611ad4edee32ee1e59f265e.png) 只要在调试终端敲入播放指令即可 ![image.png](https://oss-club.rt-thread.org/uploads/20210624/9ba7cd69d2e5c972d8cbb64969dfdfc4.png) 播放完成会推出消息,如果想要提前结束,则敲入停止播放指令即可。经过尝试,wav的格式如果不对是不能播放的,mp3文件也是不能播放的。 **相关文章:** [Art-Pi学习笔记10:优化多媒体扩展板的音频驱动添加录音功能](https://club.rt-thread.org/ask/article/2872.html) [Art-Pi学习笔记9:如何使用art-pi的多媒体扩展板播放TF卡中的音乐文件](https://club.rt-thread.org/ask/article/2849.html) [Art-Pi学习笔记9:如何为Art-pi的内部flash设置读保护](https://club.rt-thread.org/ask/article/2568.html) [Art_Pi学习笔记8:使用AHT10温湿度模块](https://club.rt-thread.org/ask/article/2543.html) [Art_Pi学习笔记7:自己添加硬件定时器设备HWTIMER](https://club.rt-thread.org/ask/article/2492.html) [Art_Pi学习笔记6:驱动PWM输出](https://club.rt-thread.org/ask/article/2483.html) [Art-Pi学习笔记5_4:在littlevgl中显示二维码](https://club.rt-thread.org/ask/article/2698.html) [Art-Pi学习笔记5_3:在littlevgl软件包中显示中文字体](https://club.rt-thread.org/ask/article/2695.html) [Art_Pi学习笔记5.2:LVGL模拟器安装在VS2019上的避坑指南](https://club.rt-thread.org/ask/article/2470.html) [Art_Pi学习笔记5.1:优化LVGL软件包提高刷屏的速度](https://club.rt-thread.org/ask/article/2464.html) [Art_Pi学习笔记5:移植LittleVGL2RTT软件包驱动多媒体扩展屏](https://club.rt-thread.org/ask/article/2434.html) [Art_Pi学习笔记4:驱动多媒体扩展版的LCD和触摸功能](https://club.rt-thread.org/ask/article/2436.html) [Art_Pi学习笔记3:学习驱动wifi模块AP6212](https://club.rt-thread.org/ask/article/2429.html) [Art_Pi学习笔记2:驱动片外SPI_FLASH_W25Q128](https://club.rt-thread.org/ask/article/2423.html) [Art-Pi学习笔记1:驱动SDIO和USB设备做TF读卡器](https://club.rt-thread.org/ask/article/2417.html)
5
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
adaphoto
这家伙很懒,什么也没写!
文章
25
回答
44
被采纳
5
关注TA
发私信
相关文章
1
代码分享,stm32f407的sdio驱动。
2
求个在STM32F103 RTT上使用SDIO接口的例子
3
是否能增加一个 SDIO AP61xx 的驱动呢
4
sdio和fsmc驱动lcd冲突
5
发现了sdio_unregister_driver里的一个bug
6
用sdio框架驱动过w8801(wifi模块)的坛友请进(已解决)
7
关于rt-thread系统sdio驱动框架使用
8
问题请教,关于在rt-thread中调试RT1052中调试sdio wifi模块
9
【文件系统学习】+海中陆地+RT-Thread文件系统学习挂载SDIO...
10
sdio驱动是怎么使用的?也没有文档和例程啊
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部