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