Edit online

编程指南

  1. 对于播放 48KHz、16bit 的音源数据,采用 S 格式进行传输,初始化配置如下:

    接口信号配置:

    • I2S_CTL 寄存器

      bclk_out = 1; // BCLK 为输出信号

      lrck_out = 1; //LRCK 为输出信号

      dout0_en = 1; //DOUT0 输出使能

    格式配置,I2S 格式:
    • I2S_CTL 寄存器

      mode_sel = 0x1; //I2S 模式

    • I2S_FMT0 寄存器

      lrck_polarity = 0x0; //LRCK 低电平为左声道,高电平为右声道

      lrck_period = 0x1f ; //在 S 模式下,左/右声道的数据时间长度,这里配置为 32 * BCLK

      bclk_polarity = 0x0; //DOUT 在 BCLK 的下降沿发送数据

      sr = 0x3; //采样点的数据精度为 16bit

      sw = 0x7; //通道位宽设定为 32bit,配置与 period 一致

    • I2S_FMT1 寄存器

      tx_mls = 0x0; //最高比特 MSB 先发送

      sext = 0x0; //在 sr < sw 的情况下,在低位补 0

      tx_pdm = 0x0; //线性 PCM 数据

    • I2S_TX0CHSEL 寄存器

      tx0_offset = 0x1; //1x BCLK 偏移,实现 S 格式

      tx0_chsel = 0x1; // TDM 采用 2x 通道,1 路通道作为左声道,1 路通道作为右声道

      tx0_chen = 0x3; //TDM 使能通道 0 和通道 1

    • I2S_TX0MAP1 寄存器

      tx0_ch0_map = 0x0; //通道 0 映射 FIFO 读取的第一个采样点,为左声道数据

      tx0_ch1_map = 0x1; //通道 0 映射 FIFO 读取的第二个样点,为右声道数据

  2. 对于播放 48KHz、16bit 的音源数据,采用 PCM 格式 Short Frame 进行传输,初始化配置如下:

    接口信号配置:

    • I2S_CTL 寄存器

      bclk_out = 1; // BCLK 为输出信号

      lrck_out = 1; //LRCK 为输出信号

      dout0_en = 1; //DOUT0 输出使能

    格式配置,PCM Short Frame 格式:
    • I2S_CTL 寄存器

      mode_sel = 0x0; //PCM 模式

    • I2S_FMT0 寄存器

      pcm_fmt = 0x0; //Short Frame 模式

      lrck_polarity = 0x0; //short Frame 模式下对应 LRCK 的下降沿触发数据传输

      lrck_period = 0x3F; //总的数据长度为 64x BCLK

      bclk_polarity = 0x0; //DOUT 在 BCLK 的下降沿发送数据

      sr = 0x3; //采样点的数据精度为 16bit

      sw = 0x7; //通道位宽设定为 32bit

    • I2S_FMT1 寄存器

      tx_mls = 0x0; //最高比特 MSB 先发送

      sext = 0x0; //在 sr < sw 的情况下,在低位补 0

      tx_pdm = 0x0; //线性 PCM 数据

    • I2S_TX0CHSEL 寄存器

      tx0_offset = 0x1; //1x BCLK 偏移

      tx0_chsel = 0x1; // TDM 采用 2x 通道,1 路通道作为左声道,1 路通道作为右声道

      tx0_chen = 0x3; //TDM 使能通道 0 和通道 1

    • I2S_TX0MAP1 寄存器

      tx0_ch0_map = 0x0; //通道 0 映射 FIFO 读取的第一个采样点,为左声道数据

      tx0_ch1_map = 0x1; //通道 0 映射 FIFO 读取的第二个样点,为右声道数据