系统
复位
概述
复位模块根据输入复位源产生各个模块的复位信号,支持整个芯片的全局复位和各个模块的单独复位。
复位实现为异步复位,同步撤离。
复位控制
复位控制的输入信号分为:
- 全局复位控制。
- 单独模块复位控制。
芯片可以使用的复位控制方式如表2-1所示。
表2-1 复位控制
| 复位方式 | 来源 | 复位时间 | 复位范围 | 复位后芯片模式 |
|---|---|---|---|---|
| POR复位(Power on Reset) | PMU POR模块输出。 | 400μs | 全芯片 | WORK |
| Watch Dog复位控制 | Watch Dog模块输出,软件可以屏蔽。 | - | 全芯片/模块可配置 | WORK |
| 全局软复位控制 | 软件配置。 | - | 全芯片 | WORK |
| 模块软复位控制 | CRG(Clock and Reset Generator)寄存器,软件配置。 | 软件控制 | 模块 | 该模块处于复位状态,其余模块处于Work。 |
复位信号
表2-2 复位信号
| 信号名称 | 含义 | 复位时间 | I/O | 说明 |
|---|---|---|---|---|
| PWR_ON | 芯片上下电管脚:1. 拉高PWR_ON管脚,芯片完成上电。2. 拉低PWR_ON管脚,芯片完成复位,并且下电。 | 1ms/5ms | I | - |
复位约束
芯片第一次上电,PWR_ON时间要大于1ms;芯片上电后,拉低PWR_ON再拉高PWR_ON的时间需要大于5ms。
时钟
概述
时钟管理模块对芯片时钟输入、生成、控制进行统一的管理,其功能包括:
- 时钟输入的管理和控制。
- 时钟高频与低频的切换。
- 时钟分频和控制。
- 时钟的门控控制。
- 各模块工作时钟的生成。
时钟分配
正常工作时,各模块的时钟分配如表2-3所示。
表2-3 模块时钟分配
| 模块名称 | 时钟频率(MHz) | 模块名称 | 时钟频率(MHz) |
|---|---|---|---|
| CPU | 240 | WDT(WatchDog) | 晶体分频 |
| CPU Bus | 240 | RTC(Real-Time Clock) | 0.032 |
| Timer | 晶体分频 | UART | 160 |
| GPIO | 120 | EFUSE | 晶体 |
| WiFi MAC | 120 | BT MAC | 32 |
| WiFi PHY | 320 | BT PHY | 32 |
| 晶体 | 40/24 | PMU OSC | 0.032 |
| I2C | 80 | SPI | 160 |
| QSPI | 64 | I2S | 8.192等 |
时钟控制
时钟管理模块主体包括:
- PLL频率控制。
- 时钟分频和时钟源选择控制。
- 时钟门控管理。
电源管理与低功耗模式控制
概述
芯片的低功耗模式用于有效减少芯片的功耗,芯片提供多种低功耗的控制来动态降低芯片的功耗:
-
系统工作模式控制 除了Work模式之外,各种模式对功耗都有一定的减少作用,可以根据实际的功耗要求和功能要求选择不同的工作模式。
-
时钟门控和时钟频率调整
- 提供时钟关断功能,可以关闭没有必要的时钟,减少芯片的功耗。
- 系统工作的时钟频率可以进行调整,在满足功能的情况下可以调节时钟频率,动态降低芯片功耗。
- 模块级低功耗控制 提供模块级的低功耗控制,可以在某模块不工作的情况下,关断该模块或使模块处于低功耗状态,以减少芯片的功耗。
系统工作模式
系统工作模式分为以下三种模式:
-
Work 正常工作状态,所有电源供电均打开,完成正常的WiFi收发等业务。
-
Light Sleep 浅睡模式为可快速恢复业务收发的睡眠模式,关闭收发时钟以降低功耗。此时CPU配置为WFI(Wait For Interrupt)模式,等待中断唤醒后恢复收发,Flash、IO保持供电,系统内发生任意中断均可唤醒CPU(如定时中断,外设通信中断,GPIO中断等);SoC系统可选晶体或PLL时钟,时钟频率和外设的通信速率有关。
-
Shutdown 关机模式,芯片通过PWR_ON管脚拉低之后进入Shutdown模式,整芯片下电。当PWR_ON管脚拉高后退出Shutdown模式,进入到Work模式。
处理器子系统
系统提供一个自研RISC-V处理器作为主控CPU,完成各种系统任务和控制工作。处理器带有32KB指令Cache、4KB数据Cache。
该芯片CPU具有以下功能特点:
- 处理器的工作频率最高可达240MHz。
- 支持直接模式和向量模式的中断方式,支持1个nmi中断,以及64个非标准外部中断。
- 支持Flash Patch功能,支持192个指令比较器和2个地址比较器。
- 支持边沿和电平两种中断触发方式。
- 支持PMP(Physical Memory Protection)功能。
- 支持JTAG和SWD(Serial Wire Debug)调试接口。
存储器空间映射
地址空间映射如表2-4所示。
表2-4 存储器地址空间映射
| Slave Name | 地址范围(Start) | 地址范围(End) |
|---|---|---|
| CPU_ITCM | 0x0010_0000 | 0x0017_FFFF |
| CPU_DTCM | 0x0018_0000 | 0x001C_7FFF |
| | |-reserved (读取返回dead_beef) | 0x001C_8000 | 0x001F_FFFF |
| NOR_FLASH (读取范围超过Flash大小时,地址卷绕读取) | 0x0020_0000 | 0x009F_FFFF |
| SHARE_RAM | 0x00A0_0000 | 0x00A9_8FFF |
| | |-reserved (读取返回resp_error) | 0x00A9_9000 | 0x00BF_FFFF |
| PKE_ROM | 0x00C0_0000 | 0x00C0_0BFF |
| | |-reserved (读取返回随机值) | 0x00C0_0C00 | 0x00C0_0FFF |
| | |-reserved (读取返回resp_error) | 0x00C0_1000 | 0x3FFF_FFFF |
| SYS_CTL0 | 0x4000_0000 | 0x4000_3FFF |
| | |-reserved (读取返回dead_dead) | 0x4000_4000 | 0x4000_4FFF |
| RTC | 0x4000_5000 | 0x4000_50FF |
| | |-reserved (读取返回dead_dead) | 0x4000_5100 | 0x4000_5FFF |
| WDT | 0x4000_6000 | 0x4000_6FFF |
| | |-reserved (读取返回dead_dead) | 0x4000_7000 | 0x4000_FFFF |
| | |-reserved (读取返回resp_error) | 0x4001_0000 | 0x43FF_FFFF |
| SYS_CTL1 | 0x4400_0000 | 0x4400_1FFF |
| TIMER | 0x4400_2000 | 0x4400_2FFF |
| | |-reserved (读取返回dead_dead) | 0x4400_3000 | 0x4400_3FFF |
| SYS_CTL2 | 0x4400_4000 | 0x4400_7FFF |
| EFUSE_CTL | 0x4400_8000 | 0x4400_BFFF |
| LSADC_CTL | 0x4400_C000 | 0x4400_CFFF |
| IO_CONFIG | 0x4400_D000 | 0x4400_DFFF |
| TSENSOR_CTL | 0x4400_E000 | 0x4400_EFFF |
| | |-reserved (读取返回dead_dead) | 0x4400_F000 | 0x4400_FFFF |
| UART0 | 0x4401_0000 | 0x4401_0FFF |
| UART1 | 0x4401_1000 | 0x4401_1FFF |
| UART2 | 0x4401_2000 | 0x4401_2FFF |
| | |-reserved (读取返回dead_dead) | 0x4401_3000 | 0x4401_7FFF |
| I2C0 | 0x4401_8000 | 0x4401_80FF |
| I2C1 | 0x4401_8100 | 0x4401_81FF |
| | |-reserved (读取返回dead_dead) | 0x4401_8200 | 0x4401_FFFF |
| SPI | 0x4402_0000 | 0x4402_00FF |
| | |-reserved (读取返回dead_dead) | 0x4402_0100 | 0x4402_0FFF |
| QSPI | 0x4402_1000 | 0x4402_10FF |
| | |-reserved (读取返回dead_dead) | 0x4402_1100 | 0x4402_3FFF |
| PWM0~7 | 0x4402_4000 | 0x4402_4FFF |
| I2S | 0x4402_5000 | 0x4402_50FF |
| | |-reserved (读取返回dead_dead) | 0x4402_5100 | 0x4402_7FFF |
| GPIO0~7 | 0x4402_8000 | 0x4402_8FFF |
| GPIO8~15 | 0x4402_9000 | 0x4402_9FFF |
| GPIO16~18 | 0x4402_A000 | 0x4402_AFFF |
| | |-reserved (读取返回dead_dead) | 0x4402_B000 | 0x440F_FFFF |
| SEC_APB | 0x4410_0000 | 0x4411_4FFF |
| | |-reserved (读取返回dead_dead) | 0x4411_5000 | 0x4411_FFFF |
| WIFI_SUB | 0x4421_0000 | 0x4421_3FFF |
| | |-reserved (读取返回resp_error) | 0x4421_4000 | 0x47FF_FFFF |
| SFC_CFG | 0x4800_0000 | 0x4800_1FFF |
| | |-reserved (读取返回resp_error) | 0x4800_2000 | 0x48FF_FFFF |
| BSLE_SUB | 0x4900_0000 | 0x4903_FFFF |
| | |-reserved (读取返回resp_error) | 0x4904_0000 | 0x49FF_FFFF |
| DMA_CFG | 0x4A00_0000 | 0x4A00_0FFF |
中断系统
中断分配
芯片支持向量模式和直接模式的中断方式,支持边沿和电平两种中断触发方式。支持优先级可编程,优先级配置寄存器(共3bit)可配置7级的优先级。
中断系统包括:
- CPU的内部标准中断:中断编号0 ~ 25。
- CPU外部的非标准中断:所支持的非标准中断编号如表2-5所示。
表2-5 非标准中断编号列表
| Int No. | Int Name | Description |
|---|---|---|
| nmi | TEE_NMI_INT | nmi软中断&WDT全局中断。 |
| 26 | TIMER_INT[0] | Timer[0]的全局中断。 |
| 27 | TIMER_INT[1] | Timer[1]的全局中断。 |
| 28 | TIMER_INT[2] | Timer[2]的全局中断。 |
| 29 | RTC_IRQ | RTC的全局中断。 |
| 30 | Reserved | 保留。 |
| 31 | I2C0_INT | I2C0中断。 |
| 32 | I2C1_INT | I2C1中断。 |
| 33 | GPIO_INT[0] | GPIO[7:0]上报的组合中断。 |
| 34 | GPIO_INT[1] | GPIO[15:8]上报的组合中断。 |
| 35 | GPIO_INT[2] | GPIO[23:16]上报的组合中断。 |
| 36 | SOFT_INT[0] | CPU软中断0。 |
| 37 | SOFT_INT[1] | CPU软中断1。 |
| 38 | SOFT_INT[2] | CPU软中断2。 |
| 39 | SOFT_INT[3] | CPU软中断3。 |
| 40 | COEX_WL_INT | 共存WLAN软中断。 |
| 41 | COEX_BT_INT | 共存BT软中断。 |
| 42 | COEX_WIFI_RESUME_INT | 共存WLAN恢复射频中断。 |
| 43 | SPI_INT | SPI中断。 |
| 44 | WLPHY_INT | WLAN PHY中断。 |
| 45 | WLMAC_INT | WLAN MAC中断。 |
| 46 | BLE_INT | BLE中断。 |
| 47 | SLE_INT | SLE中断。 |
| 48 | TSENSOR_INT | TSENSOR中断。 |
| 49 | PMU_CMU_ERR_INT | PMU/CMU异常中断。 |
| 50 | DIAG_INT | 维测中断。 |
| 51 | I2S_INT | I2S中断。 |
| 52 | QSPI_INT | QSPI中断。 |
| 53 | UART0_INT | UART0中断。 |
| 54 | UART1_INT | UART1中断。 |
| 55 | UART2_INT | UART2中断。 |
| 56 | PWM_ABNOR_INT | PWM_ABNOR中断。 |
| 57 | PWM_CFG_INT | PWM_CFG中断。 |
| 58 | SFC_INT | SFC中断。 |
| 59 | DMA_INT | DMA中断。 |
| 60 | TIMER_ABNOR_INT | TIMER[2:0]异常中断。 |
| 61 | I2S_TX_INT | I2S_TX中断。 |
| 62 | I2S_RX_INT | I2S_RX中断。 |
| 63 | PKE_REE_INT | PKE REE中断。 |
| 64 | SPACC_REE_INT | SPACC REE中断。 |
| 65 | RKP_REE_INT | RKP REE中断。 |
| 66 | KLAD_REE_INT | KLAD REE中断。 |
| 67 | GLP UART RX WAKE INT | GLP UART RX唤醒中断。 |
| 68 | TIMING_GEN_INT | TIMING_GEN中断。 |
| 69 | MAC_MONITOR_INT | MAC维测中断。 |
| 70 | MEM_MONITOR_INT | MEM维测中断。 |
| 71 | TCM_MONITOR_INT | TCM维测中断。 |
| 72 | LSADC_INTR | LSADC中断。 |
| 89~73 | Reserved | 保留。 |
中断结构
芯片使用CPU内部集成的中断控制器,所有的外设或寄存器触发的非标准中断均直接连至CPU内部进行处理。
本节主要介绍非IP中断,各个IP的中断说明请参见各IP对应章节。
NMI中断
须知
TEE_NMI_INT[tee_nmi_int]不会自动清零,在触发中断后需要将该值写回0。
NMI(Non-Maskable Interrupt)中断用于控制软件,由WDOG中断和寄存器触发,通过使能WDOG或写TEE_NMI_INT[tee_nmi_int]为1触发NMI中断。
软中断
软中断为通过配置寄存器触发中断的中断触发方式,包含4个可以通过写寄存器触发的中断(软中断0~软中断3)。
软中断0~软中断3的触发方式相同,以使用软中断0为例,配置步骤如下:
步骤 1 写SOFT_INT_EN[soft_int0_en]为1,打开软中断0的使能。
步骤 2 写SOFT_INT_SET[soft_int0_set]为1,将软中断0置位。
此寄存器为自清零寄存器,写1后自动回零,写0无效。
步骤 3 软件进入软中断0处理程序,此时可读取SOFT_INT_STS[soft_int0_sts]查询中断状态:
0:无中断。 1:有中断。
步骤 4 写SOFT_INT_CLR[soft_int0_clr]为1,清除软中断0。
此寄存器为自清零寄存器,写1后自动回零,写0无效。
----结束
寄存器概览
中断系统寄存器概览如表2-6所示。
表2-6 中断系统寄存器概览(基址是0x44000000)
| Offset Address | Register | Description |
|---|---|---|
| 0x0040 | NMI_INT | WDT中断查询&NMI中断配置寄存器。 |
| 0x0150 | SOFT_INT_EN | CPU软中断使能寄存器。 |
| 0x0154 | SOFT_INT_SET | CPU软中断置位寄存器。 |
| 0x0158 | SOFT_INT_CLR | CPU软中断清除寄存器。 |
| 0x015C | SOFT_INT_STS | CPU软中断查询寄存器。 |
寄存器描述
NMI_INT
NMI_INT为WDT中断查询&NMI中断配置寄存器。
Offset Address:0x0040 Total Reset Value:0x00000000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| 31:2 | RO | reserved | 保留。 | 0x00000000 |
| 1 | RO | wdt_int | 看门狗中断查询寄存器。0:WDT中断无效;1:WDT中断有效。 | 0x0 |
| 0 | RW | tee_nmi_int | 软控nmi中断配置寄存器。0:拉低CPU NMI软中断;1:拉高CPU NMI软中断。 | 0x0 |
SOFT_INT_EN
SOFT_INT_EN为CPU软中断使能寄存器。
Offset Address:0x0150 Total Reset Value:0x00000000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| 31:4 | RO | reserved | 保留。 | 0x0000000 |
| 3 | RW | soft_int3_en | CPU软中断3使能开关寄存器。0:使能无效;1:使能有效。 | 0x0 |
| 2 | RW | soft_int2_en | CPU软中断2使能开关寄存器。0:使能无效;1:使能有效。 | 0x0 |
| 1 | RW | soft_int1_en | CPU软中断1使能开关寄存器。0:使能无效;1:使能有效。 | 0x0 |
| 0 | RW | soft_int0_en | CPU软中断0使能开关寄存器。0:使能无效;1:使能有效。 | 0x0 |
SOFT_INT_SET
SOFT_INT_SETCPU软中断置位寄存器。
Offset Address:0x0154 Total Reset Value:0x00000000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| 31:4 | RO | reserved | 保留。 | 0x0000000 |
| 3 | W1_PULSE | soft_int3_set | CPU软中断3置位配置寄存器。0:置位无效;1:置位有效。 | 0x0 |
| 2 | W1_PULSE | soft_int2_set | CPU软中断2置位配置寄存器。0:置位无效;1:置位有效。 | 0x0 |
| 1 | W1_PULSE | soft_int1_set | CPU软中断1置位配置寄存器。0:置位无效;1:置位有效。 | 0x0 |
| 0 | W1_PULSE | soft_int0_set | CPU软中断0置位配置寄存器。0:置位无效;1:置位有效。 | 0x0 |
SOFT_INT_CLR
SOFT_INT_CLR为CPU软中断清除寄存器。
Offset Address:0x0158 Total Reset Value:0x00000000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| 31:4 | RO | reserved | 保留。 | 0x0000000 |
| 3 | W1_PULSE | soft_int3_clr | CPU软中断3清除配置寄存器。0:清除无效;1:清除有效。 | 0x0 |
| 2 | W1_PULSE | soft_int2_clr | CPU软中断2清除配置寄存器。0:清除无效;1:清除有效。 | 0x0 |
| 1 | W1_PULSE | soft_int1_clr | CPU软中断1清除配置寄存器。0:清除无效;1:清除有效。 | 0x0 |
| 0 | W1_PULSE | soft_int0_clr | CPU软中断0清除配置寄存器。0:清除无效;1:清除有效。 | 0x0 |
SOFT_INT_STS
SOFT_INT_STS为CPU软中断查询寄存器。
Offset Address:0x015C Total Reset Value:0x00000000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| 31:4 | RO | reserved | 保留。 | 0x0000000 |
| 3 | RO | soft_int3_sts | CPU软中断3状态查询寄存器。0:中断无效;1:中断有效。 | 0x0 |
| 2 | RO | soft_int2_sts | CPU软中断2状态查询寄存器。0:中断无效;1:中断有效。 | 0x0 |
| 1 | RO | soft_int1_sts | CPU软中断1状态查询寄存器。0:中断无效;1:中断有效。 | 0x0 |
| 0 | RO | soft_int0_sts | CPU软中断0状态查询寄存器。0:中断无效;1:中断有效。 | 0x0 |
RTC
概述
RTC的功能主要是实现定时、计数功能,可以供操作系统用作系统时钟,也可以供应用程序用作定时和计数。
功能描述
RTC具有以下功能特点:
- 48bit位宽的free running递加计数器。
- 计数器上电解复位后即开始计数,无需任何使能配置。
- 计数时钟为32kHz时钟。
- 支持配置中断产生寄存器阈值,计数器递加到阈值时产生中断。
- 支持计数器值实时读取。
Timer
概述
芯片中有3个相同且可独立配置的定时器(Timer),主要实现定时、计数功能的IP,可供程序用作定时和计数。
功能描述
Timer具有以下功能特点:
- 3个32bit的可独立配置的Timer单元。
-
每个Timer单元支持三种工作模式: one-shot模式:加载配置值到计数器,进行递减计数,递减到0后停止计数。 periodic模式:Timer持续计数,加载配置值到计数器,进行递减计数,递减到0后再次载入配置值并继续递减计数。 free running模式:Timer持续计数,计数器起始值为0xFFFF_FFFF,进行递减计数,递减到0后再次载入0xFFFF_FFFF并继续递减计数。
-
每个Timer单元支持独立使能。
看门狗
概述
WatchDog用于系统异常恢复,如果未得到更新则隔一定时间(可编程)产生一个系统复位信号,当WatchDog在此之前关闭工作时钟或更新计数器,复位信号不会产生。
功能描述
WatchDog内置1个可编程32bit计数器,具有以下功能特点:
- 内置计数器进行递减计数,当由预设值递减到0时产生超时。
- WatchDog具有2种工作方式。
- 方式一:如果超时,则只产生系统复位。
- 方式二:第一次超时,WatchDog产生中断;第二次超时,如果中断未被清除,WatchDog产生系统复位。
- 可配置超时间隔。