跳转至

音频接口

AIAO

概述

音频输入输出接口AIAO(Audio Input/Audio Output),用于和片内或片外Audio Codec对接,完成音频数据的输入和输出,以实现录音、对讲、回放等功能。芯片内置1个AIAO,包含1个AIP(Audio Input Port)和2个AOP(Audio Output Port),支持立体声输入输出。AOP0和AOP1通过MUX选择输出实现与I2S管脚、内置Codec在芯片内部对接,基本模块框图如图1所示。

图 1 芯片 AIAO 框图

注:如果需要两路AOP只能同源输出

说明:

  • 图中黄色表示外置Codec相关通路部分
  • 图中紫色表示内置Codec相关通路
  • 图中灰色表示内部逻辑
  • 图中蓝色表示AIAO_MUX_SEL寄存器

特点

AIAO接口支持I2S和PCM(Pulse Code Modulation)两种模式和外置Codec对接。

  • AIAO接口支持I2S模式和内置Codec对接;内置Codec的寄存器配置参考Audio Codec 章节。
  • 接收(AIP0)和发送(AOP0/AOP1)均采用DMA操作,通过软件分配的循环缓冲区存取数据,循环缓冲区大小和水线可调。

  • PCM模式

  • I2S模式

PCM模式

PCM模式有如下特点:

  • 支持主模式和从模式。
  • 支持Normal模式下单声道8bit/16bit PCM数据的发送和接收。
  • 支持时分复用模式下2/4路8bit/16bit数据的PCM接收。
  • 支持8kHz~48kHz采样率。
  • PCM模式帧同步信号仅支持短脉冲同步信号(同步信号的持续时间为1个时钟周期),支持标准和自定义两种模式。
  • 接收(AIP0)和发送(AOP0/AOP1)相互独立,可以单独使能或关闭。
  • 接收(AIP0)和发送(AOP0/AOP1)均采用DMA操作,通过软件分配的循环缓冲区存取数据,循环缓冲区大小和水线可调。

I2S模式

I2S模式有如下特点:

  • 支持主模式和从模式。
  • AIP0支持Normal模式下1/2路16bit/24bit数据的接收
  • AIP0支持时分复用模式下2/4路8bit/16bit数据的接收
  • AOP0和AOP1支持1/2路16/24bit数据的发送。
  • 支持8kHz~48kHz采样率。
  • 接收(AIP0)和发送(AOP0/AOP1)相互独立,可以单独使能或关闭。
  • 接收(AIP0)和发送(AOP0/AOP1)均采用DMA操作,通过软件分配的循环缓冲区存取数据,循环缓冲区大小和水线可调。

功能描述

典型应用

芯片内置1个AIP和2个AOP,其中:

  • AIP0/AOP0/AOP1对接内置Audio Codec时,仅支持I2S主模式;
  • AIP0支持I2S/PCM主/从模式对接外置Audio Codec;
  • AOP0/AOP1支持I2S/PCM主/从模式对接外置Audio Codec。

图 1 AIP0与AOP0/AOP1通过I2S/PCM接口主/从模式对接外置ADC/DAC示意图

功能原理

AIP0通过I2S接收对接外置ADC或内置的Audio Codec进行AD(Analog-to-Digital)转换后的音频数据,存入为AIP0分配的循环缓冲区,然后由CPU取走并存储,从而完成录音功能。

AOP0/1从循环缓冲区中读取音频数据,然后按照设定的采样率,把音频数据通过I2S或PCM接口传送给外置DAC,或内置的Audio Codec进行DA(Digital-to-Analog)转换后进行声音播放。

对接外部I2S接口时,支持的I2S时序如图1。按照协议,用BCLK_TX/BCLK_RX时钟的下降沿发送数据,上升沿进行数据采样,MSB在WS_TX/WS_RX变化的下一个时钟周期有效。总是先传送MSB,后传送LSB。

图 1 I2S接口时序

PCM接口传输的数据是单声道数据,WS_TX/WS_RX标识数据的起始位置,先发送(接收)最高有效位MSB,使用时钟的上升沿发送数据,下降沿采样数据(时钟可反向)。标准模式时序中,MSB数据在WS_TX/WS_RX高电平脉冲之后一个周期有效;自定义模式时序中,MSB的位置根据PCM_OFFSET不同可调,当PCM_OFFSET为0时与WS_TX/WS_RX的高电平脉冲对齐的。

PCM接口标准模式下的时序如图2。

图 2 PCM接口标准模式时序(PCM_OFFSET =1)

PCM自定义模式时序如图3所示。

图 3 PCM接口自定义模式时序(PCM_OFFSET =0)

自定义模式时,数据与WS脉冲同拍开始发出。

I2S进行多路(2/4/路8/16bit)接收时,数据分别放于I2S时序的左右声道,如图4所示。

图 4 I2S 1/2/4路接收

注:1-channel模式仅在非时分复用时支持。

PCM模式下的多路接收,如图5所示(以上升沿为例)。支持PCM标准和自定义两种模式,AIAO可以选择数据采样时刻(上升沿或下降沿)接收。

图 5 PCM 1/2/4路接收,在256fs,offset=1时的示例

注:1-channel模式仅在非时分复用时支持。

工作方式

时钟门控及时钟配置

在使能AIAO进行录音或播放时,必须先打开AIAO中对应通道(AIP/AOP)的时钟门控。具体步骤如下:

  1. 在系统PERI_CRG10784寄存器中aiao_pll_cksel配置为0,选择2376MHz时钟源。
  2. 在系统PERI_CRG10784寄存器中,配置aiao_srst_req寄存器为0,解除AIAO复位,配置aiao_pll_cken、aiao_cken寄存器为1,打开时钟门控。
  3. 在AIAO中AIAO_MUX_SEL寄存器中,配置时钟和数据的MUX关系。
  4. 配置分频系数。

    配置AIAO寄存器的I2S_CRG_CFG0_00、I2S_CRG_CFG1_00/I2S_CRG_CFG0_08、I2S_CRG_CFG1_08/I2S_CRG_CFG0_09、I2S_CRG_CFG1_09。选择合适的分频系数。CRG和AIP、AOP的对应关系见图1。

软复位

AIAO内部的3个通道(AIP0、AOP0、AOP1)支持独立的软复位,当复位AIAO模块时,3条通道同时复位。

录音工作流程

录音步骤如下:(假设场景为I2S模式48kHz,2声道16bit精度,假设AIAO pll源头时钟为2376M,系统控制器AIAO时钟已经使能)。

  1. 配置I2S_CRG_CFG0_08寄存器为0x000A9778,此时第8路时钟输出mclk频率为12.288MHz。
  2. 配置I2S_CRG_CFG1_08寄存器为0x00000133,此时使能第8路时钟,同时把bclk配置为mclk的4分频,fclk配置为bclk的64分频,此时fclk频率为48kHz。
  3. 配置AIAO_SWITCH_RX_BCLK寄存器为0x00000008,此时设置接收通路选择工作在第8路时钟上面,也即上面配置好的时钟。
  4. 配置RX_IF_ATTRI为0xE4800014,此时设置接收通道工作在I2S模式下,2声道,采样精度为16bit。
  5. 配置RX_BUFF_SADDR_LOW寄存器为分配DDR的起始地址,比如0x80000000,配置 RX_BUFF_SIZE寄存器为分配DDR_BUF的大小,比如0x0000f000,配置RX_BUFF_WPTR寄存器和RX_BUFF_RPTR寄存器为0x0,初始化读写指针。配置RX_TRANS_SIZE寄存器,比如0x00000f00。
  6. 根据需要,使能接收通路相应的中断位,即配置寄存器RX_INT_ENA,比如配置为0x00000001,只使能trans_int中断。
  7. 配置寄存器RX_DSP_CTRL为0x10000000,使能接收通道,接收通道开始工作,录音开始。
  8. 通过读取RX_BUFF_WPTR和RX_BUFF_RPTR的值判断循环缓冲区的空/满状态以及有效数据量;要保证在循环缓冲区满之前将数据取走,并将更新后的循环缓冲区读地址写入RX_BUFF_RPTR,否则可能会造成循环缓冲区溢出,声音不连续。
  9. 录音完成后,写寄存器RX_DSP_CTRL为0x00000000,查询RX_DSP_CTRL寄存器,直到其值变为0x20000000(说明接收通道已停止工作),即可退出。

须知:

启动AIP0之前,必须完成AIP0时钟的配置,以保证AIAO_BCLK_RX和AIAO_WS_RX正常。

播放工作流程

AOP0、AOP1的工作流程相同,下面以AOP0为例进行说明。

播放步骤如下:(假设场景为I2S模式48kHz,2声道16bit精度,假设AIAO pll源头时钟为2376M,系统控制器AIAO时钟已经使能):

  1. 配置寄存器I2S_CRG_CFG0_08为0x000A9778,此时第8路时钟输出mclk频率为12.288MHz。
  2. 配置寄存器I2S_CRG_CFG1_08为0x00000133,此时使能第8路时钟,同时把bclk配置为mclk的4分频,fclk配置为bclk的64分频,此时fclk频率为48kHz。
  3. 配置AIAO_SWITCH_TX_BCLK寄存器为0x00000008,此时设置发送通路选择工作在第8路时钟上面,也即上面配置好的时钟。
  4. 配置TX_IF_ATTRI寄存器为0xE4000014,即配置发送接口工作于I2S模式下,2声道,16bit采样精度。
  5. 配置TX_BUFF_SADDR_LOW为分配BUF的起始地址,比如0x80000000,TX_BUFF_SIZE为分配BUF的大小,初始化TX_BUFF_WPTR为0x0,TX_BUFF_RPTR为0x0,设置TX_TRANS_SIZE。(这一步配置可以参考录音工作流程)
  6. 根据需要,使能接收通路相应的中断位,即配置寄存器TX_INT_ENA,比如配置为0x00000001,只使能trans_int中断。
  7. 配置寄存器TX_DSP_CTRL为0x10000000,使能播放通道。
  8. 通过读取TX_BUFF_WPTR和TX_BUFF_RPTR的值判断循环缓冲区的空/满状态以及有效数据量;要保证在循环缓冲区空之前将新的音频数据填入,并将更新后的循环缓冲区写地址写入TX_BUFF_WPTR,否则可能会造成循环缓冲区下溢出,声音不连续。
  9. 播放结束后,配置寄存器TX_DSP_CTRL为0x00000000,停止播放通道,查询TX_DSP_CTRL寄存器,当其值变为0x20000000时(说明播放通道已停止工作),即可退出。

须知:

启动AOP0前,必须完成AOP0时钟的配置,以保证AIAO_BCLK_TX和AIAO_WS_TX正常,对AOP1有相同要求。 向AOP0的循环缓冲区写入数据以及更新TX_BUFF_WPTR时,必须保证AOP0的循环缓冲区空闲空间不小于32字节,对AOP1有相同要求。

AIAO寄存器概览

各模块的寄存器偏移地址中变量的取值范围和含义如表1所示。

表 1 各模块的寄存器偏移地址变量表

变量名称

取值范围

描述

m

0

发送通道号

n

0

接收通道号

AIAO寄存器概览如表2所示。

表 2 AIAO寄存器概览(基址是0x17C0_0000)

偏移地址

名称

描述

0x0000

AIAO_INT_ENA

AIAO模块中断使能寄存器

0x0004

AIAO_INT_STATUS

AIAO模块中断状态寄存器

0x0008

AIAO_INT_RAW

AIAO模块原始中断寄存器

0x0028

AIAO_SWITCH_RX_BCLK

AIAO I2S RX BCLK SWITCH 配置寄存器

0x002C

AIAO_SWITCH_TX_BCLK

AIAO I2S TX BCLK SWITCH 配置寄存器

0x0030

AIAO_STATUS

AIAO状态寄存器

0x006C

AIAO_MUX_SEL

I2S通路选择控制寄存器

0x0100

I2S_CRG_CFG0_00

I2S00 CRG 配置0号寄存器

0x0104

I2S_CRG_CFG1_00

I2S00 CRG 配置1号寄存器

0x0140

I2S_CRG_CFG0_08

I2S08 CRG 配置0号寄存器

0x0144

I2S_CRG_CFG1_08

I2S08 CRG 配置1号寄存器

0x0148

I2S_CRG_CFG0_09

I2S09 CRG 配置0号寄存器

0x014C

I2S_CRG_CFG1_09

I2S09 CRG 配置1号寄存器

0x1000+0x100×n

RX_IF_ATTRI

接收通道的接口属性设置寄存器

0x1004+0x100×n

RX_DSP_CTRL

接收处理通道的控制寄存器

0x1080+0x100×n

RX_BUFF_SADDR_LOW

接收通道的DDR缓存起始地址寄存器

0x1084+0x100×n

RX_BUFF_SIZE

接收通道的DDR缓存大小寄存器

0x1088+0x100×n

RX_BUFF_WPTR

接收通道的DDR缓存写地址寄存器

0x108C+0x100×n

RX_BUFF_RPTR

接收通道的DDR缓存读地址寄存器

0x1090+0x100×n

RX_BUFF_ALFULL_TH

接收通道的DDR缓存几乎满水线寄存器

0x1094+0x100×n

RX_TRANS_SIZE

接收通道的数据传输长度寄存器

0x1098+0x100×n

RX_WPTR_TMP

上报传输完成中断时,保存接收通道的写地址寄存器

0x10A0+0x100×n

RX_INT_ENA

接收通道的中断使能寄存器

0x10A4+0x100×n

RX_INT_RAW

接收通道的原始中断寄存器

0x10A8+0x100×n

RX_INT_STATUS

接收通道的中断状态寄存器

0x10AC+0x100×n

RX_INT_CLR

接收通道的中断清除寄存器

0x2000+0x100×m

TX_IF_ATTRI

发送通道的接口属性设置寄存器

0x2004+0x100×m

TX_DSP_CTRL

发送处理通道的控制寄存器

0x2020+0x100×m

TX_WS_CNT

发送处理通道的ws循环计数状态寄存器

0x2024+0x100×m

TX_BCLK_CNT

发送处理通道的bclk循环计数状态寄存器

0x2080+0x100×m

TX_BUFF_SADDR_LOW

发送通道的DDR缓存起始地址寄存器

0x2084+0x100×m

TX_BUFF_SIZE

发送通道的DDR缓存大小寄存器

0x2088+0x100×m

TX_BUFF_WPTR

发送通道的DDR缓存写地址寄存器

0x208C+0x100×m

TX_BUFF_RPTR

发送通道的DDR缓存读地址寄存器

0x2090+0x100×m

TX_BUFF_ALEMPTY_TH

发送通道的DDR缓存几乎空水线寄存器

0x2094+0x100×m

TX_TRANS_SIZE

发送通道的数据传输长度寄存器

0x2098+0x100×m

TX_RPTR_TMP

上报传输完成中断时,保存发送通道的读地址寄存器

0x20A0+0x100×m

TX_INT_ENA

发送通道的中断使能寄存器

0x20A4+0x100×m

TX_INT_RAW

发送通道的原始中断寄存器

0x20A8+0x100×m

TX_INT_STATUS

发送通道的中断状态寄存器

0x20AC+0x100×m

TX_INT_CLR

发送通道的中断清除寄存器

AIAO寄存器描述

说明:

寄存器描述中的BCLK是位时钟;MCLK是主时钟;FSCLK是采样时钟。

AIAO_INT_ENA

AIAO_INT_ENA为AIAO模块中断使能寄存器。

Offset Address: 0x0000 Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:17]

-

reserved

保留。

0x0000

[16]

RW

tx_ch0_int_ena

发送通道0的中断使能。

0:不使能;

1:使能。

0x0

[15:1]

-

reserved

保留。

0x0000

[0]

RW

rx_ch0_int_ena

接收通道0的中断使能。

0:不使能;

1:使能。

0x0

AIAO_INT_STATUS

AIAO_INT_STATUS为AIAO模块中断状态寄存器。

Offset Address: 0x0004 Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:17]

-

reserved

保留。

0x0000

[16]

RO

tx_ch0_int_status

发送通道0的中断状态。

0:无中断状态;

1:有中断状态。

0x0

[15:1]

-

reserved

保留。

0x0000

[0]

RO

rx_ch0_int_status

接收通道0的中断状态。

0:无中断状态;

1:有中断状态。

0x0

AIAO_INT_RAW

AIAO_INT_RAW为AIAO模块原始中断寄存器。

Offset Address: 0x0008 Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:17]

-

reserved

保留。

0x0000

[16]

RO

tx_ch0_int_raw

发送通道0的原始中断。

0:无原始中断;

1:有原始中断。

0x0

[15:1]

-

reserved

保留。

0x0000

[0]

RO

rx_ch0_int_raw

接收通道0的原始中断。

0:无原始中断;

1:有原始中断。

0x0

AIAO_SWITCH_RX_BCLK

AIAO_SWITCH_RX_BCLK为AIAO I2S RX BCLK SWITCH 配置寄存器。

Offset Address: 0x0028 Total Reset Value: 0x0000_0070

Bits

Access

Name

Description

Reset

[31:4]

-

reserved

保留。

0x0000007

[3:0]

RW

inner_bclk_ws_sel_rx_00

内部bclk选择:

0x0:选择bclk0;

0x8:选择bclk8;

0x9:选择bclk9;

其他:保留。

0x0

AIAO_SWITCH_TX_BCLK

AIAO_SWITCH_TX_BCLK为AIAO I2S TX BCLK SWITCH 配置寄存器。

Offset Address: 0x002C Total Reset Value: 0x0000_00F8

Bits

Access

Name

Description

Reset

[31:4]

-

reserved

保留。

0x000000F

[3:0]

RW

inner_bclk_ws_sel_tx_00

内部bclk选择:

0x0:选择bclk0;

0x8:选择bclk8;

0x9:选择bclk9;

其他:保留。

0x8

AIAO_STATUS

AIAO_STATUS为AIAO状态寄存器。

Offset Address: 0x0030 Total Reset Value: 0x0000_0001

Bits

Access

Name

Description

Reset

[31:1]

-

reserved

保留。

0x00000000

[0]

RO

srst_rdy

APB复位撤销指示。

0:正在复位;

1:复位完成。

0x1

AIAO_MUX_SEL

AIAO_MUX_SEL为I2S通路选择控制寄存器。

Offset Address: 0x006C Total Reset Value: 0x0003_9000

Bits

Access

Name

Description

Reset

[31:23]

-

reserved

保留。

0x000

[22]

RW

crg9_mode_sel

crg9主模式下fsclk产生模式控制位。

0:i2s模式;

1:pcm模式;

0x0

[21:18]

RW

i2s1_tx_sd_src_sel

tx1_sd的source 选择。

0x0:I2S TX0

0x8:I2S RX0

0x9:I2S RX1

其他:保留。

0x0

[17:16]

RW

i2s1_tx_sd3_sel

tx1_sd的sd3选择。

00:sd0;

01:sd1;

10:sd2;

11:sd3。

注意:先选择通道,然后选择数据线。

0x3

[15:14]

RW

i2s1_tx_sd2_sel

tx1_sd的sd2选择。

00:sd0;

01:sd1;

10:sd2;

11:sd3。

注意:先选择通道,然后选择数据线。

0x2

[13:12]

RW

i2s1_tx_sd1_sel

tx1_sd的sd1选择。

00:sd0;

01:sd1;

10:sd2;

11:sd3。

注意:先选择通道,然后选择数据线。

0x1

[11:10]

RW

i2s1_tx_sd0_sel

tx1_sd的sd0选择。

00:sd0;

01:sd1;

10:sd2;

11:sd3。

注意:先选择通道,然后选择数据线。

0x0

[9:5]

-

reserved

保留。

0x00

[4]

RW

codec_tx_sel

DAC输入数据和时钟选择控制。

0:tx0_sd、crg8;

1:tx1_sd、crg9。

0x0

[3]

RW

audio_mclk_sel

芯片i2s接口的mclk选择控制。

0:aiao_i2s_rx_mclk,即crg0;

1:aiao_i2s_tx_mclk,即crg8或crg9,具体选crg8或者crg9要通过codec_tx_sel来配合选择

0x0

[2]

RW

rx_sd_sel

rx0_sd数据源选择。

0:I2S管脚;

1:内置codec_ADC的iis_sd输出。

0x0

[1]

RW

audio_rx_bclk_sel

内置codec_ADC的bclk/ws选择。

0:选择crg0的时钟

1:选择crg8或者crg9的时钟,这种情况下,adc和dac共时钟,具体选crg8或crg9要通过codec_tx_sel来配合选择

0x0

[0]

RW

pad_tx_en

iis_tx0输出管脚数据和时钟选择控制。

0:tx1_sd、crg9;

1:tx0_sd、crg8;

0x0

I2S_CRG_CFG0_00

I2S_CRG_CFG0_00为I2S00 CRG 配置0号寄存器。

Offset Address: 0x0100 Total Reset Value: 0x00AA_AAAA

Bits

Access

Name

Description

Reset

[31:27]

-

reserved

保留。

0x00

[26:0]

RW

aiao_mclk_div

mclk的分频时钟配置值,配置值为(MCLK/SIO时钟源频率)×2^27。

0x0AAAAAA

I2S_CRG_CFG1_00

I2S_CRG_CFG1_00为I2S00 CRG 配置1号寄存器。

Offset Address: 0x0104 Total Reset Value: 0x0000_0131

Bits

Access

Name

Description

Reset

[31:16]

-

reserved

保留。

0x0000

[15]

RW

aiao_ws_en

WS使能。

0:不使能;

1:使能。

0x0

[14]

RW

aiao_bclk_en

BCLK使能。

0:不使能;

1:使能。

0x0

[13]

RW

aiao_bclkout_pctrl

BCLKOUT的极性控制。

0:正向;

1:反向。

0x0

[12]

RW

aiao_bclkin_pctrl

BCLKIN的极性控制。

0:正向;

1:反向。

0x0

[11]

RW

aiao_bclk_sel

BCLK/FSCLK选择。

0:时钟从内部产生;

1:时钟从外部输入。

0x0

[10]

RW

aiao_bclk_oen

BCLK/FSCLK IO oen控制。

0:BCLK/FSCLK IO 为输出;

1:BCLK/FSCLK IO 为输入。

注意:需要和aiao_bclk_sel配对使用,实现I2S接口主从模式选择。

0x0

[9]

RW

aiao_srst_req

软复位请求。

0:撤消复位;

1:复位。

0x0

[8]

RW

aiao_cken

时钟状态。

0:关闭;

1:打开。

0x1

[7]

-

reserved

保留。

0x0

[6:4]

RW

aiao_fsclk_div

位时钟BCLK与采样时钟FSCLK的分频关系。

000:FSCLK是BCLK的16分频;

001:FSCLK是BCLK的32分频;

010:FSCLK是BCLK的48分频;

011:FSCLK是BCLK的64分频;

100:FSCLK是BCLK的128分频;

101:FSCLK是BCLK的256分频;

其他:FSCLK是BCLK的8分频。

0x3

[3:0]

RW

aiao_bclk_div

主时钟MCLK与位时钟BCLK分频关系。

0x0:BCLK是MCLK的1分频;

0x1:BCLK是MCLK的3分频;

0x2:BCLK是MCLK的2分频;

0x3:BCLK是MCLK的4分频;

0x4:BCLK是MCLK的6分频;

0x5:BCLK是MCLK的8分频;

0x6:BCLK是MCLK的12分频;

0x7:BCLK是MCLK的16分频;

0x8:BCLK是MCLK的24分频;

0x9:BCLK是MCLK的32分频;

0xA:BCLK是MCLK的48分频;

0xB:BCLK是MCLK的64分频;

其他:BCLK是MCLK的8分频。

0x1

I2S_CRG_CFG0_08

I2S_CRG_CFG0_08为I2S08 CRG 配置0号寄存器。

Offset Address: 0x0140 Total Reset Value: 0x00AA_AAAA

Bits

Access

Name

Description

Reset

[31:27]

-

reserved

保留。

0x00

[26:0]

RW

aiao_mclk_div

mclk的分频时钟配置值,配置值为(MCLK/SIO时钟源频率)×2^27。

0x0AAAAAA

I2S_CRG_CFG1_08

I2S_CRG_CFG1_08为I2S08 CRG 配置1号寄存器。

Offset Address: 0x0144 Total Reset Value: 0x0000_0131

Bits

Access

Name

Description

Reset

[31:16]

-

reserved

保留。

0x0000

[15]

RW

aiao_ws_en

WS使能。

0:不使能;

1:使能。

0x0

[14]

RW

aiao_bclk_en

BCLK使能。

0:不使能;

1:使能。

0x0

[13]

RW

aiao_bclkout_pctrl

BCLKOUT的极性控制。

0:正向;

1:反向。

0x0

[12]

RW

aiao_bclkin_pctrl

BCLKIN的极性控制。

0:正向;

1:反向。

0x0

[11]

RW

aiao_bclk_sel

BCLK/FSCLK选择。

0:时钟从内部产生;

1:时钟从外部输入。

0x0

[10]

RW

aiao_bclk_oen

BCLK/FSCLK IO oen控制。

0:BCLK/FSCLK IO 为输出;

1:BCLK/FSCLK IO 为输入。

注意:需要和aiao_bclk_sel配对使用,实现I2S接口主从模式选择。

0x0

[9]

RW

aiao_srst_req

软复位请求。

0:撤消复位;

1:复位。

0x0

[8]

RW

aiao_cken

时钟状态。

0:关闭;

1:打开。

0x1

[7]

-

reserved

保留

0x0

[6:4]

RW

aiao_fsclk_div

位时钟BCLK与采样时钟FSCLK的分频关系。

000:FSCLK是BCLK的16分频;

001:FSCLK是BCLK的32分频;

010:FSCLK是BCLK的48分频;

011:FSCLK是BCLK的64分频;

100:FSCLK是BCLK的128分频;

101:FSCLK是BCLK的256分频;

其他:FSCLK是BCLK的8分频。

0x3

[3:0]

RW

aiao_bclk_div

主时钟MCLK与位时钟BCLK分频关系。

0x0:BCLK是MCLK的1分频;

0x1:BCLK是MCLK的3分频;

0x2:BCLK是MCLK的2分频;

0x3:BCLK是MCLK的4分频;

0x4:BCLK是MCLK的6分频;

0x5:BCLK是MCLK的8分频;

0x6:BCLK是MCLK的12分频;

0x7:BCLK是MCLK的16分频;

0x8:BCLK是MCLK的24分频;

0x9:BCLK是MCLK的32分频;

0xA:BCLK是MCLK的48分频;

0xB:BCLK是MCLK的64分频;

其他:BCLK是MCLK的8分频。

0x1

I2S_CRG_CFG0_09

I2S_CRG_CFG0_09为I2S09 CRG 配置0号寄存器。

Offset Address: 0x0148 Total Reset Value: 0x00AA_AAAA

Bits

Access

Name

Description

Reset

[31:27]

-

reserved

保留。

0x00

[26:0]

RW

aiao_mclk_div

mclk的分频时钟配置值,配置值为(MCLK/SIO时钟源频率)×2^27。

0x0AAAAAA

I2S_CRG_CFG1_09

I2S_CRG_CFG1_09为I2S09 CRG 配置1号寄存器。

Offset Address: 0x014C Total Reset Value: 0x0000_0131

Bits

Access

Name

Description

Reset

[31:16]

-

reserved

保留。

0x0000

[15]

RW

aiao_ws_en

WS使能。

0:不使能;

1:使能。

0x0

[14]

RW

aiao_bclk_en

BCLK使能。

0:不使能;

1:使能。

0x0

[13]

RW

aiao_bclkout_pctrl

BCLKOUT的极性控制。

0:正向;

1:反向。

0x0

[12]

RW

aiao_bclkin_pctrl

BCLKIN的极性控制。

0:正向;

1:反向。

0x0

[11]

RW

aiao_bclk_sel

BCLK/FSCLK选择。

0:时钟从内部产生;

1:时钟从外部输入。

0x0

[10]

RW

aiao_bclk_oen

BCLK/FSCLK IO oen控制。

0:BCLK/FSCLK IO为输出;

1:BCLK/FSCLK IO为输入。

注意:需要和aiao_bclk_sel配对使用,实现I2S接口主从模式选择。

0x0

[9]

RW

aiao_srst_req

软复位请求。

0:撤消复位;

1:复位。

0x0

[8]

RW

aiao_cken

时钟状态。

0:关闭;

1:打开。

0x1

[7]

-

reserved

保留

0x0

[6:4]

RW

aiao_fsclk_div

位时钟BCLK与采样时钟FSCLK的分频关系。

000:FSCLK是BCLK的16分频;

001:FSCLK是BCLK的32分频;

010:FSCLK是BCLK的48分频;

011:FSCLK是BCLK的64分频;

100:FSCLK是BCLK的128分频;

101:FSCLK是BCLK的256分频;

其他:FSCLK是BCLK的8分频。

0x3

[3:0]

RW

aiao_bclk_div

主时钟MCLK与位时钟BCLK分频关系。

0x0:BCLK是MCLK的1分频;

0x1:BCLK是MCLK的3分频;

0x2:BCLK是MCLK的2分频;

0x3:BCLK是MCLK的4分频;

0x4:BCLK是MCLK的6分频;

0x5:BCLK是MCLK的8分频;

0x6:BCLK是MCLK的12分频;

0x7:BCLK是MCLK的16分频;

0x8:BCLK是MCLK的24分频;

0x9:BCLK是MCLK的32分频;

0xA:BCLK是MCLK的48分频;

0xB:BCLK是MCLK的64分频;

其他:BCLK是MCLK的8分频。

0x1

RX_IF_ATTRI

RX_IF_ATTRI为接收通道的接口属性设置寄存器。

Offset Address: 0x1000+0x100×n Total Reset Value: 0xE408_0004

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0xE4

[23:20]

RW

rx_sd_source_sel

sd0,sd1,sd2,sd3 source 选择。

0x0:I2S TX0

0x1:I2S TX1

…

0x7:I2S TX7

0x8:I2S RX0

0x9:I2S RX1

…

0xF:I2S RX7

0x0

[19]

-

reserved

保留。

0x1

[18:16]

RW

rx_trackmode

I2S模式下,左右声道模式控制。

000:不做处理;

001:两个声道全部为左声道声音;

010:两个声道全部为右声道声音;

011:两个声道互换;

100:左右两个声道输出为左右声道相加;

101:左声道静音,右声道播放原右声道声音;

110:右声道静音,左声道播放原左声道声音;

111:左右声道静音。

注意:单声道接收时,trackmode仍然有效。

0x0

[15:8]

RW

rx_sd_offset

PCM模式下,数据相对帧同步信号延迟n个BCLK周期。

0x00:0 bit clocks

0x01:1 bit clocks

0x02:2 bit clocks

…

0xFE:254 bitclocks

0xFF:255 bitclocks

0x00

[7]

RW

rx_multislot_en

时分复用有效指示位。

0:时分复用模式无效,属于正常模式;

1:时分复用模式有效。

0x0

[6]

-

reserved

保留。

0x0

[5:4]

RW

rx_ch_num

接收的路数选择

rx_multislot_en = 0

00:1路(ch)接收;(sd0数据线)

01:2路(ch)接收;(sd0数据线)

其他:保留;

rx_multislot_en = 1

分时复用方式下,接收的路数选择。

00:2路接收;(sd0数据线)

01:4路接收;(sd0数据线)

其他:保留

注意:多路接收时,只用第0根数据线sd0。

0x0

[3:2]

RW

rx_i2s_precision

数据采样精度配置位。

I2S模式。

01:16bit;

10:24bit;

其他:保留。

PCM模式。

01:16bit;

其他:保留。

0x1

[1:0]

RW

rx_mode

接收通道的接口模式选择。

00:I2S模式;

01:PCM模式;

其他:保留。

0x0

RX_DSP_CTRL

RX_DSP_CTRL为接收处理通道的控制寄存器。

Offset Address: 0x1004+0x100×n Total Reset Value: 0x2000_0000

Bits

Access

Name

Description

Reset

[31:30]

-

reserved

保留。

0x0

[29]

RO

rx_disable_done

接收通道的停止完成标识位。

0:disable未完成;

1:disable完成。

0x1

[28]

RW

rx_enable

接收通道的启动、停止指示位。

0:停止;

1:启动。

0x0

[27]

RW

bypass_en

运算处理bypass,控制功能仍然生效。

0:bypass功能关闭;

1:bypass功能打开;trackmode功能被bypass

0x0

[26:0]

-

reserved

保留。

0x0000000

RX_BUFF_SADDR_LOW

RX_BUFF_SADDR_LOW为接收通道的DDR缓存起始地址寄存器。

Offset Address: 0x1080+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:0]

RW

rx_buff_saddr_low

接收通道的DDR缓存起始地址,以字节为单位。

0x00000000

RX_BUFF_SIZE

RX_BUFF_SIZE为接收通道的DDR缓存大小寄存器。

Offset Address: 0x1084+0x100×n Total Reset Value: 0x0000_0032

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

rx_buff_size

接收通道的DDR缓存大小,以字节为单位。

注意:要求rx_buff_size是32字节的整数倍。

0x000032

RX_BUFF_WPTR

RX_BUFF_WPTR为接收通道的DDR缓存写地址寄存器。

Offset Address: 0x1088+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

rx_buff_wptr

接收通道的DDR缓存写地址,以字节为单位。

注意:

  1. 接收方向的写地址由逻辑维护,是相对于DDR缓存起始地址的偏移地址。
  2. 要求128×2比特对齐。软件低4bit不可用。

0x000000

RX_BUFF_RPTR

RX_BUFF_RPTR为接收通道的DDR缓存读地址寄存器。

Offset Address: 0x108C+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

rx_buff_rptr

接收通道的DDR缓存读地址,以字节为单位。

注意:

  1. 接收方向的读地址由软件维护,是相对于DDR缓存起始地址的偏移地址。
  2. 软件按照字节为单位,硬件内部按照32字节对齐操作。

0x000000

RX_BUFF_ALFULL_TH

RX_BUFF_ALFULL_TH为接收通道的DDR缓存几乎满水线寄存器。

Offset Address: 0x1090+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

rx_buff_alfull_th

接收通道的DDR缓存几乎满水线,以字节为单位。当DDR缓存可写空间小于几乎满水线时,产生几乎满原始中断。

注意:如果使用rx_alfull_int中断,要求rx_buff_alfull_th配置为16字节的整数倍,且大于或等于0x40。

0x000000

RX_TRANS_SIZE

RX_TRANS_SIZE为接收通道的数据传输长度寄存器。

Offset Address: 0x1094+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

rx_trans_size

接收通道,当完成rx_trans_size长度(以字节为单位)的音频数据接收时,产生传输完成中断。

0x000000

RX_WPTR_TMP

RX_WPTR_TMP为上报传输完成中断时,保存接收通道的写地址寄存器。

Offset Address: 0x1098+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RO

rx_wptr_tmp

上报传输完成中断时,保存接收通道的写地址,以字节为单位。

0x000000

RX_INT_ENA

RX_INT_ENA为接收通道的中断使能寄存器。

Offset Address: 0x10A0+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:8]

-

reserved

保留。

0x000000

[7]

RW

rx_if_full_lost_int_ena

接收通道的接口数据满,导致数据丢失的原始中断使能。

0:不使能;

1:使能。

0x0

[6]

-

reserved

保留。

0x0

[5]

RW

rx_stop_int_ena

接收通道的停止中断使能。

0:不使能;

1:使能。

0x0

[4]

RW

rx_ififo_full_int_ena

接收通道的接口fifo上溢中断使能。

0:不使能;

1:使能。

0x0

[3]

RW

rx_bfifo_full_int_ena

接收通道的总线fifo上溢中断使能。

0:不使能;

1:使能。

0x0

[2]

RW

rx_alfull_int_ena

接收通道的DDR缓存几乎满中断使能。

0:不使能;

1:使能。

0x0

[1]

RW

rx_full_int_ena

接收通道的DDR缓存满中断使能。

0:不使能;

1:使能。

0x0

[0]

RW

rx_trans_int_ena

接收通道的传输完成中断使能。

0:不使能;

1:使能。

0x0

RX_INT_RAW

RX_INT_RAW为接收通道的原始中断寄存器。

Offset Address: 0x10A4+0x100×n Total Reset Value: 0x0000_0020

Bits

Access

Name

Description

Reset

[31:8]

-

reserved

保留。

0x000000

[7]

RO

rx_if_full_lost_int_raw

接收通道的接口数据满,导致数据丢失的原始中断。

0:无原始中断;

1:有原始中断。

0x0

[6]

-

reserved

保留。

0x0

[5]

RO

rx_stop_int_raw

接收通道的停止原始中断。

0:无原始中断;

1:有原始中断。

0x1

[4]

-

reserved

保留。

0x0

[3]

RO

rx_fifo_full_int_raw

接收通道的总线fifo上溢原始中断。

0:无原始中断;

1:有原始中断。

0x0

[2]

RO

rx_alfull_int_raw

接收通道的DDR缓存几乎满原始中断。

0:无原始中断;

1:有原始中断。

0x0

[1]

RO

rx_full_int_raw

接收通道的DDR缓存满原始中断。

0:无原始中断;

1:有原始中断。

0x0

[0]

RO

rx_trans_int_raw

接收通道的传输完成原始中断。

0:无原始中断;

1:有原始中断。

0x0

RX_INT_STATUS

RX_INT_STATUS为接收通道的中断状态寄存器。

Offset Address: 0x10A8+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:8]

-

reserved

保留。

0x000000

[7]

RO

rx_if_full_lost_int_status

接收通道的接口数据满,导致数据丢失的中断状态。

0:无中断状态;

1:有中断状态。

0x0

[6]

-

reserved

保留。

0x0

[5]

RO

rx_stop_int_status

接收通道的停止中断状态。

0:无中断状态;

1:有中断状态。

0x0

[4]

RO

rx_ififo_full_int_status

接收通道的接口fifo上溢中断状态。

0:无中断状态;

1:有中断状态。

0x0

[3]

RO

rx_bfifo_full_int_status

接收通道的总线fifo上溢中断状态。

0:无中断状态;

1:有中断状态。

0x0

[2]

RO

rx_alfull_int_status

接收通道的DDR缓存几乎满中断状态。

0:无中断状态;

1:有中断状态。

0x0

[1]

RO

rx_full_int_status

接收通道的DDR缓存满中断状态。

0:无中断状态;

1:有中断状态。

0x0

[0]

RO

rx_trans_int_status

接收通道的传输完成中断状态。

0:无中断状态;

1:有中断状态。

0x0

RX_INT_CLR

RX_INT_CLR为接收通道的中断清除寄存器。

Offset Address: 0x10AC+0x100×n Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:8]

-

reserved

保留。

0x000000

[7]

RW

rx_if_full_lost_int_clear

接收通道的接口数据满丢失中断清除。

0:不清除;

1:清除。

0x0

[6]

-

reserved

保留。

0x0

[5]

RW

rx_stop_int_clear

接收通道的停止中断清除位。

0:不清除;

1:清除。

0x0

[4]

RW

rx_ififo_full_int_clear

接收通道的接口fifo上溢中断清除位。

0:不清除;

1:清除。

0x0

[3]

RW

rx_bfifo_full_int_clear

接收通道的总线fifo上溢中断清除位。

0:不清除;

1:清除。

0x0

[2]

RW

rx_alfull_int_clear

接收通道的DDR缓存几乎满中断清除位。

0:不清除;

1:清除。

0x0

[1]

RW

rx_full_int_clear

接收通道的DDR缓存满中断清除位。

0:不清除;

1:清除。

0x0

[0]

WO

rx_trans_int_clear

接收通道的传输完成中断清除位。

0:不清除;

1:清除。

0x0

TX_IF_ATTRI

TX_IF_ATTRI为发送通道的接口属性设置寄存器。

Offset Address: 0x2000+0x100×m Total Reset Value: 0xE400_0004

Bits

Access

Name

Description

Reset

[31:30]

-

reserved

保留。

0x3

[29:28]

-

reserved

保留。

0x2

[27:26]

-

reserved

保留。

0x1

[25:24]

-

reserved

保留。

0x0

[23:20]

RW

tx_sd_source_sel

sd0,sd1,sd2,sd3 source 选择。

0x0:I2S TX0

0x1:I2S TX1

…

0x7:I2S TX7

0x8:I2S RX0

0x9:I2S RX1

…

0xF:I2S RX7

0x0

[19]

-

reserved

保留。

0x0

[18:16]

RW

tx_trackmode

I2S模式下,左右声道模式控制。

000:不做处理;

001:两个声道全部为左声道声音;

010:两个声道全部为右声道声音;

011:两个声道互换;

100:左右两个声道输出为左右声道相加;

101:左声道静音,右声道播放原右声道声音;

110:右声道静音,左声道播放原左声道声音;

111:左右声道静音。

注意:单声道接收时,trackmode仍然有效。

0x0

[15:8]

RW

tx_sd_offset

PCM模式下,数据相对帧同步信号延迟n个BCLK周期。

0x00:0 bit clocks

0x01:1 bit clocks

0x02:2 bit clocks

…

0xFE:254 bitclocks

0xFF:255 bitclocks

0x00

[7]

RO

reserved

保留。

0x0

[6]

RO

reserved

保留。

0x0

[5:4]

RW

tx_ch_num

发送路数选择。

00:1路发送;

01:2路发送;

其他:保留。

0x0

[3:2]

RW

tx_i2s_precision

数据采样精度配置位。

I2S正常模式:

00:保留;

01:16bit;

10:24bit;

11:保留。

PCM正常模式:

01:16bit;

其他:保留。

0x1

[1:0]

RW

tx_mode

发送通道的接口模式选择。

00:I2S模式;

01:PCM模式;

其他:保留。

0x0

TX_DSP_CTRL

TX_DSP_CTRL为发送处理通道的控制寄存器。

Offset Address: 0x2004+0x100×m Total Reset Value: 0x2000_0000

Bits

Access

Name

Description

Reset

[31:30]

-

reserved

保留。

0x0

[29]

RO

tx_disable_done

发送通道的停止完成标识。

0:未完成;

1:完成。

0x1

[28]

RW

tx_enable

发送通道的启动、停止指示位。

0:停止;

1:启动。

0x0

[27]

RW

bypass_en

运算处理bypass,控制功能仍然生效。

0:bypass功能关闭;

1:bypass功能打开;音量控制,trackmode,淡入淡出,等功能被bypass。

0x0

[26:24]

-

reserved

保留。

0x0

[23:20]

RW

fade_out_rate

淡出速度。

0x0:1 个采样点改变一次;

0x1:2 个采样点改变一次;

0x2:4 个采样点改变一次;

0x3:8 个采样点改变一次;

0x4:16个采样点改变一次;

0x5:32个采样点改变一次;

0x6:64个采样点改变一次;

0x7:128个采样点改变一次;

其他:保留。

0x0

[19:16]

RW

fade_in_rate

淡入速度。

0x0:1 个采样点改变一次;

0x1:2 个采样点改变一次;

0x2:4 个采样点改变一次;

0x3:8 个采样点改变一次;

0x4:16个采样点改变一次;

0x5:32个采样点改变一次;

0x6:64个采样点改变一次;

0x7:128个采样点改变一次;

其他:保留。

0x0

[15]

-

reserved

保留。

0x0

[14:8]

RW

volume

音量。

0x00~0x28:静音;

0x29:–80dB;

……

0x7E:+5dB;

0x7F:+6dB。

0x00

[7:2]

-

reserved

保留。

0x00

[1]

RW

mute_fade_en

静音淡入淡出控制。

0:淡入淡出功能关闭;

1:淡入淡出功能打开。

0x0

[0]

RW

mute_en

静音控制。

0:静音撤销;

1:静音使能。

0x0

TX_WS_CNT

TX_WS_CNT为发送处理通道的ws循环计数状态寄存器。

Offset Address: 0x2020+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RO

ws_count

fsclk循环计数寄存器。

计数单位:fsclk。

0x000000

TX_BCLK_CNT

TX_BCLK_CNT为发送处理通道的bclk循环计数状态寄存器。

Offset Address: 0x2024+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RO

bclk_count

bclk循环计数寄存器。

计数单位:bclk。

0x000000

TX_BUFF_SADDR_LOW

TX_BUFF_SADDR_LOW为发送通道的DDR缓存起始地址寄存器。

Offset Address: 0x2080+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:0]

RW

tx_buff_saddr_low

发送通道的DDR缓存起始地址,以字节为单位。

注意:DDR缓存起始地址要求128×2比特对齐。

0x00000000

TX_BUFF_SIZE

TX_BUFF_SIZE为发送通道的DDR缓存大小寄存器。

Offset Address: 0x2084+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

tx_buff_size

发送通道的DDR缓存大小,以字节为单位。

注意:要求tx_buff_size是32字节的整数倍。

0x000000

TX_BUFF_WPTR

TX_BUFF_WPTR为发送通道的DDR缓存写地址寄存器。

Offset Address: 0x2088+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

tx_buff_wptr

发送通道的DDR缓存写地址。

注意:

  • 发送方向的写地址由软件维护,是相对于DDR缓存起始地址的偏移地址。
  • 软件必须保证TX_BUFF空闲空间不小于32字节。
  • 软件按照字节为单位,硬件内部按照32字节对齐操作。

0x000000

TX_BUFF_RPTR

TX_BUFF_RPTR为发送通道的DDR缓存读地址寄存器。

Offset Address: 0x208C+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

tx_buff_rptr

发送通道的DDR缓存读地址。

注意:发送方向的读地址由逻辑维护,是相对于DDR缓存起始地址的偏移地址。要求128×2比特对齐。

0x000000

TX_BUFF_ALEMPTY_TH

TX_BUFF_ALEMPTY_TH为发送通道的DDR缓存几乎空水线寄存器。

Offset Address: 0x2090+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

tx_buff_alempty_th

发送通道的DDR缓存几乎空水线,以字节为单位。当DDR缓存可读空间小于几乎空水线时,产生几乎空原始中断。

注意:如果使用tx_alempty_int中断,要求tx_buff_alempty_th配置为16字节的整数倍,且大于或等于0x20。

0x000000

TX_TRANS_SIZE

TX_TRANS_SIZE为发送通道的数据传输长度寄存器。

Offset Address: 0x2094+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RW

tx_trans_size

发送通道,当完成tx_trans_size长度(以字节为单位)的音频数据发送时,产生传输完成中断。

0x000000

TX_RPTR_TMP

TX_RPTR_TMP为上报传输完成中断时,保存发送通道的读地址寄存器。

Offset Address: 0x2098+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:24]

-

reserved

保留。

0x00

[23:0]

RO

tx_rptr_tmp

上报传输完成中断时,保存发送通道的读地址,以字节为单位。

0x000000

TX_INT_ENA

TX_INT_ENA为发送通道的中断使能寄存器。

Offset Address: 0x20A0+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:8]

-

reserved

保留。

0x000000

[7]

RW

tx_dat_break_int_ena

发送通道的接口数据断流中断使能。

0:不使能;

1:使能。

0x0

[6]

RW

tx_mfade_int_ena

发送通道的静音淡入淡出完成中断使能。

0:不使能;

1:使能。

0x0

[5]

RW

tx_stop_int_ena

发送通道的停止中断使能。

0:不使能;

1:使能。

0x0

[4]

RW

tx_ififo_empty_int_ena

发送通道的接口fifo下溢中断使能。

0:不使能;

1:使能。

0x0

[3]

RW

tx_bfifo_empty_int_ena

发送通道的总线fifo下溢中断使能。

0:不使能;

1:使能。

0x0

[2]

RW

tx_alempty_int_ena

发送通道的DDR缓存几乎空中断使能。

0:不使能;

1:使能。

0x0

[1]

RW

tx_empty_int_ena

发送通道的DDR缓存空中断使能。

0:不使能;

1:使能。

0x0

[0]

RW

tx_trans_int_ena

发送通道的传输完成中断使能。

0:不使能;

1:使能。

0x0

TX_INT_RAW

TX_INT_RAW为发送通道的原始中断寄存器。

Offset Address: 0x20A4+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:8]

-

reserved

保留。

0x000000

[7]

RO

tx_dat_break_int_raw

发送通道的接口数据断流原始中断。

0:无原始中断;

1:有原始中断。

0x0

[6]

RO

tx_mfade_int_raw

发送通道的静音淡入淡出完成原始中断。

0:无原始中断;

1:有原始中断。

0x0

[5]

RO

tx_stop_int_raw

发送通道的停止原始中断。

0:无原始中断;

1:有原始中断。

0x0

[4]

RO

tx_ififo_empty_int_raw

发送通道的接口fifo下溢原始中断。

0:无原始中断;

1:有原始中断。

0x0

[3]

RO

tx_bfifo_empty_int_raw

发送通道的总线fifo下溢原始中断。

0:无原始中断;

1:有原始中断。

0x0

[2]

RO

tx_alempty_int_raw

发送通道的DDR缓存几乎空原始中断。

0:无原始中断;

1:有原始中断。

0x0

[1]

RO

tx_empty_int_raw

发送通道的DDR缓存空原始中断。

0:无原始中断;

1:有原始中断。

0x0

[0]

RO

tx_trans_int_raw

发送通道的传输完成原始中断。

0:无原始中断;

1:有原始中断。

0x0

TX_INT_STATUS

TX_INT_STATUS为发送通道的中断状态寄存器。

Offset Address: 0x20A8+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:8]

-

reserved

保留。

0x000000

[7]

RO

tx_dat_break_int_status

发送通道的接口数据断流中断状态。

0:无中断状态;

1:有中断状态。

0x0

[6]

RO

tx_mfade_int_status

发送通道的静音淡入淡出完成中断状态位。

0:无中断状态;

1:有中断状态。

0x0

[5]

RO

tx_stop_int_status

发送通道的停止中断状态。

0:无中断状态;

1:有中断状态。

0x0

[4]

RO

tx_ififo_empty_int_status

发送通道的接口fifo下溢中断状态。

0:无中断状态;

1:有中断状态。

0x0

[3]

RO

tx_bfifo_empty_int_status

发送通道的总线fifo下溢中断状态。

0:无中断状态;

1:有中断状态。

0x0

[2]

RO

tx_alempty_int_status

发送通道的DDR缓存几乎空中断状态。

0:无中断状态;

1:有中断状态。

0x0

[1]

RO

tx_empty_int_status

发送通道的DDR缓存空中断状态。

0:无中断状态;

1:有中断状态。

0x0

[0]

RO

tx_trans_int_status

发送通道的传输完成中断状态。

0:无中断状态;

1:有中断状态。

0x0

TX_INT_CLR

TX_INT_CLR为发送通道的中断清除寄存器。

Offset Address: 0x20AC+0x100×m Total Reset Value: 0x0000_0000

Bits

Access

Name

Description

Reset

[31:8]

-

reserved

保留。

0x000000

[7]

RW

tx_dat_break_int_clear

发送通道的接口数据断流中断清除。

0:不清除;

1:清除。

0x0

[6]

RW

tx_mfade_int_clear

发送通道的静音淡入淡出完成中断清除位。

0:不清除;

1:清除。

0x0

[5]

RW

tx_stop_int_clear

发送通道的停止中断清除位。

0:不清除;

1:清除。

0x0

[4]

RW

tx_ififo_empty_int_clear

发送通道的接口fifo下溢中断清除位。

0:不清除;

1:清除。

0x0

[3]

RW

tx_bfifo_empty_int_clear

发送通道的总线fifo下溢中断清除位。

0:不清除;

1:清除。

0x0

[2]

RW

tx_alempty_int_clear

发送通道的DDR缓存几乎空中断清除位。

0:不清除;

1:清除。

0x0

[1]

RW

tx_empty_int_clear

发送通道的DDR缓存空中断清除位。

0:不清除;

1:清除。

0x0

[0]

RW

tx_trans_int_clear

发送通道的传输完成中断清除位。

0:不清除;

1:清除。

0x0

Audio Codec

概述

芯片集成高性能的Audio Codec,包括高品质回放DAC(90dB DR A-Weighted),支持1路单端lineout输出;高品质录音ADC(90dB DR A-Weighted),支持2路差分/单端输入,麦克风输入支持0~30dB,2dB 步长的增益控制,另外一档Boost gain为20dB。I2S数据接口,支持8kHz到48kHz的标准采样率。

特点

Audio Codec模块有如下特点:

  • 90dBA DR DAC, 支持1路单端lineout输出
  • DAC数字音量控制范围:-121dB~6dB,1dB步长
  • 90dBA DR ADC, 支持2路差分/单端输入
  • ADC通路模拟音量控制范围:0~30dB,2dB 步长,另外一档Boost gain为20dB
  • 提供内部麦克风偏置
  • 音频采样率:支持48kHz、44.1kHz、32kHz三个系列的采样率。其中各系列采样率情况如下:
    • 32kHz系列采样率包括8kHz、16kHz、32kHz
    • 44.1kHz系列采样率包括11.025kHz、22.05kHz、44.1kHz
    • 48kHz系列采样率包括12kHz、24kHz、48kHz

Audio Codec寄存器概览

Audio Codec寄存器概览如表1所示。

表 1 Audio Codec寄存器概览(基址是0x17C4_0000)

偏移地址

名称

描述

0x0000

AUDIO_ANA_CTRL_0

Audio Codec模拟控制寄存器0

0x0004

AUDIO_ANA_CTRL_1

Audio Codec模拟控制寄存器1

0x0008

AUDIO_ANA_CTRL_2

Audio Codec模拟控制寄存器2

0x000C

AUDIO_ANA_CTRL_3

Audio Codec模拟控制寄存器3

0x00CC

AUDIO_CTRL_REG_1

Audio Codec DIG控制寄存器0

0x00D0

AUDIO_DAC_REG_0

Audio Codec DIG控制寄存器1

0x00D4

AUDIO_DAC_REG_1

Audio Codec DIG控制寄存器2

0x00D8

AUDIO_ADC_REG_0

Audio Codec DIG控制寄存器3

Audio Codec寄存器描述

AUDIO_ANA_CTRL_0

AUDIO_ANA_CTRL_0为Audio Codec模拟控制寄存器0。

Offset Address: 0x0000 Total Reset Value: 0x3434_DFFF

Bits

Access

Name

Description

Reset

[31:27]

RW

LINEIN_R_GAIN

右通路输入PGA增益控制。

0x0:0dB;

0x1:2dB;

…

0xF:30dB。

0x06

[26:24]

RW

LINEIN_R_SEL

右通路输入PGA输入通道选择。

000:MIC差分输入;

001:MIC_R单端输入;

010:MIC_L单端输入;

011:LINEIN_L单端输入;

100:LINEIN_R单端输入;

101:LINEIN差分输入;

其他:保留。

0x4

[23:19]

RW

LINEIN_L_GAIN

左通路输入PGA增益控制。

0x00:0dB;

0x01:2dB;

… …

0x0F:30dB。

0x06

[18:16]

RW

LINEIN_L_SEL

左通路输入PGA输入通道选择。

000:MIC差分输入;

001:MIC_L单端输入;

010:MIC_R单端输入;

011:LINEIN_R单端输入;

100:LINEIN_L单端输入;

101:LINEIN差分输入;

其他:保留。

0x4

[15]

RW

PD_MICBIAS1

MICBIAS1上下电控制。

0:正常工作;

1:下电。

0x1

[14]

-

reserved

保留。

0x1

[13]

RW

EN_LDO

LDO上下电控制。

0:下电;

1:上电。

0x0

[12]

RW

PD_DAC_VREF

DAC_VREF上下电控制。

0:正常工作;

1:下电。

0x1

[11]

RW

PD_CTCM_TX

TX通路CTCM_BUFFER的上下电控制。

0:正常工作;

1:下电。

0x1

[10]

RW

PD_CTCM_RX

RX通路CTCM_BUFFER的上下电控制。

0:正常工作;

1:下电。

0x1

[9]

RW

PD_IBIAS

偏置电流产生电路上下电控制。

0:正常工作;

1:下电。

0x1

[8]

RW

PD_VREF

VREF上下电控制。

0:正常工作;

1:下电。

0x1

[7]

RW

PD_LINEOUTL

左通路LINEOUT上下电控制。

0:正常工作;

1:下电。

0x1

[6]

RW

PD_LINEOUTR

右通路LINEOUT上下电控制。

0:正常工作;

1:下电。

0x1

[5]

RW

PD_ADCL

左通路ADC上下电控制。

0:正常工作;

1:下电。

0x1

[4]

RW

PD_ADCR

右通路ADC上下电控制。

0:正常工作;

1:下电。

0x1

[3]

RW

PD_LINEIN_L

左通路输入PGA上下电控制。

0:正常工作;

1:下电。

0x1

[2]

RW

PD_LINEIN_R

右通路输入PGA上下电控制。

0:正常工作;

1:下电。

0x1

[1]

RW

MUTE_LINEIN_L

左通路输入PGA静音控制。

0:正常工作;

1:静音。

0x1

[0]

RW

MUTE_LINEIN_R

右通路输入PGA静音控制。

0:正常工作;

1:静音。

0x1

AUDIO_ANA_CTRL_1

AUDIO_ANA_CTRL_1为Audio Codec模拟控制寄存器1。

Offset Address: 0x0004 Total Reset Value: 0xDF60_5E65

Bits

Access

Name

Description

Reset

[31:20]

-

reserved

保留。

0xDF6

[19]

RW

MODE_ADCL

左通路ADC模式选择信号。

0:6.144MHz采样率(48kHz系列);

1:4.096MHz采样率(32kHz系列)。

0x0

[18]

RW

MODE_ADCR

右通路ADC模式选择信号。

0:6.144MHz采样率(48kHz系列);

1:4.096MHz采样率(32kHz系列)。

0x0

[17]

RW

BOOST_ADCL

左通路ADC Boost开关控制。

0:不开Boost;

1:打开Boost=20dB。

0x0

[16]

RW

BOOST_ADCR

右通路ADC Boost开关控制。

0:不开Boost;

1:打开Boost=20dB。

0x0

[15:2]

-

reserved

保留。

0x1799

[1]

RW

EN_RCTUNE

ADC的RC系数校正电路使能控制。

0:不使能;

1:正常工作。

此寄存器为一上升沿触发信号,需要RC校正电路工作时应先配置0,再配置1,系统检测到一个上升沿之后触发RC校正电路工作。

0x0

[0]

RW

PD_RCTUNE

ADC的RC系数校正电路上下电控制。

0:正常工作;

1:下电。

0x1

AUDIO_ANA_CTRL_2

AUDIO_ANA_CTRL_2为Audio Codec模拟控制寄存器2。

Offset Address: 0x0008 Total Reset Value: 0x0025_5548

Bits

Access

Name

Description

Reset

[31:30]

-

reserved

保留。

0x0

[29:27]

RW

MICBIAS_ADJ

MICBIAS的输出电压选择。

000:2.1V;

001:2.2V;

……

111:2.8V。

0x0

[26:1]

-

reserved

保留。

0x12AAA4

[0]

RW

ANA_LOOP

模拟环回使能控制。

0:DAC的输入由数字部分提供;

1:ADC到DAC模拟内部环回。

0x0

AUDIO_ANA_CTRL_3

AUDIO_ANA_CTRL_3为Audio Codec模拟控制寄存器3。

Offset Address: 0x000C Total Reset Value: 0x0429_3B50

Bits

Access

Name

Description

Reset

[31:10]

-

reserved

保留。

0x010A4E

[9]

RW

MUTE_DACL

左通路DAC静音控制。

0:正常工作;

1:通路静音。

0x1

[8]

RW

MUTE_DACR

右通路DAC静音控制。

0:正常工作;

1:静音。

0x1

[7:0]

-

reserved

保留。

0x50

AUDIO_CTRL_REG_1

AUDIO_CTRL_REG_1为Audio Codec DIG控制寄存器0。

Offset Address: 0x00CC Total Reset Value: 0x00F3_5A4A

Bits

Access

Name

Description

Reset

[31]

RW

dacl_rst_n

DACL复位信号。

0:复位有效;

1:复位无效。

0x0

[30]

RW

dacr_rst_n

DACR复位信号。

0:复位有效;

1:复位无效。

0x0

[29]

RW

adcl_rst_n

ADCL复位信号。

0:复位有效;

1:复位无效。

0x0

[28]

RW

adcr_rst_n

ADCR复位信号。

0:复位有效;

1:复位无效。

0x0

[27]

RW

dacl_en

DACL使能信号。

0:不使能;

1:使能。

0x0

[26]

RW

dacr_en

DACR使能信号。

0:不使能;

1:使能。

0x0

[25]

RW

adcl_en

ADCL使能信号。

0:不使能;

1:使能。

0x0

[24]

RW

adcr_en

ADCR使能信号。

0:不使能;

1:使能。

0x0

[23:18]

RO

reserved

保留。

0x3C

[17:13]

RW

i2s1_fs_sel

I2S通道采样率选择。

0x18:mclk/512/2;

0x19:mclk/256/2;

0x1A:mclk/128/2;

0x1B:mclk/64/2;

0x1C~0x1F:mclk/32/2。

其他:保留。

0x1A

[12:0]

RO

reserved

保留。

0x1A4A

AUDIO_DAC_REG_0

AUDIO_DAC_REG_0为Audio Codec DIG控制寄存器1。

Offset Address: 0x00D0 Total Reset Value: 0x0000_0001

Bits

Access

Name

Description

Reset

[31]

RW

smutel

DACL soft-mute控制位。

0:关闭soft-mute;

1:开启soft-mute。

0x0

[30]

RW

smuter

DACR soft-mute控制位。

0:关闭soft-mute;

1:开启soft-mute。

0x0

[29]

RW

sunmutel

DACL soft-unmute控制位。

0:关闭soft-unmute;

1:开启soft-unmute。

0x0

[28]

RW

sunmuter

DACR soft-unmute控制位。

0:关闭soft-unmute;

1:开启soft-unmute。

0x0

[27]

RW

dacvu

DAC音量更新控制位。

0:不更新音量;

1:更新音量。

0x0

[26:25]

RW

mutel_rate

DACL soft-mute速率控制位。

00:fs/2;

01:fs/8;

10:fs/32;

11:fs/64。

0x0

[24:23]

RW

muter_rate

DACR soft-mute速率控制位。

00:fs/2;

01:fs/8;

10:fs/32;

11:fs/64。

0x0

[22:0]

RO

reserved

保留。

0x000001

AUDIO_DAC_REG_1

AUDIO_DAC_REG_1为Audio Codec DIG控制寄存器2。

Offset Address: 0x00D4 Total Reset Value: 0x0606_2424

Bits

Access

Name

Description

Reset

[31]

RW

dacl_mute

DACL数字静音控制。

0:正常工作;

1:静音。

0x0

[30:24]

RW

dacl_vol

DACL数字音量控制。

计算公式为:(6-dacl_vol*1)dB。

当dacl_vol为0x7F时,DACL数字静音。

0x00:6dB;

0x01:5dB;

0x02:4dB;

…

0x7E:-120dB;

0x7F:mute。

0x06

[23]

RW

dacr_mute

DACR数字静音控制。

0:正常工作;

1:静音。

0x0

[22:16]

RW

dacr_vol

DACR数字音量控制。

计算公式为:(6-dacr_vol*1)dB。

当dacr_vol为0x7F时,DACR数字静音。

0x00:6dB;

0x01:5dB;

0x02:4dB;

…

0x7E:-120dB;

0x7F:mute。

0x06

[15:0]

RO

reserved

保留。

0x2424

AUDIO_ADC_REG_0

AUDIO_ADC_REG_0为Audio Codec DIG控制寄存器3。

Offset Address: 0x00D8 Total Reset Value: 0x1E1E_0001

Bits

Access

Name

Description

Reset

[31]

RW

adcl_mute

ADCL数字静音控制位。

0:ADCL unmute;

1:ADCL mute。

0x0

[30:24]

RW

adcl_vol

ADCL 音量控制位。

计算公式:(30-adcl_vol*1)dB。

0x00:30dB

0x01:29dB

0x02:28dB

…

0x7E:-96dB

0x7F:-97dB

0x1E

[23]

RW

adcr_mute

ADCR数字静音控制位。

0:ADCR不静音;

1:ADCR静音。

0x0

[22:16]

RW

adcr_vol

ADCR 音量控制位。

计算公式:(30-adcr_vol*1)dB。

0x00:30dB

0x01:29dB

0x02:28dB

…

0x7E:-96dB

0x7F:-97dB

0x1E

[15]

RW

adcl_hpf_en

ADCL高通滤波器使能控制。

0:关闭高通滤波器;

1:使能高通滤波器。

0x0

[14]

RW

adcr_hpf_en

ADCR高通滤波器使能控制。

0:关闭高通滤波器;

1:使能高通滤波器。

0x0

[13:0]

-

reserved

保留。

0x0001