CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 9480|回复: 3

Linux 系统音频驱动控制

[复制链接]
发表于 2017-4-28 19:12:28 | 显示全部楼层 |阅读模式
本帖最后由 @allen 于 2017-5-27 14:33 编辑

1.ALSA 简介

ALSA 是 Advanced Linux Sound Architecture 的缩写,目前已经成为了 linux 的主流音频体系结构。在内核设备驱动层,ALSA 提供了 alsa-driver,同时在应用层,ALSA 为我们提供了 alsa-lib,应用程序只要调用 alsa-lib 提供的 API,即可以完成对底层音频硬件的控制。
1.png

程序需要切换声卡,控制音量,左右声道增益,静音等等.如果对音频驱动不熟悉,可以在User 空间通过 alsa-lib来对底层驱动进行参数设置.当然如果音频驱动不标准,对接ALSA没对接好,则就很难进行控制.

User 空间控制方法3 种

1). alsamixer
安装:sudo apt-get install alsa-utils

一般都已经安装好了运行:
  1. sudo alsamixer
复制代码
已Cubieboard6 为例,alsamixer界面如图,比较容易操作
显示是Playback 部分的控件,要看录音部分按"F4"切换
2017-04-28-020241_800x480_scrot.png


通过左右方向键选择选项,上下键来调节值,字母"M"来开关选项,ESC保存并退出
重点关注DAC FL GAIN ,DAC FR GAIN ,DAC PA,分别是左声道增益,右声道增益,总音量
一般左右声道增益,调整一个固定值,最大音量不出现失真即可
所以一般调节DAC PA总音量

使用命令来测试输出音频效果
  1. speaker-test -twav -c2
复制代码
2) amixer

获取所有的控件:
  1. amixer contols
复制代码
选区_002.png

获取DAC PA的值
  1. amixer cget numid=14
复制代码
选区_003.png
可以看到实际DAC PA的值区域在0~40,所以当用alsamixer调到100 时,其实调到最大值40


设置DAC PA的值
  1. amixer cset numid=14 values=20
复制代码
选区_004.png




3)音频ALSA编程

在应用中,添加标准API  来获取控件,设置控件,从而控制音频.
具体使用方法可网上搜 音频ALSA编程
编程方法会较上面两个方法繁琐,但它可以嵌入进自己的应用程序中,结合实际应用场景,调用操作更加灵活.

http://www.cnblogs.com/cslunatic/p/3677729.html

http://blog.csdn.net/cjyusha/article/details/50495730




回复

使用道具 举报

 楼主| 发表于 2017-4-28 19:14:15 | 显示全部楼层
本帖最后由 @allen 于 2017-5-22 16:53 编辑
  1. cd /sys/bus/i2c/devices/0-0065/
复制代码
  1. echo 0xa3 > reg_dbg
复制代码
可以得到PMU中DAC_VOLUMECTL0寄存器的值,该寄存器是DAC FL和FR gain 的值,具体请查看PMU的数据手册。
  1. cat /sys/kernel/debug/asoc/atm7059_link/atc260x-audio/codec_reg
复制代码
则会打印出,PMU里面音频的寄存器值


回复 支持 反对

使用道具 举报

发表于 2017-5-18 20:46:20 | 显示全部楼层
你好,我下载了alsa的lib和utils,但是aplay可以用,arecord却不能用,为什么?
aplay -a 可以显示相应设备,但是arecord下面什么都没有,而且所有关于录音的命令都无法执行,求指教!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-22 17:55:51 | 显示全部楼层
梨未开 发表于 2017-5-18 20:46
你好,我下载了alsa的lib和utils,但是aplay可以用,arecord却不能用,为什么?
aplay -a 可以显示相应设备 ...

你是用什么主控? amixer contols 没有ADC的设备吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-22 18:00 , Processed in 0.024655 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部