Home

cubie.cc CubieBoard中文论坛

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

Linux 系统音频驱动控制

[复制链接]

37

主题

4

好友

1万

积分

超级版主

Rank: 8Rank: 8

贡献
2558
金钱
5844
威望
2558
买家信用
卖家信用
积分
14045
发表于 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





  • data/attachment/forum/201704/28/163341hyqsnnljsjyyz9jn.png
  • data/attachment/forum/201704/28/183454zsnym11obb4ey7n7.png
  • data/attachment/forum/201704/28/190223un20k0nn0inne84n.png
  • data/attachment/forum/201704/28/190228setp5tkr3ge33pee.png
  • data/attachment/forum/201704/28/190232xhhee576eeoe6ljs.png

回复

使用道具 举报

37

主题

4

好友

1万

积分

超级版主

Rank: 8Rank: 8

贡献
2558
金钱
5844
威望
2558
买家信用
卖家信用
积分
14045
发表于 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里面音频的寄存器值


回复

使用道具 举报

3

主题

0

好友

372

积分

中级会员

Rank: 3Rank: 3

贡献
79
金钱
129
威望
79
买家信用
卖家信用
积分
372
发表于 2017-5-18 20:46:20 |显示全部楼层
你好,我下载了alsa的lib和utils,但是aplay可以用,arecord却不能用,为什么?
aplay -a 可以显示相应设备,但是arecord下面什么都没有,而且所有关于录音的命令都无法执行,求指教!!!
回复

使用道具 举报

37

主题

4

好友

1万

积分

超级版主

Rank: 8Rank: 8

贡献
2558
金钱
5844
威望
2558
买家信用
卖家信用
积分
14045
发表于 2017-5-22 17:55:51 |显示全部楼层
梨未开 发表于 2017-5-18 20:46
你好,我下载了alsa的lib和utils,但是aplay可以用,arecord却不能用,为什么?
aplay -a 可以显示相应设备 ...

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

使用道具 举报

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

Archiver|手机版|邮件群发|cubie.cc---深刻的嵌入式技术和应用讨论中文社区 ( 粤ICP备13051116号-1  

GMT+8, 2017-6-23 00:36 , Processed in 0.031826 second(s), 10 queries , Apc On.

Powered by Discuz! X2.5 Licensed

© 2001-2012 Comsenz Inc. | Style by Coxxs

回顶部