SSD_AUDIO使用参考


1. AI(audio input)使用参考

1.1. AI支持的输入接口类型(使用SSD20X系列)

AI目前支持amic,dmic,i2s,linein,对应的规格如下:

接口类型 最大通道 采样率 采样位深 声道
amic 1 8/16/32/48 KHz 16bit STEREO/MONO
dmic 4 8/16/32/48 KHz 16bit STEREO/MONO
I2s 标准2路 (不支持TDM) 8/16/32/48 KHz(不支持mclk) 16bit STEREO/MONO
linein 3 8/16/32/48 KHz 16bit STEREO/MONO

1.2. AI支持的device ID

AI初始化时传入不同的device ID代表使用不同的接口类型,具体如下:

Device ID 接口类型
AI_DEV_ID_AMIC (0) Amic
AI_DEV_ID_DMIC (1) Dmic
AI_DEV_ID_I2S_RX (2) I2S RX
AI_DEV_ID_LINE_IN (3) Line in
AI_DEV_ID_AMIC_AND_I2S_RX (4) Amic + I2S RX
AI_DEV_ID_DMIC_AND_I2S_RX (5) Dmic + I2S RX
AI_DEV_ID_AMIC_AND_DMIC (6) 2Amic + 4Dmic

1.3. Amic使用场景

一路amic主要用在楼宇对讲的使用场景,用来采集一路声音实现室内外机对讲功能。

如下是公版Amic的pin示例:

对应的device ID和channel index分别为:

Pin Device ID
AI_DEV_ID_AMIC 0

参考使用Demo如下:


1.4. Dmic使用场景

1.4.1 将pin配置成dmic mode

使用dmic前需要先跟硬件确认使用的哪组pin,然后在infinity2m.dtsi和padmux文件中把digmic-padmux配置成对应的Mode,如公版使用的是PAD_HDMITX_SCL (D1) & PAD_HDMITX_SDA (D0) & PAD_HDMITX_HPD (CLK)

如下,找到对应的*.dtsi文件找到sound节点配置如下:

同时找到对应的*padmux.dtsi文件配置好对应的padmux mode


1.4.2 4 dmic的使用场景

Dmic在使用时不管使用的是2dmic还是4dmic使用的device ID都是AI_DEV_ID_DMIC (1),使用ChannelCount来决定具体需要采集几路音频

参考Demo使用如下:


1.5. I2s RX使用场景

1.5.1 I2s rx pin脚配置

使用i2s rx前,需要先跟硬件确认使用的是哪组pin,然后在对应的padmux里面配置成对应的Mode,例如公版如果使用的是PAD_SD_D0 & PAD_SD_CLK & PAD_SD_CMD && PAD_SD_D3 这组mode,对应的配置如下:

找到对应的dtsi文件中的sound节点:

找到对应的*padmux.dtsi文件,配置以下padmux:

<PAD_SD_D0     PINMUX_FOR_I2S_MODE_3    MDRV_PUSE_I2S_WCK>,

<PAD_SD_CLK    PINMUX_FOR_I2S_MODE_3    MDRV_PUSE_I2S_BCK>,

<PAD_SD_CMD    PINMUX_FOR_I2S_MODE_3    MDRV_PUSE_I2S_SDI>,

<PAD_SD_D3     PINMUX_FOR_I2S_MODE_3    MDRV_PUSE_I2S_SDO>,

使用的pin和mode的对应关系参考硬件资料的HW CheckList。


1.5.2 普通两路i2s使用场景

普通两路i2s rx的使用Demo参考如下:


1.6. Line In的使用场景

Line in的使用方式跟amic一样,只是设定Gain的方式不一样,具体参考MI AI API文档说明。


2. AO(audio output)使用场景参考

2.1. AO支持的输出接口类型

接口类型 最大channel 采样率 采样深度 声道
Line out 2 8/11.025/12/16/22.05/32/44.1/48KHz 16bit STEREO/MONO
I2s 2 8/16/32/48 KHz(不支持mclk) 16bit STEREO/MONO

2.2. AO支持的Device ID

Device ID 接口类型
AO_DEV_ID_LINE_OUT (0) 两路Lineout
AO_DEV_ID_I2S_TX (1) I2s
AO_DEV_ID_HDMI (2) HDMI(仅SSD203支持)
AO_DEV_ID_HDMI_AND_LINEOUT (3) HDMI + LINE OUT (仅SSD203支持)

2.3. Lineout使用场景

2.3.1 Lineout Amp的配置说明

SSD20X持两路Line out左右声道输出,但不支持单路属性控制操作(如不支持单独音量调节)

根据硬件layout可以按照以下方式配置amp_gpio

  1. 打开kernel\arch\arm\boot\dts\infinity2m.dtsi,修改sound设备树节点amp-gpio

    如下图,设置PAD_GPIO12/PAD_FUART_RX为amp_gpio的左右声道控制pin

  2. 打开kernel\arch\arm\boot\dts\pioneer3-ssc020a-s01a-demo-camera-padmux.dtsi (根据实际情况打开config使用的*_padmux.dtsi)

    如下图,分别设置PAD_SR_IO15/PAD_SR_IO16为MDRV_PUSE_AIO_AMP_PWL/MDRV_PUSE_AIO_AMP_PWR


2.3.2 一路lineout使用场景

使用Lineout支持左右声道,但是只有一路dev,如果需要播放立体左右声道,需要音频文件本身就左右声道组合好通过STEREO MODE播放(不支持单独喂数据)

参考使用Demo如下:


2.4. I2s Tx使用场景

2.4.1 I2s Tx pin脚配置

使用i2s rx前,需要先跟硬件确认使用的是哪组pin,然后在对应的padmux里面配置成对应的Mode,例如公版如果使用的是PAD_SD_D0 & PAD_SD_CLK & PAD_SD_CMD && PAD_SD_D3 这组mode,对应的配置如下:

找到对应的*padmux.dtsi文件,配置以下padmux:

<PAD_SD_D0     PINMUX_FOR_I2S_MODE_3    MDRV_PUSE_I2S_WCK>,

<PAD_SD_CLK    PINMUX_FOR_I2S_MODE_3    MDRV_PUSE_I2S_BCK>,

<PAD_SD_CMD    PINMUX_FOR_I2S_MODE_3    MDRV_PUSE_I2S_SDI>,

<PAD_SD_D3     PINMUX_FOR_I2S_MODE_3    MDRV_PUSE_I2S_SDO>,

使用的pin和mode的对应关系参考硬件资料的HW CheckList。


2.4.2 普通两路i2s tx使用场景

参考使用Demo如下: