USER GUIDE / AUDIO SYSTEM / AUDIO INTERFACE / REGISTER DESCRIPTION
寄存器描述
AIC 配置寄存器
AICFR 包含控制 FIFO 阈值、I2S/MSB 对齐格式选择、AIC 复位、主/从选择和 AIC 启用的位。
AICFRBASE + 0x0000
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | rg_codec_srst | 内部codec软件复位 0:不重置内部codec; 1:重置内部codec。 | RW |
| 30 | Reserved | 写入无影响,读取为零。 | R |
| 29 | ad2da_loop | 该位控制内部codec功能。 0:常规功能; 1:从 adc 直接向 dac 通路发送并行数据。 在这种模式下,I2S接口 的接收时钟与传输时钟保持同步。 | RW |
| 28:24 | RFTH | 接收FIFO中断或DMA请求阈值。 RFTH 有效值为 0~ 31。 该阈值实际值为(RFTH+ 1)*2。 当接收FIFO中的样本数量(由 AICSR.RFL指示)大于或等于此阈值时,AICSR.RFS 状态位将被置 位。 RFTH 值越大,DMA/中断请求频率越低,但接收 FIFO 溢出的风 | RW |
| 23:21 | Reserved | 写入无影响,读取为零。 | R |
| 20:16 | TFTH | 发送 FIFO 中断或 DMA 请求阈值。 TFTH 有效值为 0~31。 该阈值对应的实际值为TFTH* 2。 当发送 FIFO 中的样本数(由 AICSR.TFL 指示)小于或等于阈值时,AICSR.TFS 状态位将被置位。 TFTH 值越小,DMA/中断请求频率越低,但发送 FIFO 下溢的风险越 大。 最佳取值需根据具体系统确定。 | RW |
| 15 | Reserved | 写入无影响,读取为零。 | R |
| 14 | RST_O_STAT US | 发送 FIFO 复位状态,在设置AICFR.RST寄存器为1后,需要等待其 值恢复为0。 | R |
| 13 | RST_I_STAT US | 接收 FIFO 复位状态,在设置AICFR.RST寄存器为1后,需要等待其 值恢复为0。 | R |
| 12 | MSB | 大端格式选择。 0:回采数据采用小端格式 1:回采数据采用大端格式。 符号位位于第31位。 | RW |
| 11 | SYSCKD (Reserved) | 可以写入,但不能使用。 | RW |
| 10:9 | Reserved | 写入无影响,读取为零。 | R |
| 8 | DMODE | 该位控制 6 线模式和 4 线模式。 0:AIC 模块支持 4 线。 这意味着发送时钟和接收时钟共享,并且与 发送时钟共享同一时钟源。 1:AIC 模块支持 6 线。 这表示发送时钟和接收时钟互相独立。 注意:该功能仅在外部codec中有效。 | RW |
| 7 | ICDC_T | 放音使用CODEC选择 ICDC_T CODEC used for DAC 0 外部 CODEC 1 内部CODEC | R |
| 6 | LSMP | 在 TXFIFO 下溢时,选择播放最后一个样本或零样本。 零样本表示采 样值为零。 建议在音频播放停止时更改该位。 0:当 TXFIFO 下溢时播放零采样; 1:当 TXFIFO 下溢时播放最后一个样本。 | RW |
| 5 | ICDC_R | 录音使用 CODEC 选择。 ICDC_R CODEC used for ADC 0 外部 CODEC 1 内部CODEC | RW |
| 4 | AUSEL | 音频单元选择。 在 BIT_CLK 停止(I2SCR.STPBK =1)时更改该位。 0:保留; 1:选择 I2S/MSB 对齐格式。 | RW |
| 3 | RST | 重置 AIC。 0:向该位写 0 无效果,该位读数始终为 0; 1:重置 AIC 寄存器和 FIFO(AICFR 和 I2SDIV 寄存器除外)。 | W |
| 2 | TMASTER | DAC通路选择AIC做主机或者从机; 0:AIC做从机,DAC BIT_CLK由外部提供; 1:AIC做主机,DAC BIT_CLK由AIC提供。 | RW |
| 1 | RMASTER | ADC通路选择AIC做主机或者从机; 0:AIC做从机,ADC BIT_CLK由外部提供; 1:AIC做主机,ADC BIT_CLK由AIC提供。 | RW |
| 0 | ENB | 启用 AIC 功能。 该位用于启用或禁用 AIC 功能。 0:禁用 AIC 控制器; 1:启用 AIC 控制器。 | RW |
AIC 控制寄存器
AICCR 包含用于控制 DMA 模式、FIFO 刷新、中断启用、内部循环回放、回放和记录启用的位。它还控制采样大小和有符号/无符号数据传输。
AICCRBASE + 0x0004
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | ETFLOR | 启用 TFLOR 中断。 该位用于控制 TFLOR 中断的启用或禁用。 0:禁用; 1:启用。 | RW |
| 30 | ETFLS | 启用 TFLS 中断。 该位用于控制 TFLS 中断的启用或禁用。 0:禁用; 1:启用。 | RW |
| 29 | en2old_0 | 注意:正常使用时,将该值保持为 0。 复位值:0。 | RW |
| 28 | PACK16 | 输出采样数据 16 位打包模式选择。 此位用于设定单个字符容纳的采样 数据数量及对齐方式。 打包模式仅支持16bit采样位数。 0:非打包数据模式。 单个字符仅包含一个16bit采样数据,采用LSB 对齐; 1:打包数据模式。 单个字符包含两个16bit采样数据。 | RW |
| 27 | excodec | 当使用回声消除功能且只记录左声道时,应设置该位; 在其他情况下, 应清除该位。 | RW |
| 26:24 | CHANNEL | 输出通道数选择。 该字段用于配置从AIC至设备的输出数据通道数。 支持的数据有 1(单声道)、2(立体声)、4、6 和 8 通道。 采样数 据在存储器/寄存器中以 LSB 对齐。 3'b000:1 个通道,单声道模式; 3'b001:2 个通道,立体声模式; 其他:保留。 | RW |
| 23 | ETFL | 启用 TFIFO LOOP 功能。 该位用于禁用或启用音频采样数据接收。 0:禁用; 1:启用。 | RW |
| 22 | TLDMS | 启用传输 FIFOLOOP DMA。 该位用于在传输音频数据时启用或禁用 DMA。 0:禁用; 1:启用。 | RW |
| 21:19 | OSS | 输出采样大小。 这些位反映了从内存或寄存器输出采样数据的大小。 支 持的数据大小有 8、16、18、20 和 24 位。 采样数据在内存/寄存器 中以 LSB 对齐。 | RW |
| 18:16 | ISS | 输入采样大小。 这些位反映了输入存储器或寄存器的采样数据大小。 支 持的数据大小有 8、16、18、20 和 24 位。 采样数据在存储器/寄存 器中以 LSB 对齐。 3'b000:8 位; 3'b001:16 位 3'b010:18 位 3'b011:20 位 3'b100:24 位 其他: 保留。 | RW |
| 15 | RDMS | 接收 DMA 启用。 该位用于在接收音频数据时启用或禁用 DMA。 0:禁用; 1:启用。 | RW |
| 14 | TDMS | 发送 DMA 启用。 该位用于在传输音频数据时启用或禁用 DMA。 0:禁用; 1:已启用。 | RW |
| 13:12 | MONOCTR | 单声道控制。 2'b00:录音时左右声道都工作; 2'b01:录音时只有右声道工作; 2'b10:录音时只有左声道工作; 2'b11:保留; | RW |
| 11 | M2S | 单声道到立体声。 该位控制播放时是否将单声道样本扩展为立体声。 当 该位置1时,数据流中的每个输出样本数据将在左右声道同时播放。 该 位只能在双声道配置中设置。 更改后立即生效。 请在重放开始前更改。 0:不进行单声道到立体声的扩展; 1:将单声道扩展为立体声。 | RW |
| 10 | ENDSW | Endian切换位。 该位通过交换采样数据中的高字节和低字节,控制传 出的 16 位音频样本的大小端转换。 0:不改变输出样本数据; 1:交换传出的 16 位样本数据的高字节和低字节。 | RW |
| 9 | ASVTSU | 有符号和无符号数据格式之间的音频采样值转换。 该位用于控制有符号 和无符号数据的转换。 如果该位为 1,输入及输出的音频采样数据将通 过翻转其最高有效位实现格式转换。 0:不执行音频采样值有符号与无符号格式转换; 1:进行音频采样值有符号与无符号转换。 | RW |
| 8 | TFLUSH | 传输 FIFO 清除。 0:无影响,该位始终为 0; 1:将发送 FIFO 清空。 | W |
| 7 | RFLUSH | 接收 FIFO 清除。 0:无影响,该位读数始终为 0; 1:将接收 FIFO 清空。 | W |
| 6 | EROR | 启用 ROR 中断。 该位用于控制 ROR 中断的启用或禁用。 0:禁用; 1:启用。 | RW |
| 5 | ETUR | 启用 TUR 中断。 该位用于控制 TUR 中断的启用或禁用。 0:禁用; 1:启用。 | RW |
| 4 | ERFS | 启用 RFS 中断。 该位用于控制 RFS 中断的启用或禁用。 0:禁用; 1:启用。 | RW |
| 3 | ETFS | 启用 TFS 中断。 该位用于控制 TFS 中断的启用或禁用。 0:禁用; 1:启用。 | RW |
| 2 | ENLBF | 启用 AIC 回环功能。 该位用于启用或禁用 AIC 的内部回环功能,该 功能仅用于测试。 启用 AIC 回环功能后,常规的音频播放/录音功能将 被禁用。 0:禁用 AIC 回环功能; 1:启用 AIC 循环回放功能。 | RW |
| 1 | ERPL | 启用播放功能。 该位用于禁用或启用音频采样数据发送。 0:禁用 AIC 播放功能; 1:启用 AIC 播放功能。 | RW |
| 0 | EREC | 启用录音功能。 该位用于禁用或启用音频采样数据接收。 0:禁用 AIC 录音功能; 1:启用 AIC 录音功能。 | RW |
AIC I2S/MSB-对齐控制寄存器
当 AICFR[4]=1 时,I2SCR 包含用于选择 I2S 格式或 MSB 对齐格式的控制位。它仅在 I2S/MSB-justified 格式(AICFR[4]=1)下有效。
I2SCRBASE + 0x0010
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | firstchn_is_le ft | 将录音的左声道标记为: 0:右声道; 1:左声道。 | R |
| 30:18 | Reserved | 写入无影响,读取为零。 | R |
| 17 | RFIRST | 在立体声模式下先发送 R 声道。 该位只能在双声道配置中设置。 用 于定义LR或RL格式的音频帧顺序。 更改该位后立即生效,请在重 放开始前更改。 0:先发送 L 频道(LR); 1:先发送 R 信道(RL)。 | RW |
| 16 | SWLH | 在 16 位打包立体声模式下切换 LR 通道。 该位控制低地址数据是 L 还是 R。 该位只能在双通道配置和 16 位 打包模式下设置。 也就是说,它只能在打包模式(PACK16=1)且 双 通道(CHANNEL=0x1)下有效。 该位更改后立即生效。 请在重放开始前更改。 | RW |
| 15:1 | Reserved | 写入无影响,读取为零。 | R |
| 0 | AMSL | 指定备用操作模式(I2S 或 MSB-Justified)。 0: 选择 I2S 操作模式; 1: 选择 MSB 对齐操作模式。 | RW |
AIC FIFO 状态寄存器
AICSR 包含反映 FIFO 状态的位。除了两个可写入 0 的位之外,大多数位都是只读的。
AICSRBASE + 0x0014
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:30 | Reserved | 写入无影响,读取为零。 | R |
| 30:24 | RFL | 接收 FIFO 数据量。 该位指示接收 FIFO 中有效 PCM 数据的数量。 RFL 值 说明 0x00~ 0x40 RFL 接收 FIFO 中的有效 PCM 数据量。 0x41~ 0x7F 保留。 | R |
| 23:21 | Reserved | 写入无影响,读取为零。 | R |
| 20:15 | TFLL | 发送 FIFO 循环数据量。 该位指示发送 FIFOLOOP 中的有效 PCM 数据 量。 TFL 值 说明 0x00~ 0x20 TFL 发送 FIFO 循环中的有效 PCM 数据 | R |
| 14:8 | TFL | 发送 FIFO 数据量。 该位指示传输 FIFO 中有效 PCM 数据的数量。 TFL值 说明 0x00~ 0x40 TFL 发送 FIFO 中的有效 PCM 数据。 | R |
| 7 | Reserved | 写入无影响,读取为零。 | R |
| 6 | ROR | 接收 FIFO 上溢标志位。 该位指示接收 FIFO 是否发生超限。 ROR 说明 读取时,表示未发现上溢。 0 写入时自行清除。 读取时,表示数据已写入完整的接收 FIFO。 1 写入时,无影响。 | RW |
| 5 | TUR | 传输 FIFO 下溢标志位。 该位指示发送 FIFO 是否发生欠运行。 TUR 说明 读取时,表示未发现下溢。 0 写入时,自行清除。 读取时,表示已从空发送 FIFO 中读取数据。 1 写入时,不起作用。 | RW |
| 4 | RFS | 接收 FIFO 服务请求。 该位指示接收 FIFO 数据量是否低于接收 FIFO 阈 值,该阈值由 AICFR.RFTH 控制。 RFS 为 1 时,根据中断使能和DMA设 置,可能会触发中断或DMA请求。 RFS 说明 0 接收 FIFO 数据量低于 RFL 阈值。 1 接收 FIFO 数据量等于或高于 RFL 阈值。 | R |
| 3 | TFS | 发送 FIFO 服务请求。 该位表示发送 FIFO 数据量低于发送 FIFO 阈值,该 阈值由 AICFR.TFTH 控制。 当 TFS 为 1 时,根据中断使能和DMA设置, 可能会触发中断或DMA请求。 TFS 说明 0 传输 FIFO 电平超过 TFL 阈值。 1 传输 FIFO 电平处于或低于 TFL 阈值。 | R |
| 2 | TFLOR | 发送 FIFOLOOP 上溢标志位。 该位指示发送 FIFOLOOP 是否发生过超限 运行。 TFLOR 说明 读取时,表示未发现上溢。 0 写入时自行清除。 读取时,表示已从空发送 FIFOLOOP 读取数据。 1 写入时,不起作用。 | RW |
| 1 | TFLS | 发送 FIFO LOOP 服务请求。 该位指示发送 FIFOLOOP有效数据量是否低 于发送 FIFOLOOP阈值,发送 FIFOLOOP阈值由 AICSR.TFLL 控制。 当 TFLS 为 1 时,根据中断使能及DMA设置,可能会触发中断或DMA请求。 RFS 说明 0 发送 FIFO LOOP有效数据量低于 TFLL 阈 值。 1 发送 FIFO LOOP 有效数据量等于或高于 TFLS 阈值。 | R |
| 0 | Reserved | 写入无影响,读取为零。 | R |
AIC I2S/MSB-对齐状态寄存器
I2SSR 用于反映 I2S/MSB的 AIC 状态。它是一个只读寄存器。
I2SSRBASE + 0x001C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:6 | Reserved | 写入无影响,读取为零。 | R |
| 5 | CHBSY | AIC发送器在I2S/MSB对齐格式下处于忙碌状态(多通道状态) 0:AIC发送器部分空闲或已禁用; 1:AIC发送器部分当前正在发送或接收一帧数据。 | R |
| 4 | TBSY | AIC发送器在I2S/MSB对齐格式下的忙状态指示。 0:表示AIC发送器部分处于空闲或禁用状态; 1:表示AIC发送器部分当前正在发送或接收一个数据帧。 | R |
| 3 | RBSY | AIC接收器在I2S/MSB对齐格式下繁忙标志。 0:AIC接收器部分空闲或已禁用; 1:AIC接收器部分当前正在传输或接收一帧数据。 | R |
| 2 | BSY | AIC I2S/MSB对齐格式忙标志位。 0:AIC控制器空闲或已禁用; | R |
| 1:0 | Reserved | 写入无影响,读取为零。 | R |
AIC I2S/MSB-对齐时钟分频寄存器
I2SDIV 用于设置时钟分频器,以从SYS_CLK(系统时钟)生成I2S/MSB-justified格式所需的BIT_CLK(位时钟)。
I2SDIVBASE + 0x0030
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:25 | Reserved | 写入无影响,读取为零。 | R |
| 24:17 | IDV | 音频 IBIT_CLK 时钟分频值减去 1。 I2SDIV.IDV 用于控制 通过对 SYS_CLK分频来生成IBIT_CLK。 分频值可以是偶数或奇数, I2SDIV.IDV 应设置为分频值减去 1。 在 AIC 中,IBIT_CLK 频率固定 为 64fS,其中 fS 为音频采样频率。 I2SDIV.IDV 取决于 SYS_CLK 频率 fSYS_CLK,该频率根据内部 CODEC 的要求和内部 PLL 频率 进行选择。 更多说明请参阅 1.4.10 串行音频时钟和采样频率。 | RW |
| 16:9 | Reserved | 写入无影响,读取为零。 | R |
| 8:1 | DV | 音频 BIT_CLK 时钟分频值减去 1。 I2SDIV.DV 用于控制 通过对 SYS_CLK 分频来生成 BIT_CLK。 分频值可以是偶数或奇数, I2SDIV.IDV 应设置为分频值减去 1。 在 AIC 中,BIT_CLK 频率固定 为 64fS,其中 fS 为音频采样频率。 I2SDIV.DV 取决于 SYS_CLK 频 率 fSYS_CLK,该频率根据内部 CODEC 的要求和内部 PLL 频率进 行选择。 更多说明请参阅 1.4.10 串行音频时钟和采样频率。 | RW |
| 0 | Reserved | 写入无影响,读取为零。 | R |
AIC FIFO 数据端口寄存器
AICDR 在写入时充当发送 FIFO 的数据输入端口,在读取时充当接收 FIFO 的数据输出端口,每次操作一个音频采样。FIFO 的宽度为 24 位。小于 24 位的音频采样大小 N 位于 最低有效位(LSB) 的N 个比特中。在 I2S/MSB-justified 时,采样大小由 I2SCR.WL 指定。在 I2S/MSB-justified 中,左声道样本优先于右声道样本。
需要注意,在执行程序读写操作时,应监控状态寄存器以确保 FIFO 中有足够的空间容纳数据。此过程在 DMA 模式下会自动处理。
AICDRBASE + 0x0034
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:24 | Reserved | 写入无影响,读取为零。 | R |
| 23:0 | DATA | FIFO 端口。 写入时,数据被推送到发送 FIFO。 读取时,数据从接 收 FIFO 中弹出。 | RW |
AIC Loop 数据寄存器
AICLR 在读取时充当从TFIFOLOOP弹出数据的端口。
AICLRBASE + 0x0038
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:24 | Reserved | 写入无影响,读取为零。 | R |
| 23:0 | LOOP_DATA | FIFO 端口。 从该端口读取数据时,数据会从 TFIFO_LOOP 中弹出。 | R |
AIC TFIFO LOOP 寄存器
AICTFLR 用于控制 TFIFO LOOP 阈值。
AICTFLRBASE + 0x003C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:4 | Reserved | 写入无影响,读取为零。 | R |
| 3:0 | TFLTH | TFIFOLOOP 阈值(用于中断或DMA请求)。 TFLTH 有效值为 0~ 15。 该值代表 (TFLTH+1) *2 的阈值。 当 AICSR.TFLL 所指示的发送 FIFOLOOP中的样本数大于或等于阈值时,AICSR.TFLS 将被置位。 TFLTH 值越大,DMA/中断请求频率越低,但 TFIFOLOOP 溢出的 风险越大。 最佳值取决于具体系统。 | RW |