Audio调试

进入系统后,通过命令cat /proc/asound/cards列出当前声卡信息,如果发现ac107相关声卡,说明已经正常加载驱动
root@TinaLinux:/# cat proc/asound/cards
0 [audiocodec ]: audiocodec - audiocodec
audiocodec
1 [sndac10710036 ]: sndac107_1-0036 - sndac107.1-0036
sndac107.1-0036

录音:
通过内部的MIC1,MIC2录制两通道
amixer -D hw:audiocodec cset name=‘ACDL Input MIC1 Boost Switch’ 1
amixer -D hw:audiocodec cset name=‘ACDR Input MIC2 Boost Switch’ 1
amixer -D hw:audiocodec cset name=‘MIC1 gain volume’ 19
amixer -D hw:audiocodec cset name=‘MIC2 gain volume’ 19
arecord -Dhw:audiocedec -f S16_LE -r 16000 -c 2 /tmp/test.wav

通过外部AC107的MIC1,MIC2录制两通道
amixer -D hw:sndac10710036 cset name=‘Channel 1 PGA Gain’ 25
amixer -D hw:sndac10710036 cset name=‘Channel 2 PGA Gain’ 25
arecord -Dhw:sndac10710036 -f S16_LE -r 16000 -c 2 /tmp/test.wav

播放
通过HPOUT->Speaker播放
amixer -Dhw:audiocedec cset name=‘Headphone Switch’ 1
amixer -Dhw:audiocedec cset name=‘Headphone Volume’ 3
amixer -Dhw:audiocedec cset name=‘HpSpeaker Switch’ 1

aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
或者利用默认/etc/asound.conf配置的pcm设备进行播放:
aplay -Ddefault /mnt/UDISK/1KHz_0dB_16000.wav

通过Lineout播放
amixer -D hw:audiocodec cset name=‘LINEOUT Output Select’ ‘DAC_DIFFER’
amixer -D hw:audiocodec cset name=‘LINEOUT Switch’ 1
amixer -D hw:audiocodec cset name=‘LINEOUT volume’ 20
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav

通过HPOUT播放
amixer -Dhw:audiocodec cset name=‘Headphone Switch’ 1
amixer -Dhw:audiocodec cset name=‘Headphone Volume’ 3
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav

获取audiocodec声卡的所有控件名
root@TinaLinux:/# amixer -Dhw:audiocodec controls
numid=14,iface=MIXER,name=‘Headphone Switch’
numid=10,iface=MIXER,name=‘Headphone Volume’
numid=3,iface=MIXER,name=‘ADC Swap’
numid=9,iface=MIXER,name=‘ADC volume’
numid=12,iface=MIXER,name=‘ADCL Input MIC1 Boost Switch’
numid=13,iface=MIXER,name=‘ADCR Input MIC2 Boost Switch’
numid=2,iface=MIXER,name=‘DAC Swap’
numid=8,iface=MIXER,name=‘DAC volume’
numid=15,iface=MIXER,name=‘HpSpeaker Switch’
numid=11,iface=MIXER,name=‘LINEOUT Output Select’
numid=16,iface=MIXER,name=‘LINEOUT Switch’
numid=7,iface=MIXER,name=‘LINEOUT volume’
numid=5,iface=MIXER,name=‘MIC1 gain volume’
numid=6,iface=MIXER,name=‘MIC2 gain volume’
numid=17,iface=MIXER,name=‘Soft Volume Master’
numid=1,iface=MIXER,name=‘codec hub mode’
numid=4,iface=MIXER,name=‘digital volume’

获取当前硬件音量
root@TinaLinux:/# amixer -Dhw:audiocodec cget name=‘LINEOUT volume’
numid=7,iface=MIXER,name=‘LINEOUT volume’
; type=INTEGER,access=rw—R–,values=1,min=0,max=31,step=0
: values=20
| dBrange-
rangemin=0,rangemax=1
| dBscale-min=0.00dB,step=0.00dB,mute=1
rangemin=2,rangemax=31
| dBscale-min=-43.50dB,step=1.50dB,mute=1

设置当前硬件音量
root@TinaLinux:/# amixer -Dhw:audiocodec cset name=‘LINEOUT volume’ 25
numid=7,iface=MIXER,name=‘LINEOUT volume’
; type=INTEGER,access=rw—R–,values=1,min=0,max=31,step=0
: values=25
| dBrange-
rangemin=0,rangemax=1
| dBscale-min=0.00dB,step=0.00dB,mute=1
rangemin=2,rangemax=31
| dBscale-min=-43.50dB,step=1.50dB,mute=1

录制5s,通道数为2,采样率为16000,采样精度为16bit,保存为wav文件
arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 -d 5 /mnt/UDISK/test.wav

查看所有寄存器状态:
root@TinaLinux:/# cat sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
dump audiocodec reg:
SUNXI_DAC_DPC [0x000]: 0x0 save_val:0x0
SUNXI_DAC_VOL_CTRL [0x004]: 0x0 save_val:0x0
SUNXI_DAC_FIFOC [0x010]: 0x3004000 save_val:0x0
SUNXI_DAC_FIFOS [0x014]: 0x520c save_val:0x0
SUNXI_DAC_CNT [0x024]: 0x192810 save_val:0x0
SUNXI_DAC_DG [0x028]: 0x40 save_val:0x0
SUNXI_ADC_FIFOC [0x030]: 0x6f003400 save_val:0x0
SUNXI_ADC_VOL_CTRL [0x034]: 0x2a0a0 save_val:0x0
SUNXI_ADC_FIFOS [0x038]: 0x0 save_val:0x0
SUNXI_ADC_CNT [0x044]: 0x0 save_val:0x0
SUNXI_ADC_DG [0x04c]: 0x0 save_val:0x0
SUNXI_DAC_DAP_CTL [0x0f0]: 0x0 save_val:0x0
SUNXI_ADC_DAP_CTL [0x0f8]: 0x0 save_val:0x0
SUNXI_ADCL_REG [0x300]: 0xc1355 save_val:0x0
SUNXI_ADCR_REG [0x304]: 0xc1355 save_val:0x0
SUNXI_DAC_REG [0x310]: 0x31150059 save_val:0x0
SUNXI_MICBIAS_REG [0x318]: 0x40003030 save_val:0x0
SUNXI_BIAS_REG [0x320]: 0x80 save_val:0x0
SUNXI_HEADPHONE_REG [0x324]: 0x808003cc save_val:0x0
SUNXI_HMIC_CTRL [0x328]: 0x8 save_val:0x0
SUNXI_HMIC_STS [0x32c]: 0x6000 save_val:0x0

可以用echo命令来操作某个寄存器
echo的
参数1:0-read;1-write
参数2:1-digitar reg;2-analog reg
参数3:reg value
参数4:write value

查看某个数字寄存器状态:
echo 0,1,0x10 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
查看某个模拟寄存器状态:
echo 0,2,0x5 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
改写某个数字寄存器:
echo 1,1,0x24,0 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg (表示将0x24数字寄存器写为0x0)
改写某个模拟寄存器:
echo 1,2,0x3,0x1 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg (表示将0x03模拟寄存器写为0x1)

通过sunxi_dump节点查询寄存器状态,例如查看i2s0的寄存器:
cd /sys/class/sunxi_dump
echo 0x05090000,0x050900a0 > dump
cat dump

dump dmic 寄存器:
cd /sys/class/sunxi_dump
echo 0x05095000,0x05095050 > dump (0x05095000,0x05095050为起始地址和结束地址)
cat dump

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值