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
-
打开kernel\arch\arm\boot\dts\infinity2m.dtsi,修改sound设备树节点amp-gpio
如下图,设置PAD_GPIO12/PAD_FUART_RX为amp_gpio的左右声道控制pin

-
打开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如下:
