搜索

124

主题

131

帖子

599

积分

网站编辑

Rank: 8Rank: 8

积分
599
发表于 2021-6-23 17:20:15 10577 浏览 0 回复

iMX6开发板QT系统移植tinyplay

配套资料在网盘资料的“iTOP-i.MX6开发板资料汇总(不含光盘资料)\08_iTOP-i.MX6开发板Linux系统开发资料\13-Linux系统移植tinyplay\iTOP-iMX6-Linux系统-声卡移植tinyplay.zip
tinyalsa 是 Google 在 Android 4.0 之后推的基于 alsa 内核的用户层音频接口。tinyalsa 提供的头文件是"asoundlib.h",提供最基础的 pcm 和 mixer 操作。
tinyalsa 的实现文件为 pcm.c(实现 pcm api)和 mixer.c(实现 mixer api)。在其中有四个小工具它们分别是:
tinypcminfo:tinypcminfo.c,查看 pcm 设备能力;
tinyplay:tinyplay.c,使用 pcm 设备播放 wav 格式的音频文件;
tinycap:tinycap.c,使用 pcm 设备采集 pcm 格式的码流,并保存为 wav 格式的文件;
tinymix:tinymix.c,对 pcm 设备的控制,包括音量调节、设备切换。
这四个工具使用时可以先使用 tinypcminfo 查看 pcm 设备的能力,以防我们使用其他三个命令时使用了不合理的配置会出现 parameter invalid 的错误。
本文档适用于最小 Linux 系统以及 Qt 系统。
1 源码编译
查看本次提供的压缩包内容,分别为指导文档,测试音乐以及源码文件夹,如下图所示。
将提供的压缩包中的文件夹 tinyalsa 拷贝到 Ubunut 的工作目录,如图。
本次编译环境为“arm-2009q3”,如下图所示。
进入到 ubuntu 上的 tinyalsa 文件夹,在当前目录下输入命令“make”,自动生成 4 个 可执行文件“tinycap、tinymix、tinypcminfo、tinyplay”。
编译完成。
2 耳机和喇叭测试
本次测试是在 iTOP-iMX6Q 开发板上进行,耳机,麦克风的连接如图。喇叭左声道是 J5,右声道是 J6。
2.1 测试环境和 tinymix
将上一步生成的 4 个二进制可执行文件和我们提供的测试音乐 1.wav 文件拷贝到 U 盘,插入到运行最小 Linux 系统的 iMX6Q 开发板上,挂载 U 盘使用命令 “mount /dev/sda1 /mnt/disk”,如下图所示。
如果在 qt 系统上,那么先需要使用命令“mknod /dev/sda1 b 8 1”创建节点,再使用命令“mount /dev/sda1 /mnt/disk”挂载 U 盘,如下图所示。
然后使用命令“cp /mnt/disk/tiny* /bin”将 U 盘中的四个可执行文件拷贝到“/bin”目录下,如下图所示。
接着在控制台输入“tinymix”命令,如下图所示,可以看到全部设置。
第一行显示“Number of controls: 52”表明有 52 条 tinymix 混音命令。
第二行是介绍 0-52 条命令的表格; 第一列 ctl 表示编号。使用对应命令的时候如果想用第 n 条命令,则 tinymix 要加上第一个参数 n; 第二列 type 表示类型。INT 类型可以设置为 0-127 或者 255, BOOL 表示可以设置为 0 和 1; 第三列 num 表示“可控制数目”。例如,有两个耳机(左耳和右耳)通道, 可是只用设置一个参数 4 同时就可以设定两 个耳机的音量; 第四列 name 解释命令; 第五列 value 显示参数当前的值。
测试中需要用到的命令如下表所示。注意,下表中只有最常用的命令,其它命令可以使用 tinymix 命令查看研究,这里不再赘述。
编号
名称
4
Headphone Playback Volume
表示设置耳机播放音量
5
Headphone Playback ZC Switch
表示开关耳机零交叉检波
6
Speaker Playback Volume
表示设置扬声器音量
7
Speaker Playback ZC Switch
表示开关扬声器零交叉检波
38
Right Output Mixer PCM Playback Switch
代表右声道开关
41
Left Output Mixer PCM Playback Switch
代表左声道开关
编号 5 中的零交叉检波(Zero Cross detection)设置增益只有在输入信号零交叉后才会变化,开启此项以避免增益变化引起的咔咔声。
应该注意的是,无论在最小 Linux 系统还是 Qt 系统,声音默认同时从扬声器以及内置耳机输出,并没有切换内外放的开关。而当扬声器的两个声道同时打开时,默认只有右声道有声音,要想使用左声道输出,则需关闭右声道。即扬声器只能作用在一个声道。如果在耳机和扬声器同时设置非零音量时播放音乐,声音从耳机以及扬声器的右声道传出。
2.2 耳机播放测试
使用耳机输出,则在串口控制台依次执行以下命令:tinymix 4 127、tinymix 5 1、 tinymix 38 1、tinymix 41 1,如下图所示。
接下来在串口控制台输入“tinyplay /mnt/disk/1.wav”,音频文件的具体路径应以实际情况为准,操作完成如下图所示。
可以看到正在播放,并且耳机中可以听到声音,退出播放使用快捷键 Ctrl+c。
64.2.3 扬声器喇叭播放测试
使用扬声器,则需在串口依次输入以下命令:tinymix 6 127、tinymix 7 1、tinymix 38 1、tinymix 41 1,如下图所示。
接下来在串口控制台输入“tinyplay /mnt/disk/1.wav”,音频文件的具体路径应以实际情况为准,操作完成如下图所示。
可以听到扬声器中有声音播放。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

 
快速回复 返回顶部 返回列表