CoM-T536产品特性:
- 采用Allwinner公司Cortex-A55四核T536处理器,最高速度为1.6GHZ;
- 支持2TOPS NPU,仅特定型号支持;
- 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
- 支持1-4G Bytes LPDDR4 SDRAM;
- 支持EMMC 4G-64G大容量电子盘,可启动;或支持SPI NAND启动;
- 支持双通道LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI显示, 分辨率最高1920x1020@60fps;
- 支持PCIE2.1;支持最多17路UART;支持四路CANFD;支持双路千兆以太网;
- 稳定的操作系统的支持,可预装LINUX 5.10/Ubuntu 20.04
- 邮票孔198POS设计, 尺寸为:53.5*45MM
CoM-T536功能图

STK-T536评估板功能图:

AUDIO接口测试
STK-T536评估板引出了耳机接口CN22(Headphone,3.5mm),该音频接口是通过主控制器的I2S3信号驱动ES8388 Codec实现。该音频接口支持国标定义(CTIA)的3.5mm四段式耳机。同时STK-T536评估板还引出了SPEAKER接口CN23(由主控制器LINEOUT信号经过放大器NS4150驱动输出),可直接驱动4R/3W的小喇叭。STK-T536的Linux系统移植了ES8388的驱动并适配,并未适配CN23,用户可根据相关文档(Linux_Audio_开发指南.pdf)自行适配并测试。

进入系统,执行如下命令分别查看挂载的声卡、播放设备信息以及录音设备信息。
Target# cat /proc/asound/cards
Target# cat /proc/asound/es8388/pcm0p/info
Target# cat /proc/asound/es8388/pcm0c/info
Target# cat /proc/asound/es8388/pcm0c/info
root@T536-embfly:/# cat /proc/asound/cards
0 [es8388 ]: es8388 - es8388
es8388
root@T536-embfly:/# cat /proc/asound/es8388/pcm0c/info
card: 0
device: 0
subdevice: 0
stream: CAPTURE
id: sunxi-snd-plat-i2s-ES8323 HiFi ES8323.6-0011-0
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1
root@T536-embfly:/# cat /proc/asound/es8388/pcm0p/info
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: sunxi-snd-plat-i2s-ES8323 HiFi ES8323.6-0011-0
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1
root@T536-embfly:/embfly_test/audio# ls /dev/snd/
by-path controlC0 pcmC0D0c pcmC0D0p timer
其中:
- controlC0:用于声卡控制,C0 表示声卡0,对应上文的es8388音频输出。
- pcmC0D0p:用于播放的 pcm 设备,最后面的“p”是 playback 的缩写,表示放音。
- pcmC0D0c:用于录音的 pcm 设备,最后面的“c”是 capture 的缩写,表示录音
3.13.1、确认音频设备支持哪些控制
通过指令amixer controls可以判断主板有哪些音频设备可以控制,指令执行结果如下:
root@T536-embfly:/# amixer controls
numid=25,iface=MIXER,name='PCM Volume'
numid=36,iface=MIXER,name='Mono Mux'
numid=30,iface=MIXER,name='ADC Data Select'
numid=19,iface=MIXER,name='Capture Digital Volume'
numid=20,iface=MIXER,name='Capture Mute'
numid=24,iface=MIXER,name='Capture Polarity'
numid=23,iface=MIXER,name='Playback De-emphasis'
numid=6,iface=MIXER,name='3D Mode'
numid=14,iface=MIXER,name='ALC Capture Attack Time'
numid=13,iface=MIXER,name='ALC Capture Decay Time'
numid=10,iface=MIXER,name='ALC Capture Function'
numid=12,iface=MIXER,name='ALC Capture Hold Time'
numid=8,iface=MIXER,name='ALC Capture Max PGA'
numid=9,iface=MIXER,name='ALC Capture Min PGA'
numid=17,iface=MIXER,name='ALC Capture NG Switch'
numid=15,iface=MIXER,name='ALC Capture NG Threshold'
numid=16,iface=MIXER,name='ALC Capture NG Type'
numid=7,iface=MIXER,name='ALC Capture Target Volume'
numid=11,iface=MIXER,name='ALC Capture ZC Switch'
numid=35,iface=MIXER,name='Differential Mux'
numid=21,iface=MIXER,name='Left Channel Capture Volume'
numid=37,iface=MIXER,name='Left Line Mux'
numid=40,iface=MIXER,name='Left Mixer Left Bypass Switch'
numid=26,iface=MIXER,name='Left Mixer Left Bypass Volume'
numid=39,iface=MIXER,name='Left Mixer Left Playback Switch'
numid=33,iface=MIXER,name='Left PGA Mux'
numid=32,iface=MIXER,name='MIC Switch'
numid=43,iface=MIXER,name='OUT1 Switch'
numid=44,iface=MIXER,name='OUT2 Switch'
numid=28,iface=MIXER,name='Output 1 Playback Volume'
numid=29,iface=MIXER,name='Output 2 Playback Volume'
numid=22,iface=MIXER,name='Right Channel Capture Volume'
numid=38,iface=MIXER,name='Right Line Mux'
numid=42,iface=MIXER,name='Right Mixer Right Bypass Switch'
numid=27,iface=MIXER,name='Right Mixer Right Bypass Volume'
numid=41,iface=MIXER,name='Right Mixer Right Playback Switch'
numid=34,iface=MIXER,name='Right PGA Mux'
numid=31,iface=MIXER,name='SPK Switch'
numid=18,iface=MIXER,name='ZC Timeout Switch'
numid=3,iface=MIXER,name='clk en post delay'
numid=4,iface=MIXER,name='clk keep'
numid=5,iface=MIXER,name='loopback debug'
numid=1,iface=MIXER,name='rx sync mode'
numid=2,iface=MIXER,name='tx trigger bypass'
其中:
- Capture Volume :配置录音声音的大小
- Playback Volume :配置播放声音的大小
3.13.2、列出所有card 0控制器能配置的值
Target# amixer contents -c 0 //列出card0能配置的值
root@T536-embfly:/embfly_test/audio# amixer contents -c 0
numid=25,iface=MIXER,name='PCM Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=192,step=0
: values=182,182
| dBscale-min=-96.00dB,step=0.50dB,mute=1
numid=36,iface=MIXER,name='Mono Mux'
; type=ENUMERATED,access=rw------,values=1,items=3
; Item #0 'Stereo'
; Item #1 'Mono (Left)'
; Item #2 'Mono (Right)'
: values=0
numid=30,iface=MIXER,name='ADC Data Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Left Right'
; Item #1 'Left Left'
; Item #2 'Right Right'
; Item #3 'Right Left'
: values=0
numid=19,iface=MIXER,name='Capture Digital Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=192,step=0
: values=160,160
| dBscale-min=-96.00dB,step=0.50dB,mute=1
numid=20,iface=MIXER,name='Capture Mute'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=24,iface=MIXER,name='Capture Polarity'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Normal'
; Item #1 'L Invert'
; Item #2 'R Invert'
; Item #3 'L + R Invert'
: values=0
numid=23,iface=MIXER,name='Playback De-emphasis'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'None'
; Item #1 '32Khz'
; Item #2 '44.1Khz'
; Item #3 '48Khz'
: values=0
numid=6,iface=MIXER,name='3D Mode'
; type=ENUMERATED,access=rw------,values=1,items=8
; Item #0 'No 3D '
; Item #1 'Level 1'
; Item #2 'Level 2'
; Item #3 'Level 3'
; Item #4 'Level 4'
; Item #5 'Level 5'
; Item #6 'Level 6'
; Item #7 'Level 7'
: values=1
numid=14,iface=MIXER,name='ALC Capture Attack Time'
; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0
: values=1
numid=13,iface=MIXER,name='ALC Capture Decay Time'
; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0
: values=1
numid=10,iface=MIXER,name='ALC Capture Function'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Off'
; Item #1 'Right'
; Item #2 'Left'
; Item #3 'Stereo'
: values=3
numid=12,iface=MIXER,name='ALC Capture Hold Time'
; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0
: values=0
numid=8,iface=MIXER,name='ALC Capture Max PGA'
; type=INTEGER,access=rw------,values=1,min=0,max=7,step=0
: values=0
numid=9,iface=MIXER,name='ALC Capture Min PGA'
; type=INTEGER,access=rw------,values=1,min=0,max=7,step=0
: values=0
numid=17,iface=MIXER,name='ALC Capture NG Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=15,iface=MIXER,name='ALC Capture NG Threshold'
; type=INTEGER,access=rw------,values=1,min=0,max=31,step=0
: values=10
numid=16,iface=MIXER,name='ALC Capture NG Type'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Constant PGA Gain'
; Item #1 'Mute ADC Output'
: values=1
numid=7,iface=MIXER,name='ALC Capture Target Volume'
; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0
: values=12
numid=11,iface=MIXER,name='ALC Capture ZC Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=35,iface=MIXER,name='Differential Mux'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Line 1'
; Item #1 'Line 2'
: values=0
numid=21,iface=MIXER,name='Left Channel Capture Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=8,step=0
: values=0
| dBscale-min=0.00dB,step=3.00dB,mute=0
numid=37,iface=MIXER,name='Left Line Mux'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Line 1L'
; Item #1 'Line 2L'
; Item #2 'NC'
; Item #3 'MicL'
: values=1
numid=40,iface=MIXER,name='Left Mixer Left Bypass Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=26,iface=MIXER,name='Left Mixer Left Bypass Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=4
| dBscale-min=-0.15dB,step=3.00dB,mute=0
numid=39,iface=MIXER,name='Left Mixer Left Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=33,iface=MIXER,name='Left PGA Mux'
; type=ENUMERATED,access=rw------,values=1,items=3
; Item #0 'Line 1L'
; Item #1 'Line 2L'
; Item #2 'DifferentialL'
: values=1
numid=32,iface=MIXER,name='MIC Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=43,iface=MIXER,name='OUT1 Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=44,iface=MIXER,name='OUT2 Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=28,iface=MIXER,name='Output 1 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=31,31
| dBscale-min=-45.00dB,step=1.50dB,mute=0
numid=29,iface=MIXER,name='Output 2 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=31,31
| dBscale-min=-45.00dB,step=1.50dB,mute=0
numid=22,iface=MIXER,name='Right Channel Capture Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=8,step=0
: values=0
| dBscale-min=0.00dB,step=3.00dB,mute=0
numid=38,iface=MIXER,name='Right Line Mux'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Line 1R'
; Item #1 'Line 2R'
; Item #2 'NC'
; Item #3 'MicR'
: values=1
numid=42,iface=MIXER,name='Right Mixer Right Bypass Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=27,iface=MIXER,name='Right Mixer Right Bypass Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=0
| dBscale-min=-0.15dB,step=3.00dB,mute=0
numid=41,iface=MIXER,name='Right Mixer Right Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=34,iface=MIXER,name='Right PGA Mux'
; type=ENUMERATED,access=rw------,values=1,items=3
; Item #0 'Line 1R'
; Item #1 'Line 2R'
; Item #2 'DifferentialR'
: values=1
numid=31,iface=MIXER,name='SPK Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=18,iface=MIXER,name='ZC Timeout Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=3,iface=MIXER,name='clk en post delay'
; type=INTEGER,access=rw------,values=1,min=0,max=5000,step=0
: values=0
numid=4,iface=MIXER,name='clk keep'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=5,iface=MIXER,name='loopback debug'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=1,iface=MIXER,name='rx sync mode'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Off'
; Item #1 'On'
: values=1
numid=2,iface=MIXER,name='tx trigger bypass'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Off'
; Item #1 'On'
: values=0
root@T536-embfly:/embfly_test/audio#
3.13.3、配置音频参数
以下以“Output 1 Playback Volume”音频参数为例,进行音频参数的配置。配置指令如下:
#获取对应的控制器配置的值
amixer -c $card_id cget $id
#设置对应的控制器配置的值
amixer -c $card_id 0 cset $id $value
root@T536-embfly:/embfly_test/audio# amixer -c 0 cget numid=28
numid=28,iface=MIXER,name='Output 1 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=31,31
| dBscale-min=-45.00dB,step=1.50dB,mute=0
root@T536-embfly:/embfly_test/audio#
1. values=2 : 需要配置两个值
2. min=0 :可配置的最小值为0
3. max=33 :可配置的最大值为33
4. values=31,31当前的值为31,31(左右声道)
#设置card0声音播放音量大小为10,10
root@lubancat:~# amixer -c 0 cset numid=28 "10,10"
root@T536-embfly:/embfly_test/audio# amixer -c 0 cset numid=28 "10,10"
numid=28,iface=MIXER,name='Output 1 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=10,10
| dBscale-min=-45.00dB,step=1.50dB,mute=0
可以看到成功配置完成
3.13.4、播放音频
如下将演示使用耳机播放音频(test.wav保存在/embfly_test/audio目录),分别将耳机与评估板PHONE接口CN22连接,执行如下命令使能耳机声道(通过原理图查看来源于ES8388的OUT1通道):
Target# amixer -c 0 cset numid=43 "1" //numid=43,iface=MIXER,name='OUT1 Switch'
执行如下命令分别设置耳机音量和扬声器音量。
Target# amixer -c 0 cset numid=28 "10,10" //numid=28,iface=MIXER,name='Output 1 Playback Volume'
执行如下命令,耳机和扬声器会同时播放上小节录制的音频
Target# aplay -Dhw:0 /embfly_test/audio/test.wav
root@T536-embfly:/embfly_test/audio# amixer -c 0 cset numid=28 "10,10"
numid=28,iface=MIXER,name='Output 1 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=10,10
| dBscale-min=-45.00dB,step=1.50dB,mute=0
root@T536-embfly:/embfly_test/audio# ^C
root@T536-embfly:/embfly_test/audio# amixer -D
amixer: option requires an argument -- 'D'
Invalid switch or option -? needs an argument.
root@T536-embfly:/embfly_test/audio# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: es8388 [es8388], device 0: sunxi-snd-plat-i2s-ES8323 HiFi ES8323.6-0011-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
root@T536-embfly:/embfly_test/audio# amixer -c 0 cset numid=43 "1"
numid=43,iface=MIXER,name='OUT1 Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
root@T536-embfly:/embfly_test/audio# aplay -Dhw:0 /embfly_test/audio/test.wav
Playing WAVE '/embfly_test/audio/test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
^CAborted by signal Interrupt...
894

被折叠的 条评论
为什么被折叠?



