# CODEC的使用
默认dts中使能了codec
需要使用的话,在buildroot中勾选 alsa-utils相关命令
## CODEC 设备
~~~
# ls /dev/snd
controlC0 pcmC0D0c pcmC0D0p timer
~~~
controlC0表示控制器
pcmC0D0c 表示capture
pcmC0D0p 表示play
timer 表示定时器
使用该设备编程可以参考:http://blog.csdn.net/zhenwenxian/article/details/5901239
出现了该设备说明codec驱动被正确加载。
## alsa-utils 使用
### 查看设备
~~~
# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Codec [V3s Audio Codec], device 0: CDC PCM Codec-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
~~~
### 调节音量
alsamixer是图形化的amixer工具,如下图所示
![](https://box.kancloud.cn/ecce93c9bc9cc3cfd3b7391265d3b76d_727x459.jpg)
![](https://box.kancloud.cn/e81cf1f866ed39a7110cb92bc8892c4a_725x457.jpg)
从左到右是:耳机音量,耳机输出源,Mic增益,mic1 boost, DAC增益。
可以很方便地调整音频输出设置
00表示当前音量正常,MM表示此声道是静音.可以通过键盘上的M键来切换静音和正常状态.
开机后默认状态是静音状态,需要取消掉静音状态
~~~
amixer -c 0 sset 'Headphone',0 100% unmute
~~~
### 查看控制器 amixer contents
~~~
numid=13,iface=MIXER,name='Headphone Source Playback Route'
; type=ENUMERATED,access=rw------,values=2,items=2
; Item #0 'DAC'
; Item #1 'Mixer'
: values=0,0
numid=3,iface=MIXER,name='Headphone Playback Switch'
; type=BOOLEAN,access=rw------,values=2
: values=off,off
numid=2,iface=MIXER,name='Headphone Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0
: values=7
| dBscale-min=-63.00dB,step=1.00dB,mute=1
numid=5,iface=MIXER,name='Mic1 Boost Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=4
| dBrange-
rangemin=0,,rangemax=0
| dBscale-min=0.00dB,step=0.00dB,mute=0
rangemin=1,,rangemax=7
| dBscale-min=24.00dB,step=3.00dB,mute=0
numid=12,iface=MIXER,name='Mic1 Capture Switch'
; type=BOOLEAN,access=rw------,values=2
: values=on,on
numid=9,iface=MIXER,name='Mic1 Playback Switch'
; type=BOOLEAN,access=rw------,values=2
: values=off,off
numid=4,iface=MIXER,name='Mic1 Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=3
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=6,iface=MIXER,name='ADC Gain Capture Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=3
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=7,iface=MIXER,name='DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=2
: values=off,off
numid=1,iface=MIXER,name='DAC Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0
: values=63
| dBscale-min=-73.08dB,step=1.16dB,mute=0
numid=8,iface=MIXER,name='DAC Reversed Playback Switch'
; type=BOOLEAN,access=rw------,values=2
: values=off,off
numid=10,iface=MIXER,name='Mixer Capture Switch'
; type=BOOLEAN,access=rw------,values=2
: values=off,off
numid=11,iface=MIXER,name='Mixer Reversed Capture Switch'
; type=BOOLEAN,access=rw------,values=2
: values=off,off
~~~
### 录音测试
耳机输入内置了放大器。
耳机,linein,同时只能使用1种。
使用输入端口前需要设置mixer控制器,ADC input Mux
ADC Input Mux 和对应的输入端口
~~~
0 linein
1 fmin
2 mic1
3 mic2
4 mic1,mic2
5 mic1+mic2
6 output mixer
7 linein,mic1
~~~
使用amixer来设置通道
~~~
amixer -c <"card"> cset numid=<"control#"> <"input_port">
where:
<"card"> is the card, 0 for the sunxi-codec and 1 for the hdmi audio output
<"input_port"> is the input port from the table
<"control#"> is the control # showed using: aximer contents
~~~
使用下面命令使能耳机并录音
~~~
amixer -c 0 cset numid=12 2 使能mic1
arecord -D hw:0,0 -d 3 -f S16_LE -r 16000 tmp.wav 录音测试
~~~
### 播放
~~~
amixer -c 0 sset 'Headphone',0 100% unmute
speaker-test -twav -c2
atest
aplay tmp.wav
~~~
配置文件
/etc/asound.conf(简易配置) :
~~~
{{{
pcm.!default{
type hw
card 0
devive 0
}
ctl.!default{
type hw
card 0
device 0
}
}}}
~~~
其中card代表声卡号, device代表设备号, asound.conf的配置极其强大和复杂,详情可查阅http://www.alsa-project.org/main/index.php/Main_Page
---------------------------------------------------------------------------
card, device的确定方法
card, device必须对应hdmi的声卡号和设备号,可以使用aplay -l查看对应的hdmi设备,可能会有出现多个hdmi设备,确定当前可以使用的hdmi设备的方法如下:
#. cat /proc/asound/cards 查看nvidia设备对应的ID号(假设=1)
#. alsamixer -c 1 打开声音设置,其中<S/PDIF>即为HDMI输出,“MM”代表静音,alsa在每次重启声音设备时都会默认为静音,所以必须首先打开音量再进行后续的操作。
#. alsactl store 保存上述配置
#. aplay -D hw:1,7 /usr/share/sounds/alsa/test.wav "hw后的1代表声卡号,7代表设备号,需要根据aplay -l的输出来确定这两个数字"找到对应的hdmi输出口。
### amixer 使用方法
amixer -c 0 cset/cget/sset/sget
sset/sget 表示是 “simple control", 也就是用字符串形式表示
cset/cget 表示是普通控制,使用句柄id控制
使用amixer -c 0 contents 可以查看各个id对应的名字。
参考 http://linux-sunxi.org/Audio_Codec
- 前言
- 荔枝派TODO任务领取
- linux使用小贴士
- 入门篇
- 板卡介绍
- 开箱指南
- 烧录启动系统
- 联网方法
- 镜像使用
- 镜像说明
- buildroot系统使用
- debian系统使用
- 外设操作
- 外设操作概览
- 低速外设
- GPIO
- GPIO模拟低速接口
- UART
- PWM
- I2C
- SPI
- 高速接口
- SDIO
- USB
- EtherNet
- DVP CSI
- MIPI CSI
- 模拟外设
- CODEC
- LRADC
- 常见设备驱动
- USB摄像头
- USB 3G/4G 网卡
- 舵机
- 开发篇
- UBOOT适配
- UBOOT编译
- UBOOT配置
- UBOOT配置屏幕分辨率
- UBOOT配置SPI启动
- Linux内核开发
- Linux内核编译
- BSP Linux内核编译.md
- Linux内核选项
- 外设驱动与设备树
- RTL8723BS驱动
- 根文件系统定制
- buildroot定制系统
- buildroot添加软件包
- openwrt定制系统
- emdebian定制系统
- camdriod开发
- camdriod编译
- 主线Uboot引导Camdriod
- 系统镜像打包
- XBOOT适配
- 荔枝运行XBOOT
- 应用篇
- 游戏机-基于EmulationStation
- 游戏机-gnuboy
- 语音识别-科大讯飞云
- GUI-QT5
- 语音识别-离线关键词识别
- 路由器-Lichee Zero
- 投稿文章
- 荔枝派Zero开箱指南
- Zero i2c oled使用指南
- zero SPI LCD使用指南
- Zero u-boot编译和使用指南
- TF WiFi使用方法
- Zero Ethernet使用指南
- Zero 移植Qt5.4.1
- ZeroSpiNorFlash启动系统制作指南
- Visio-uboot-sunxi流程
- lichee 编译踩坑记录(ilichee ZERO)
- lichee_zero_外设GPIO接口
- TF WIFI 小白编
- 从零开始LicheePi Zero的开发
- 认识Zero的硬件
- 搭建Zero的开发环境
- 主线Uboot
- 主线kernel
- BSP kernel
- BSP内核启动
- bsp内核的摄像头使用
- BSP内核中的保留内存
- uboot启动BSP内核常见错误
- BSP内核 FBTFT移植
- BSP内核启动错误及警告解决
- buildroot 根文件系统
- emdebian 根文件系统
- SPI Flash 系统编译
- sunxi-fel增加对16M 以上flash的支持
- overlayfs的使用
- jffs2系统挂载不上的常见原因
- JFFS2 文件系统简介
- uboot对spi flash的识别
- bsp内核的SPI flash启动
- Docker开发环境
- Docker 命令速查
- 基础ubuntu系统配置
- docker离线镜像
- Zero系统烧录
- dd镜像烧录
- 分区镜像烧录
- SPI Flash系统烧录
- 一键镜像烧录
- Zero外设把玩
- I2C操作
- PWM输出
- CODEC的使用
- 以太网使用指南
- GPIO操作
- 文件IO方式
- C语言接口(mmap)
- Python操作GPIO
- pinctrl-sunxi介绍
- UART操作
- 点屏
- 点屏之RGB屏
- 点屏之SPI屏 ili9341
- 点屏之SPI OLED
- 点屏之I2C OLED
- 点屏之SPI屏 ili9488
- 点屏之MCU屏
- 点屏之触摸屏驱动
- 点屏之simple-framebuffer
- 点屏之屏幕时序
- 时钟控制器CCM
- 摄像头
- BSP DVP摄像头
- BSP MIPI 摄像头
- 主线DVP摄像头
- 主线 MIPI摄像头
- SPI 操作
- 应用层开发
- 开机自启动
- Segment Fault调试
- Zero通过OTG共享PC网络
- USB摄像头使用
- 基于QT的GUI开发
- 移植tslib
- 移植QT5.9.1
- 移植QT4.8.7
- QtCreator使用
- Qt5.x移植到Qt4.8
- Qt字体相关
- Qt移植总结
- Qt裁剪
- Qt去除鼠标指针显示
- zero_imager使用
- 驱动开发
- 设备树简介
- GPU/DRM 显示驱动
- sys下设备树查看
- atmel触摸屏驱动分析
- atmel触摸屏中断改轮询
- uboot下gpio操作
- helloworld驱动编译演示
- FBTFT分析
- 内核模块静态加载的顺序
- SPI驱动分析
- SPI 驱动编写
- Uboot开发
- 开机logo
- 看门狗的使用
- 关于系统reboot
- 内核printk等级设置