Skip to content

Instantly share code, notes, and snippets.

@nickfox-taterli
Created November 7, 2025 11:50
Show Gist options
  • Select an option

  • Save nickfox-taterli/938ac4cf387864fa27f8f677e702bd5b to your computer and use it in GitHub Desktop.

Select an option

Save nickfox-taterli/938ac4cf387864fa27f8f677e702bd5b to your computer and use it in GitHub Desktop.
K1-X RCPU 子系统

16. RCPU 子系统

16.1 概述

RCPU 子系统包括:

  • 256 kB SRAM
  • DMA
  • 面向传感器集线器子系统(Sensor-Hub)的各类 APB 外设(如 I2C、SSP、PWM 等)

RCPU 子系统的电源域独立于其他模块,因此即使进入低功耗模式,音频子系统也可以继续工作。

16.2 特性

16.2.1 通用

  • RCPU 子系统上的应用可以访问其内存与外设。

16.2.2 主要外设

  • 1× I2C 控制器:支持 100 kHz(标准)、400 kHz(快速)、3.4 MHz(高速)
  • 1 组定时器:包含 3 个计数器,每个计数器具有 3 个匹配值
  • 1× SPI 控制器:数据率最高 24 Mbps
  • 2× UART 控制器:其中 1 个 UART 支持自动流控
  • 10× PWM 控制器

16.2.3 供电与时钟管理

  • 高级时钟门控:包括针对外设的软件门控,以及针对总线、互联结构与桥的自动时钟门控
  • 音频子系统可运行在 D0(正常上电)模式,以及 D1、D2(低功耗)模式
  • 音频子系统的四种电源模式:
    • ACTIVE
    • CLK_GATING
    • PLL_OFF
    • PWR_OFF

16.3 寄存器说明

16.3.1 AUD_PMU 寄存器

备注:基地址 = 0xC0A10000

16.3.1.1 AUDIO_PMU_VOTE 寄存器(偏移 0x18)

位段 字段 类型 复位 描述
31:4 保留 RO 0 预留
3 音频 PMU 进入 PWR_OFF 的投票 RW 0x1 1:允许进入关断(PWR_OFF);0:不允许
2 音频 PMU 进入 PLL_OFF 的投票 RW 0x1 1:允许进入 PLL 关闭;0:不允许
1 音频 PMU 进入低功耗的投票 RW 0x1 1:允许进入低功耗;0:不允许
0 保留 RO 0 预留

16.3.1.2 AUDIO_VOTE_FOR_MAIN_PMU 寄存器(偏移 0x20)

位段 字段 类型 复位 描述
31:7 保留 RO 0 预留
6 音频对 AP AXI 时钟关闭的投票 RW 0x1 1:允许 AP AXI 时钟关闭;0:不允许
5 音频对 DDR 关断的投票 RW 0x1 1:允许 DDR 关断;0:不允许
4 保留 RO 0 预留
3 音频对 VCTCXO 关闭的投票 RW 0x1 1:允许 VCTCXO 关闭;0:不允许
2 音频对主 PMU 睡眠态的投票 RW 0x1 1:允许主 PMU 进入睡眠;0:不允许
1 音频对 AP 待机态的投票 RW 0x1 1:允许 AP 进入待机;0:不允许
0 保留 RO 0 预留

16.3.1.3 AUDIO_WAKEUP_EN 寄存器(偏移 0x28)

位段 字段 类型 复位 描述
31:8 保留 RO 0 预留
7 保留 RO 0 预留
6 保留 RO 0 预留
5 保留 RO 0 预留
4 timer_wkup_en RW 0x0 音频定时器唤醒使能;1:使能;0:禁用
3 ap_wkup_en RW 0x0 AP 唤醒使能;1:使能;0:禁用
2 保留 RO 0 预留
1 ipc_ap_wkup_en RW 0x0 音频到 AP 的 IPC 唤醒使能;1:使能;0:禁用
0 shub_int_wkup_en RW 0x0 传感器集线器唤醒使能;1:使能;0:禁用

16.3.1.4 AON_PER_CLK_RST_CTRL 寄存器(偏移 0x2C)

位段 字段 类型 复位 描述
31:2 保留 RO 0 预留
1 ipc2ap 时钟使能 RW 0x0 1:使能;0:禁用
0 aipc_ap_rstn RW 0x0 1:释放复位;0:复位

16.3.1.5 MCU_EXECUTION_CTRL 寄存器(偏移 0x30)

位段 字段 类型 复位 描述
31:1 保留 RO 0 预留
0 mcu_execution_ctrl RW 0x0 1:MCU 运行;0:MCU 暂停

16.3.1.6 AUDIO_BUS_CLK_DIV 寄存器(偏移 0x38)

位段 字段 类型 复位 描述
31:7 保留 RO 0 预留
6:4 apb_clk_div RW 0x3 0:保留;1:÷2;2:÷4;3:÷8;4:÷16;5/6/7:保留
3:2 保留 RO 0 预留
1:0 axi_clk_div RW 0x1 0:÷1;1:÷2;2:÷4;3:÷8

16.3.1.7 SHUB_GPO 寄存器(偏移 0x3C)

位段 字段 类型 复位 描述
31:8 保留 RO 0 预留
7:0 shub_gpo RW 0x0 传感器集线器 GPIO 输出值

16.3.1.8 AUDIO_CTRL 寄存器(偏移 0xE0)

位段 字段 类型 复位 描述
31 音频 ADC 测试中断状态 RW 0x0 测试完成:1
30 保留 RO 0 预留
29 挂机键(hook key)中断清除 RW 0x0 1:清除;状态见 AUDIO_STATUS[21:14]
28:24 挂机键去抖时钟分频 RW 0xF 从 32 kHz 分频得到
23 Class G 右声道 OCP 中断清除 RW 0x0 1:清除;状态见 AUDIO_STATUS[13]
22 Class G 左声道 OCP 中断清除 RW 0x0 1:清除;状态见 AUDIO_STATUS[12]
21 Class AB OCP 中断清除 RW 0x0 1:清除;状态见 AUDIO_STATUS[11]
20:15 保留 RO 0 预留
14 classge_shortpwr 中断使能 RW 0x0 0:禁用;1:使能
13 classge_r_shortpwr_clr RW 0x0 1:清除右声道短路功耗中断
12 classge_l_shortpwr_clr RW 0x0 1:清除左声道短路功耗中断
11:4 保留 RO 0 预留
3 插拔唤醒中断清除 RW 0x0 1:清除;状态见 AUDIO_STATUS[10:9]
2 自动 OCP 复位使能 RW 0x1 对 Class G/AB 自动产生 ocp_rst:1 使能
1 模拟测试模式中断屏蔽 RW 0x0 测试完成时是否产生中断;1:使能
0 模拟插入极性 RW 0x0 0:高电平表示插入;1:低电平表示插入

16.3.1.9 AUDIO_CTRL2 寄存器(偏移 0xE4)

位段 字段 类型 复位 描述
31:28 保留 RO 0 预留
27:19 Class G 的 OCP 持续长度 RW 0xff 以 32 kHz 周期计数,达到后自动产生 ocp_rst
18:14 Class G 触发中断前的 OCP 次数 RW 0x1f OCP 发生的次数阈值
13:5 RCV 的 OCP 持续长度 RW 0x7 以 32 kHz 周期计数,达到后自动产生 ocp_rst
4:0 RCV 触发中断前的 OCP 次数 RW 0x2 OCP 发生的次数阈值

16.3.1.10 AUD_DET_CLK_DIV 寄存器(偏移 0xE8)

位段 字段 类型 复位 描述
31:28 保留 RO 0 预留
27:16 hok_deb_div RW 0xFF 挂机键去抖分频
15:12 保留 RO 0 预留
11:0 plg_deb_div RW 0xFF 插拔去抖分频

16.3.1.11 AUD_INT_MSK 寄存器(偏移 0xF0)

位段 字段 类型 复位 描述
31:3 保留 RO 0 预留
2 aud_ocpgr_int / aud_ocpgl_int / aud_ocpab_int 的中断屏蔽 RW 0x0 0:使能中断;1:屏蔽中断
1 插入/拔出中断屏蔽 RW 0x0 0:使能;1:屏蔽
0 hook_key_int_msk RW 0x0 0:使能;1:屏蔽

16.3.2 AUD_MCUSYSCTRL 寄存器

备注:基地址 = 0xC0880000

16.3.2.1 SHUBSSP0_CLK_RES_CTRL 寄存器(偏移 0x28)

位段 字段 类型 复位 描述
31:19 保留 RO 0 预留
18:8 shubssp0 时钟分频 RW 0x0 fclk = source_clk / (shubssp0_fclk_div + 1)
7:6 保留 RO 0 预留
5:4 shubssp0 fclk 选择 RW 0x0 00:62 MHz;01:24.576 MHz;10:13 MHz;11:3.25 MHz
3 保留 RO 0 预留
2 shubssp0 pclk 使能 RW 0x0 0:禁用;1:使能
1 shubssp0 fclk 使能 RW 0x0 0:禁用;1:使能
0 shubssp0 复位使能 RW 0x0 0:禁用;1:使能

16.3.2.2 SHUBI2C0_CLK_RES_CTRL 寄存器(偏移 0x30)

位段 字段 类型 复位 描述
31:19 保留 RO 0 预留
18:8 shubi2c0 时钟分频 RW 0x0 fclk = source_clk / (shubi2c0_fclk_div + 1)
7:6 保留 RO 0 预留
5:4 shubi2c0 fclk 选择 RW 0x0 00:62 MHz;01:26 MHz;10:13 MHz;11:3.25 MHz
3 保留 RO 0 预留
2 shubi2c0 pclk 使能 RW 0x0 0:禁用;1:使能
1 shubi2c0 fclk 使能 RW 0x0 0:禁用;1:使能
0 shubi2c0 复位使能 RW 0x0 0:禁用;1:使能

16.3.2.3 UART1_CLK_RES_CTRL 寄存器(偏移 0x3C)

位段 字段 类型 复位 描述
31:19 保留 RO 0 预留
18:8 uart 时钟分频 RW 0x0 fclk = source_clk / (uart_fclk_div + 1)
7:6 保留 RO 0 预留
5:4 uart fclk 选择 RW 0x0 00:62 MHz;01:26 MHz;10:13 MHz;11:3.25 MHz
3 保留 RO 0 预留
2 uart pclk 使能 RW 0x0 0:禁用;1:使能
1 uart fclk 使能 RW 0x0 0:禁用;1:使能
0 uart 复位使能 RW 0x0 0:禁用;1:使能

16.3.2.4 R_CAN_CLK_RES_CTRL 寄存器(偏移 0x48)

位段 字段 类型 复位 描述
31:19 保留 RO 0 预留
18:8 CAN 时钟分频 RW 0x0 fclk = source_clk / (shubi2c1_fclk_div + 1)
7:6 保留 RO 0 预留
5:4 CAN fclk 选择 RW 0x0 00:62 MHz;01:26 MHz;10:13 MHz;11:3.25 MHz
3 保留 RO 0 预留
2 CAN pclk 使能 RW 0x0 0:禁用;1:使能
1 CAN fclk 使能 RW 0x0 0:禁用;1:使能
0 CAN 复位使能 RW 0x0 0:禁用;1:使能

16.3.2.5 R_R_IR_CLK_RES_CTRL 寄存器(偏移 0x4C)

位段 字段 类型 复位 描述
31:19 保留 RO 0 预留
18:8 保留 RO 0 预留
7:6 保留 RO 0 预留
5:4 保留 RO 0 预留
3 保留 RO 0 预留
2 R_IR pclk 使能 RW 0x0 0:禁用;1:使能
1 保留 RO 0 预留
0 R_IR 复位使能 RW 0x0 0:禁用;1:使能

16.3.2.6 DDR_REMAP_BASE 寄存器(偏移 0xC0)

位段 字段 类型 复位 描述
31:0 ddr_remap_base RW 0x0 STAR 内核访问 DDR 的基地址。内存窗口 0x3000_0000–0x3FFF_FFFF 映射到 ddr_remap_base + 0x0 至 ddr_remap_base + 0x0FFF_FFFF。

16.3.2.7 UART0_CLK_RES_CTRL 寄存器(偏移 0xD8)

位段 字段 类型 复位 描述
31:19 保留 RO 0 预留
18:8 uart 时钟分频 RW 0x0 fclk = source_clk / (uart_fclk_div + 1)
7:6 保留 RO 0 预留
5:4 uart fclk 选择 RW 0x0 00:62 MHz;01:26 MHz;10:13 MHz;11:3.25 MHz
3 保留 RO 0 预留
2 uart pclk 使能 RW 0x0 0:禁用;1:使能
1 uart fclk 使能 RW 0x0 0:禁用;1:使能
0 uart 复位使能 RW 0x0 0:禁用;1:使能

16.3.3 AUD_AUDCLOCK 寄存器

备注:基地址 = 0xC0882000

16.3.3.1 AUDIO_CODEC_TX_RX_CLK_CTRL 寄存器(偏移 0x14)

位段 字段 类型 复位 描述
31:18 保留 RO 0 预留
17:16 sspa_func_clk_source_sel RW 0x0 0:SSPA_FCLK_SRC=245.76 MHz;1:SSPA_FCLK_SRC=24.576 MHz
15 保留 RO 0 预留
14:4 sspa_func_clk_div RW 0x9f SSPA_FCLK = SSPA_FCLK_SRC / (SSPA_FCLK_DIV + 1)
3 保留 RO 0 预留
2 sspa_func_clk_en RW 0x0 0:门控;1:打开
1 tx_rx_bus_clk_en RW 0x0 0:门控;1:打开
0 tx_rx_sw_rstn RW 0x0 0:复位;1:释放复位

16.3.3.2 AUDIO_DFE_CLK_CTRL 寄存器(偏移 0x1C)

位段 字段 类型 复位 描述
31:6 保留 RO 0 预留
5 dfe_sw_reset RW 0x0 0:复位;1:释放复位
4 dfe_func_clk_enable RW 0x0 0:禁用;1:使能
3 dac_sw_reset RW 0x0 0:复位;1:释放复位
2 dac_clk_inv_en RW 0x0 0:使用原始时钟;1:使用反相信号
1 adc_sw_reset RW 0x0 0:复位;1:释放复位
0 adc_clk_inv_en RW 0x0 0:使用原始时钟;1:使用反相信号

16.3.3.3 AUDIO_I2S1_TX_RX_CLK_CTRL 寄存器(偏移 0x40)

位段 字段 类型 复位 描述
31:18 保留 RO 0 预留
17:16 sspa_func_clk_source_sel RW 0x0 0:245.76 MHz;1:24.576 MHz
15 保留 RO 0 预留
14:4 sspa_func_clk_div RW 0x9f SSPA_FCLK = SSPA_FCLK_SRC / (SSPA_FCLK_DIV + 1)
3 保留 RO 0 预留
2 sspa_func_clk_en RW 0x0 0:门控;1:打开
1 tx_rx_bus_clk_en RW 0x0 0:门控;1:打开
0 tx_rx_sw_rstn RW 0x0 0:复位;1:释放复位

16.3.3.4 AUDIO_HDMI_CLK_CTRL 寄存器(偏移 0x44)

位段 字段 类型 复位 描述
31:18 保留 RO 0 预留
17:16 sspa_func_clk_source_sel RW 0x0 0:245.76 MHz;1:24.576 MHz
15 保留 RO 0 预留
14:4 sspa_func_clk_div RW 0x9f SSPA_FCLK = SSPA_FCLK_SRC / (SSPA_FCLK_DIV + 1)
3 保留 RO 0 预留
2 sspa_func_clk_en RW 0x0 0:门控;1:打开
1 tx_rx_bus_clk_en RW 0x0 0:门控;1:打开
0 tx_rx_sw_rstn RW 0x0 0:复位;1:释放复位

16.3.3.5 AUDIO_I2S0_TX_RX_CLK_CTRL 寄存器(偏移 0x60)

位段 字段 类型 复位 描述
31:18 保留 RO 0 预留
17:16 sspa_func_clk_source_sel RW 0x0 0:245.76 MHz;1:24.576 MHz
15 保留 RO 0 预留
14:4 sspa_func_clk_div RW 0x9f SSPA_FCLK = SSPA_FCLK_SRC / (SSPA_FCLK_DIV + 1)
3 保留 RO 0 预留
2 sspa_func_clk_en RW 0x0 0:门控;1:打开
1 tx_rx_bus_clk_en RW 0x0 0:门控;1:打开
0 tx_rx_sw_rstn RW 0x0 0:复位;1:释放复位

16.3.4 AUD_AHBDMA 寄存器

备注:基地址 = 0xC0884000

16.3.4.1 DMA_DCR 寄存器(偏移 0x00)

位段 字段 类型 复位 描述
31:3 保留 RO 0 预留
2 DMA 访问模式 RW 0x0 0:特权访问;1:用户访问
1 DMA 软复位 W1C 0x0 写 1 产生 3 周期复位脉冲
0 DMA 使能 RW 0x0 0:禁用;1:使能

16.3.4.2 DMA_SR 寄存器(偏移 0x04)

各通道中断挂起位(写 1 清除,W1C)。

位段 字段 类型 复位 描述
31:16 保留 RO 0 预留
15 CH15 Int pending W1C 0x0 1:有中断,写 1 清除
14 CH14 Int pending W1C 0x0 1:有中断,写 1 清除
13 CH13 Int pending W1C 0x0 1:有中断,写 1 清除
12 CH12 Int pending W1C 0x0 1:有中断,写 1 清除
11 CH11 Int pending W1C 0x0 1:有中断,写 1 清除
10 CH10 Int pending W1C 0x0 1:有中断,写 1 清除
9 CH9 Int pending W1C 0x0 1:有中断,写 1 清除
8 CH8 Int pending W1C 0x0 1:有中断,写 1 清除
7 CH7 Int pending W1C 0x0 1:有中断,写 1 清除
6 CH6 Int pending W1C 0x0 1:有中断,写 1 清除
5 CH5 Int pending W1C 0x0 1:有中断,写 1 清除
4 CH4 Int pending W1C 0x0 1:有中断,写 1 清除
3 CH3 Int pending W1C 0x0 1:有中断,写 1 清除
2 CH2 Int pending W1C 0x0 1:有中断,写 1 清除
1 CH1 Int pending W1C 0x0 1:有中断,写 1 清除
0 CH0 Int pending W1C 0x0 1:有中断,写 1 清除

16.3.4.3 DMA_DIMR 寄存器(偏移 0x08)

位段 字段 类型 复位 描述
31:16 保留 RO 0 预留
15:0 通道 n 中断屏蔽 RW 0xFFFF 通道 15~0:0 开启中断;1 屏蔽中断

16.3.4.4 DMA_SARN 寄存器(偏移 0x080 + 0x40×n)

位段 字段 类型 复位 描述
31:0 源地址 RW 0x0 DMA 传输读取的源地址。不支持非对齐访问:32 位传输忽略地址低 2 位;8 位传输精确按地址开始。软件需确保对齐。

16.3.4.5 DMA_DARN 寄存器(偏移 0x084 + 0x40×n)

位段 字段 类型 复位 描述
31:0 目的地址 RW 0x0 DMA 写入的目的地址。不支持非对齐访问:32 位传输忽略地址低 2 位;8 位传输精确按地址开始。软件需确保对齐。

16.3.4.6 DMA_CNTRN 寄存器(偏移 0x088 + 0x40×n)

位段 字段 类型 复位 描述
31:24 保留 RO 0 预留
23:0 计数(Count) RW 0x0 本次 DMA 传输的字节数。

16.3.4.7 DMA_CCRN 寄存器(偏移 0x08C + 0x40×n)

位段 字段 类型 复位 描述
31:14 保留 RO 0 预留
13:12 目的模式 RW 0x0 0x0:内存;0x2:FIFO;0x1/0x3:保留
11:10 源模式 RW 0x0 0x0:内存;0x2:FIFO;0x1/0x3:保留
9:8 保留 RO 0 预留
7:6 目的数据宽度 RW 0x0 00:32 位;01:8 位;10:16 位;11:保留
5:4 源数据宽度 RW 0x0 00:32 位;01:8 位;10:16 位;11:保留
3 请求使能(REN) RW 0x0 1:由外设 dma_req 触发突发;0:由 CEN 触发
2:1 保留 RO 0 预留
0 通道使能(CEN) RW 0x0 1:使能;0:禁用。注意:在 AHB 突发中途清 0 会中止突发。

16.3.4.8 DMA_RSSRN 寄存器(偏移 0x090 + 0x40×n)

位段 字段 类型 复位 描述
31:6 保留 RO 0 预留
5:0 请求源选择 RW 0x0 选择 64 路 dma_req 中的 1 路:000000 表示 dma_req[0],…,111111 表示 dma_req[63]。

16.3.4.9 DMA_BLRN 寄存器(偏移 0x094 + 0x40×n)

位段 字段 类型 复位 描述
31:6 保留 RO 0 预留
5:0 突发长度 RW 0x0 为一次 DMA 突发传输的字节数:000001=1 字节读+1 字节写,…,111111=63 字节读+63 字节写;000000=64/64。

16.3.4.10 DMA_TRSF_CNT 寄存器(偏移 0x09C + 0x40×n)

位段 字段 类型 复位 描述
31:24 保留 RO 0 预留
23:0 TRSF_CNT RO 0x0 已传输的字节数(只读统计)。

16.3.4.11 DMA_BTYPE 寄存器(偏移 0x0A0 + 0x40×n)

位段 字段 类型 复位 描述
31:2 保留 RO 0 预留
1:0 突发类型 RW 0x0 0x0:INCR;0x2:INCR4;0x3:INCR8;0x4:INCR16

16.3.5 PWM 寄存器

备注:PWMn(n = 1…20)基地址为 0xD401A000,步长 0x400

16.3.5.1 PWM_CRX 寄存器(偏移 0x0 + (n-1)×0x400)

PWM 控制寄存器。用于配置 PWM 模块的行为,包括:

  • 关断响应方式
  • 时钟分频:通过调整输入时钟频率来确定缩放后的计数器时钟频率
位段 字段 类型 复位 描述
31:9 保留 RO 0x0 预留
8 PWM_OUTCNTen RW 0x0 PWM 输出计数器寄存器使能;0:禁用;1:使能
7 保留 RO 0 预留
6 PWM 关断模式 RW 0x0 0:优雅关断(SoC 停钟时渐停);1:立即关断(SoC 停钟时立刻停止)
5:0 Prescale RW 0x0 缩放后计数时钟频率:Freq = PSCLK_PWM / (PRESCALE + 1)

16.3.5.2 PWM_DCR 寄存器(偏移 0x4 + (n-1)×0x400)

PWM 占空比寄存器。配置 PWM_OUT 的占空比。

位段 字段 类型 复位 描述
31:11 保留 RO 0x0 预留
10 全占空比 RW 0x0 0:由“PWM_OUT 占空比”字段决定;1:输出持续为高
9:0 PWM_OUT 占空比 RW 0x0 高电平时间 = (PRESCALE + 1) × (1 / 12.8 MHz)。当“全占空比”=1 时本字段无效。

16.3.5.3 PWM_PCR 寄存器(偏移 0x8 + (n-1)×0x400)

PWM 周期控制寄存器。配置 PWM_OUT 的周期时间;当写 0 时,PWM_OUT 将保持为高。

位段 字段 类型 复位 描述
31:10 保留 RO 0x0 预留
9:0 周期值 RW 0x4 PWM 周期 = (Period Value + 1) × (1 / 缩放后时钟频率)。写 0 会导致 PWM_OUT 持续为高。

16.3.5.4 PWM_OUTCNT 寄存器(偏移 0x10 + (n-1)×0x400)

PWM 输出计数器寄存器。

位段 字段 类型 复位 描述
31:16 保留 RO 0x0 预留
15:0 计数器值 RW 0x0 指定 PWM 输出脉冲数。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment