跳转至

Audio使用参考

REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 11/13/2024

    设备树配置

    • I2S tdm配置

      属性名称 描述 取值范围
      i2s-rx0-tdm-ws-pgm TDM可编程模式 0: OFF
      1: ON
      i2s-tx0-tdm-ws-pgm TDM可编程模式 0: OFF
      1: ON
      i2s-rx0-tdm-ws-width 配置tdm WCK的宽度 0~31 (width = value + 1)
      i2s-tx0-tdm-ws-width 配置tdm WCK的宽度 0~31 (width = value + 1)

      示例:

      i2s-rx0-tdm-ws-pgm = <0>;
      i2s-rx0-tdm-ws-width = <0>;
      i2s-tx0-tdm-ws-pgm = <1>;
      i2s-tx0-tdm-ws-width = <0xf>;
      

      不打开pgm:width属性不生效,WCK占空比固定为50%

      打开pgm:此时width属性生效,WCK宽度为(width+1)*bclk

    • I2S wck翻转

      属性名称 描述 取值范围
      i2s-rx0-tdm-ws-inv I2S wck翻转 0: 不翻转
      1: 翻转
      i2s-tx0-tdm-ws-inv I2S wck翻转 0: 不翻转
      1: 翻转

      不翻转:

      翻转:

    • I2S rx-ch-swap

      属性名称 描述 取值范围
      i2s-rx0-tdm-ch-swap 配置rx i2s通道交换 见下方详述
      每个bit置1代表打开,0代表关闭
      [0] :   0<-->2,  1<-->3,  4<-->6,   5<-->7
              8<-->10, 9<-->11, 12<-->14, 13<-->15
      [1] :   0<-->4,  1<-->5,  2<-->6,   3<-->7
              8<-->12, 9<-->13, 10<-->14, 11<-->15
      [2] :   0<-->8,  1<-->9,  2<-->10,  3<-->11
              4<-->12, 5<-->13, 6<-->14,  7<-->15
      [3]:    0:  L at slot 0/2/4/6/8/10/12/14
                  R at slot 1/3/5/7/9/11/13/15
              1:  L at slot 0/1/2/3/4/5/6/7
                  R at slot 8/9/10/11/12/13/14/15
      

      示例:

      i2s-rx-tdm-ch-swap = <0 0 0 0>;
      
    • I2S tx-ch-swap

      属性名称 描述 取值范围
      i2s-tx0-tdm-ch-swap 配置tx i2s通道交换 见下方详述
      每个bit置1代表打开,0代表关闭
      [0] :   0<-->2,  1<-->3,  4<-->6,   5<-->7
              8<-->10, 9<-->11, 12<-->14, 13<-->15
      [1] :   0<-->4,  1<-->5,  2<-->6,   3<-->7
              8<-->12, 9<-->13, 10<-->14, 11<-->15
      [2] :   0<-->8,  1<-->9,  2<-->10,  3<-->11
              4<-->12, 5<-->13, 6<-->14,  7<-->15
      [3]:    0:  L at slot 0/2/4/6/8/10/12/14
                  R at slot 1/3/5/7/9/11/13/15
              1:  L at slot 0/1/2/3/4/5/6/7
                  R at slot 8/9/10/11/12/13/14/15
      

      示例:

      i2s-tx-tdm-ch-swap = <0 0 0 0>;
      
    • I2S tx 有效通道

      属性名称 描述 取值范围
      i2s-tx-tdm-active-slot 配置I2S tx 有效通道 0x00 ~ 0xFF (bit0->slot0, bit1->slot1, ... )
    • 高通滤波

      属性名称 描述 取值范围
      hpf-adc1-level 高通滤波level < switch value >
      switch:
      0:disable hpf
      1:enable hpf
      value: 0~1500 截止频率
      hpf-dmic-level 高通滤波level < switch value >
      switch:
      0:disable hpf
      1:enable hpf
      value: 0~1500 截止频率

      示例:

      hpf-adc1-level = <1 20>; // 启用adc1 的高通滤波器截止频率为20hz
      hpf-dmic-level = <1 20>; // 启用dmic 的高通滤波器截止频率为20hz
      

      对于截止频率参数的详细说明:

      HPF高通滤波器对于不同的采样率实际的截止频率参数有差异:
      48K 采样率下支持的截止频率是:
          20hz 23hz 26hz 32hz 38hz 52hz 65hz 95hz 140hz 190hz 250hz 370hz 480hz 700hz 980hz 1500hz
      32K 采样率下支持的截止频率是:
          13hz 15hz 17hz 21hz 25hz 34hz 43hz 63hz 93hz 126hz 166hz 246hz 320hz 466hz 633hz 1000hz
      16K 采样率下支持的截止频率是:
          6hz 7hz 8hz 10hz 12hz 17hz 21hz 31hz 46hz 63hz 83hz 123hz 160hz 233hz
          316hz 500hz
      8K 采样率下支持的截止频率是:
          3hz 4hz 5hz 6hz 8hz 10hz 15hz 23hz 31hz 41hz 61hz 80hz 116hz 158hz 250hz
      驱动会根据实际支持的参数找到不大于设定值的最大值
      例如:按照实例的参数配置 hpf-adc1-level = <1 20>; 48K 下实际的截止频率会是20hz, 32K 下实际的截止频率会是17hz, 16K 下实际的截止频率是17hz, 8K 下实际的截止频率是15hz
      PS:下图的实例波形 是针对48K采样率抓的
      

      HPF关闭 截止频率20Hz:

      HPF 0x0 截止频率20Hz:

      HPF 0x1 截止频率23Hz:

      HPF 0x2 截止频率26Hz:

      HPF 0x3 截止频率32Hz:

      HPF 0x4 截止频率38Hz:

      HPF 0x5 截止频率52Hz:

      HPF 0x6 截止频率65Hz:

      HPF 0x7 截止频率95Hz:

      HPF 0x8 截止频率140Hz:

      HPF 0x9 截止频率190Hz:

      HPF 0xA 截止频率250Hz:

      HPF 0xB 截止频率370Hz:

      HPF 0xC 截止频率480Hz:

      HPF 0xD 截止频率700Hz:

      HPF 0xE 截止频率950Hz:

      HPF 0xF 截止频率1500Hz:

      采样率与截止频率关系:

    • dmic bck mode

      属性名称 描述 取值范围
      dmic-bck-mode 配置BCK模式 0~11
      档位 采样率 BCK支持最大值
      0 NA no select
      1 8k 600kHz
      2 8k 1200kHz
      3 8k 2400kHz
      4 16k 800kHz
      5 16k 1200kHz
      6 16k 2400kHz
      7 16k 4800kHz
      8 32k 2400kHz
      9 32k 4800kHz
      10 48k 2400kHz
      11 48k 4800kHz

      示例:

      dmic-bck-mode = <3 6 9 11>; //2.4M, 2.4M, 4.8M, 4.8M
      四个参数分别表示8K 16K 32K 48K 采样率选择的BCK时钟
      当前的例子表示:采样率是8K 的情况下,bck是档位3,对照表格就是2.4Mhz
      采样率是16K 的情况下,bck 是档位6,对照表格就是2.4Mhz
      采样率是32K 的情况下,bck 是档位9,对照表格就是4.8Mhz
      采样率是48K 的情况下,bck 是档位11, 对照表格就是4.8Mhz
      注意:表格第二栏的采样率表示这个档位只有对应的采样率才能生效,比如8K采样率下只支持选择档位1,2,3;对应的BCK 是600khz 1.2mhz 和2.4mhz
      
    • dmic-bck-ext-mode

      属性名称 描述 取值范围
      dmic-bck-ext-mode dmic的时钟选择 0:使用dmic内部时钟
      1:使用I2S RX BCK,作为DMIC 时钟,用于和I2S同步
    • short-ff-mode

      属性名称 描述 取值范围
      i2s-rx-short-ff-mode 配置I2S延时多少个的BCK才发送MSB 0~3
      i2s-tx-short-ff-mode 配置I2S延时多少个的BCK才发送MSB 0~3
    • adc-out-sel

      属性名称 描述 取值范围
      adc-out-sel 选择amic的硬件实体 0:adc0(SDM_L)
      1:adc1(SDM_R)
      2:adc2(SDM_M)
      3:adc3

      示例:

      adc-out-sel = <0 1 2 2>; //ADC_A ch0对应amic0,ADC_A ch1对应amic1, ADC_B ch0/1对应amic2
      注意:iFackel 只有ADC_A 和ADC_B 不支持切换
      
    • keep_anolog_power_on

      属性名称 描述 取值范围
      keep_adc_power_on/keep_dac_power_on 是否保持adc/dac power常开,打开该配置可以省去adc/dac 启动的延时时间,但是会增加一定的额外功耗 0:不启用;1:保持adc/dac 电源常开
    • amp 功放引脚配置

      属性名称 描述 取值范围
      amp-pad 选择左右功放的pad脚和 高/低电平生效配置 gpiopad 0,1

      示例:

      amp-pad = <PAD_PWM_OUT0 1 PAD_PWM_OUT 1>;
      注意:pad 参数的选择为了统一管理都放到了padmux.dtsi 所以实例里面的
      参数1和参数3 PAD_PWM_OUT0 其实是不生效的,真正生效使用的PAD,放在padmux.dtsi
      MDRV_PUSE_AIO_AMP_PWR 字段里面; dts 这边生效的是参数2 和参数4;数值为1 表示高电平使能amp 数值为0 表示低电平使能amp