# 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工具,如下圖所示


從左到右是:耳機音量,耳機輸出源,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等級設置