CH583/CH582/CH581 数据手册
V1.3
概述
CH583 是集成 BLE 无线通讯的 32 位 RISC 微控制器。片上集成 2Mbps 低功耗蓝牙 BLE 通讯模块、
2 个全速 USB 主机和设备控制器及收发器、2 个 SPI、4 个串口、ADC、触摸按键检测模块、RTC 等丰
富的外设资源。
功能
l 内核 Core:
- 32 位 RISC 处理器 WCH RISC-V4A
- 支持 RV32IMAC 指令集,硬件乘法和除法
- 低功耗两级流水线,高性能 1.56DMIPS
- 多档系统主频,最低 32KHz
- 特有高速的中断响应机制
l 512K/1M 字节非易失存储 FlashROM:
- 448KB 用户应用程序存储区 CodeFlash
- 32KB 用户非易失数据存储区 DataFlash
- 24KB 系统引导程序存储区 BootLoader
- 8KB 系统非易失配置信息存储区 InfoFlash
- 支持 ICP、ISP 和 IAP,支持 OTA 无线升级
- 20MHz 系统主频下基本零等待
l 32K 字节易失数据存储 SRAM:
- 30KB 双电源供电的睡眠保持存储区 RAM30K
- 2KB 双电源供电的睡眠保持存储区 RAM2K
l 电源管理和低功耗:
- 支持 3.3V 和 2.5V 电源,CH583M 支持 1.8V
- 内置 DC-DC 转换,可降低功耗
- 空闲模式 Idle:1.6mA
- 暂停模式 Halt:320uA
- 睡眠模式 Sleep:0.7uA~2.8uA 多档
- 下电模式 Shutdown:0.2uA~2.3uA 多档
- 可选低功耗或高精度的电池电压低压监控
l 安全特性:AES-128 加解密,芯片唯一 ID
l 低功耗蓝牙 BLE:
- 集成 2.4GHz RF 收发器和基带及链路控制
- 接收灵敏度-98dBm,可编程+7dBm 发送功率
- BLE 符合 Bluetooth Low Energy 5.0 规范
- 支持 2Mbps、1Mbps、500Kbps 和 125Kbps
- 在 7dBm 发送功率时无线通讯距离约 500 米
- 在 7dBm 发送功率 125Kbps 通讯距离约 1000 米
- 提供优化的协议栈和应用层 API,支持组网
l 实时时钟 RTC:支持定时和触发两种模式
l 通用串行总线 USB:
- 2 组独立的 USB 控制器和收发器
- 15 个端点,支持 DMA,支持 64 字节数据包
- 集成 USB 2.0 全速收发器 PHY,无需外围器件
- 支持全/低速的 Host 主机和 Device 设备模式
l 模数转换 ADC:
- 12 位模数转换器,支持差分和单端输入
- 14 路外部模拟信号通道和 2 路内部信号
l 触摸按键检测模块 TouchKey:14 路通道
l 定时器 Timer 和脉宽调制 PWM:
- 4 组 26 位定时器,16MHz 主频定时可达 4.2S
- 4 路捕捉/采样,支持上升沿/下降沿/双边沿
- 4 路 26 位 PWM 输出,8 路 8 位 PWM 输出
l 异步串口 UART:
- 4 组独立 UART,兼容 16C550,内置 8 级 FIFO
- 23 位计数器,通讯波特率可达 6Mbps
- UART0 支持部分 Modem,支持硬件自动流控
- UART0 支持多机通讯时从机地址自动匹配
l 串行外设接口 SPI:
- 2 组独立 SPI,内置 FIFO
- SCK 串行时钟频率可达系统主频的一半
- SPI0 支持 Master 和 Slave 模式,支持 DMA
l 两线串行接口 I2C:
- 支持 Master 和 Slave 模式,兼容 SMBus
- 支持 7 位或 10 位地址和总线广播
- 支持仲裁、错误检测、PEC 校验、延长时钟
l 温度传感器 TS
l 时钟:内置 PLL,内置 32KHz 时钟
l 通用输入输出端口 GPIO:
- 40 个 GPIO,其中 4 个支持 5V 信号输入
- 可选上拉或下拉电阻,可选输出驱动能力
- 32 个 GPIO 支持电平或边沿中断输入
- 32 个 GPIO 支持电平或边沿唤醒输入
l 封装形式:QFN48_5X5、QFN28_4X4
CH583 相比 CH582 多了 SPI1 主机和 512KB 闪存用于存储数据或备份代码,支持最低 1.7V 电源电
压。CH581 基于 CH582 简化,去掉了一组 USB、触摸按键检测模块、I2C 模块和两个串口,FlashROM
总容量仅 256KB,ADC 不支持 DMA。除了上述差异,其它基本与 CH582 相同,可直接参考 CH582 手册
和资料。
芯片
型号
用户闪存
+引导闪存
+数据闪存
CH583M
CH582M
CH582F
CH581F
448+24+544K
448+24+32K
448+24+32K
192+24+32K
数据 RTC 定
I2C BLE ADC 电容 USB USB DC 最低 通
捕
串
封装
存储 时 时
PWM
SPI 主 蓝 及 触摸 主 设 - 电源 用
捉
口
形式
RAM 钟 器
从 牙 TS 按键 机 备 DC 电压 I/O
30+2K
4
30+2K
4 4
√
组 4
30+2K
30+2K
4
4+8
2 √
14+1 14 路
4
4+8
√
14+1 14 路
组 主
√
4+6
√
8+1 8 路
从
4+6 2
×
6+1 ×
2 2
2 2
2 2
× √
√
√
√
√
1.7V
2.3V
2.3V
2.3V
40
40
20
20
QFN48
QFN48
QFN28
QFN28
1
第 1 章 引脚信息
21
20
19
18
17
16
15
ANT
VINTA
X32MI
X32MO
PB22/TMR3/RXD2_
PB23/RST/TMR0_/TXD2_/PWM11
PB4/RXD0/PWM7
14
13
12
11
10
9
8
1
2
3
4
5
6
7
34
33
32
31
30
29
28
27
26
25
0
ANT
VINTA
X32MI
X32MO
PB18
PB19
PB20/SDA_/RXD3_
PB21/SCL_/TXD3_
PB22/TMR3/RXD2_
PB23/RST/TMR0_/TXD2_/PWM11
1
2
3
4
5
6
7
8
9
10
PB0/CTS/PWM6
PB1/DSR/PWM7_
PB2/RI/PWM8_
PB3/DCD/PWM9_
PB4/RXD0/PWM7
PB5/DTR
PB6/RTS/PWM8
CH583M
PB7/TXD0/PWM9
PB10/UD-/TMR1_
PB11/UD+/TMR2_
PB12/U2D-/SCS_/SDA/RXD1_
PB13/U2D+/SCK0_/SCL/TXD1_
PB14/TIO/DSR_/MOSI_/PWM10
PB15/TCK/MISO_/DTR_
1
2
3
4
5
6
7
8
9
10
VDCID
VSW
VIO33/VDD33
PA7/TXD2/PWM5_/AIN11
PA8/RXD1/AIN12
PA9/TMR0/TXD1/AIN13
PB9
PB8
PB17
PB16
VDCIA
PA4/RXD3/AIN0
PA5/TXD3/AIN1
PA6/RXD2/PWM4_/AIN10
PA0/SCK1/AIN9
PA1/MOSI1/AIN8
PA2/TMR3_/MISO1/AIN7
PA3/AIN6
PA15/MISO/RXD0_/AIN5
PA14/MOSI/TXD0_/AIN4
PA13/SCK0/PWM5/AIN3
PA12/SCS/PWM4/AIN2
PA11/X32KO/TMR2
PA10/X32KI/TMR1
GND
14
13
12
11
10
9
8
35
36
37
38
39
40
41
42
43
44
45
46
47
48
0
ANT
VINTA
X32MI
X32MO
PB22/TMR3
PB23/RST/TMR0_/PWM11
PB4/RXD0/PWM7
PA11/X32KO/TMR2
PA10/X32KI/TMR1
VDCID
VSW
VIO33/VDD33
PA8/RXD1
PA9/TMR0/TXD1
PB7/TXD0/PWM9
PB10/UD-/TMR1_
PB11/UD+/TMR2_
CH581F
PB12/SCS_/RXD1_
PB13/SCK0_/TXD1_
PB14/TIO/DSR_/MOSI_/PWM10
PB15/TCK/MISO_/DTR_
1
2
3
4
5
6
7
GND
VDCIA
PA4/AIN0
PA5/AIN1
PA15/MISO/RXD0_/AIN5
PA14/MOSI/TXD0_/AIN4
PA13/SCK0/PWM5/AIN3
PA12/SCS/PWM4/AIN2
0
22
23
24
25
26
27
28
PB7/TXD0/PWM9
PB10/UD-/TMR1_
CH582F
PB11/UD+/TMR2_
PB12/U2D-/SCS_/SDA/RXD1_
PB13/U2D+/SCK0_/SCL/TXD1_
PB14/TIO/DSR_/MOSI_/PWM10
PB15/TCK/MISO_/DTR_
PA11/X32KO/TMR2
PA10/X32KI/TMR1
VDCID
VSW
VIO33/VDD33
PA8/RXD1/AIN12
PA9/TMR0/TXD1/AIN13
VDCIA
PA4/RXD3/AIN0
PA5/TXD3/AIN1
PA15/MISO/RXD0_/AIN5
PA14/MOSI/TXD0_/AIN4
PA13/SCK0/PWM5/AIN3
PA12/SCS/PWM4/AIN2
GND
22
23
24
25
26
27
28
21
20
19
18
17
16
15
0
24
23
22
21
20
19
18
17
16
15
14
13
12
11
PB0/CTS/PWM6
PB1/DSR/PWM7_
PB2/RI/PWM8_
PB3/DCD/PWM9_
PB4/RXD0/PWM7
PB5/DTR
PB6/RTS/PWM8
CH582M
PB7/TXD0/PWM9
PB10/UD-/TMR1_
PB11/UD+/TMR2_
PB12/U2D-/SCS_/SDA/RXD1_
PB13/U2D+/SCK0_/SCL/TXD1_
PB14/TIO/DSR_/MOSI_/PWM10
PB15/TCK/MISO_/DTR_
VDCID
VSW
VIO33/VDD33
PA7/TXD2/PWM5_/AIN11
PA8/RXD1/AIN12
PA9/TMR0/TXD1/AIN13
PB9
PB8
PB17
PB16
VDCIA
PA4/RXD3/AIN0
PA5/TXD3/AIN1
PA6/RXD2/PWM4_/AIN10
PA0/AIN9
PA1/AIN8
PA2/TMR3_/AIN7
PA3/AIN6
PA15/MISO/RXD0_/AIN5
PA14/MOSI/TXD0_/AIN4
PA13/SCK0/PWM5/AIN3
PA12/SCS/PWM4/AIN2
PA11/X32KO/TMR2
PA10/X32KI/TMR1
GND
35
36
37
38
39
40
41
42
43
44
45
46
47
48
ANT
VINTA
X32MI
X32MO
PB18
PB19
PB20/SDA_/RXD3_
PB21/SCL_/TXD3_
PB22/TMR3/RXD2_
PB23/RST/TMR0_/TXD2_/PWM11
34
33
32
31
30
29
28
27
26
25
1.1 引脚排列
图 1-1 CH582M/CH583M(QFN48)和 CH582F/CH581F(QFN28)封装引脚排列
24
23
22
21
20
19
18
17
16
15
14
13
12
11
2
1.2 引脚描述
QFN48 QFN28 引脚
引脚号 引脚号 名称
引脚
类型
复用功能
在前优先
0
0
GND
电源
-
1
3
VDCID
电源
-
2
4
VSW
电源
-
VDD33
电源
VBAT
VIO33
电源
-
3
5
4
无
PA7
I/O/A
TXD2
/PWM5_
/AIN11
5
6
PA8
I/O/A
RXD1
/AIN12
6
7
PA9
I/O/A
TMR0
/TXD1
/AIN13
7
8
9
10
无
无
无
无
PB9
PB8
PB17
PB16
I/O
I/O
I/O
I/O
-
PB15
I/O
/5VT
TCK
/MISO_
/DTR_
I/O
/5VT
TIO
/MOSI_
/PWM10
/DSR_
I/O
/5VT
U2D+
/SCK0_
/SCL
/TXD1_
I/O
/5VT
U2D/SCS_
/SDA
/RXD1_
11
12
13
14
8
9
10
11
PB14
PB13
PB12
功能描述
芯片底板,公共接地端,电压 0V 参考点。
内部数字电路 LDO 调整器的电源输入,需外接退耦电容。
启用 DC-DC 时建议 2.2uF(支持 0.47uF~4.7uF,容值小略
省电但降低 BLE 灵敏度 2dBm)
,
不启用时建议不小于 0.1uF。
内部 DC-DC 开关输出,启用 DC-DC 时必须贴近引脚串接电
感连接到 VDCID,建议用 10uH 电感(支持 3.3uH~33uH),
不启用 DC-DC 时可以直连 VDCID。
DC-DC 或电池电源输入,需贴近引脚外接退耦电容。启用
DC-DC 时建议 1uF 或 2.2uF,不启用 DC-DC 时 0.1uF 即可。
I/O 电源输入,需贴近引脚外接退耦电容,建议不小于
0.1uF。
PA7:通用双向数字 I/0 引脚。
TXD2:UART2 串行数据输出。
PWM5_:脉宽调制输出通道 5 引脚映射。
AIN11:ADC 模拟信号输入通道 11。
PA8:通用双向数字 I/0 引脚。
RXD1:UART1 串行数据输入。
AIN12:ADC 模拟信号输入通道 12。
PA9:通用双向数字 I/0 引脚。
TMR0:定时器 0 的捕捉输入 0 和 PWM 输出通道 0。
TXD1:UART1 串行数据输出。
AIN13:ADC 模拟信号输入通道 13。
PB9:通用双向数字 I/0 引脚。
PB8:通用双向数字 I/0 引脚。
PB17:通用双向数字 I/0 引脚。
PB16:通用双向数字 I/0 引脚。
PB15:通用双向数字 I/0 引脚。
TCK:两线仿真调试接口的串行时钟输入。注 3
MISO_:SPI0 的 MISO 引脚映射。
DTR_:UART0 的 DTR 引脚映射。
PB14:通用双向数字 I/0 引脚。
TIO:仿真调试接口的串行数据输入输出,内置上拉。注 3
MOSI_:SPI0 的 MOSI 引脚映射。
PWM10:脉宽调制输出通道 10。
DSR_:UART0 的 DSR 引脚映射。
PB13:通用双向数字 I/0 引脚。
U2D+:USB2 总线的 D+数据线。
SCK0_:SPI0 的 SCK 引脚映射。
SCL:I2C 串行时钟引脚,主机输出和输入/从机输入。
TXD1_:UART1 的 TXD1 引脚映射。
PB12:通用双向数字 I/0 引脚。
U2D-:USB2 总线的 D-数据线。
SCS_:SPI0 的 SCS 引脚映射。
SDA:I2C 串行数据引脚,开漏输出和输入。
RXD1_:UART1 的 RXD1 引脚映射。
3
15
12
PB11
I/O/A
UD+
/TMR2_
16
13
PB10
I/O/A
UD/TMR1_
17
14
PB7
I/O
TXD0
/PWM9
18
无
PB6
I/O
RTS
/PWM8
19
无
PB5
I/O
DTR
20
15
PB4
I/O
RXD0
/PWM7
21
无
PB3
I/O
DCD
/PWM9_
22
无
PB2
I/O
RI
/PWM8_
23
无
PB1
I/O
DSR
/PWM7_
24
无
PB0
I/O
CTS
/PWM6
25
16
PB23
I/O
RST#
/TMR0_
/TXD2_
/PWM11
26
17
PB22
I/O
TMR3
/RXD2_
27
无
PB21
I/O
SCL_
/TXD3_
28
无
PB20
I/O
SDA_
/RXD3_
29
30
31
32
无
无
18
19
PB19
PB18
X32MO
X32MI
I/O
I/O
I/A
A
-
33
20
VINTA
电源
-
PB11:通用双向数字 I/0 引脚。
UD+:USB 总线的 D+数据线。
TMR2_:定时器 2 的 TMR2 引脚映射。
PB10:通用双向数字 I/0 引脚。
UD-:USB 总线的 D-数据线。
TMR1_:定时器 1 的 TMR1 引脚映射。
PB7:通用双向数字 I/0 引脚。
TXD0:UART0 串行数据输出。
PWM9:脉宽调制输出通道 9。
PB6:通用双向数字 I/0 引脚。
RTS:UART0 的 MODEM 输出信号,请求发送。
PWM8:脉宽调制输出通道 8。
PB5:通用双向数字 I/0 引脚。
DTR:UART0 的 MODEM 输出信号,数据终端就绪。
PB4:通用双向数字 I/0 引脚。
RXD0:UART0 串行数据输入。
PWM7:脉宽调制输出通道 7。
PB3:通用双向数字 I/0 引脚。
DCD:UART0 的 MODEM 输入信号,载波检测。
PWM9_:脉宽调制输出通道 9 引脚映射。
PB2:通用双向数字 I/0 引脚。
RI:UART0 的 MODEM 输入信号,振铃指示。
PWM8_:脉宽调制输出通道引脚映射。
PB1:通用双向数字 I/0 引脚。
DSR:UART0 的 MODEM 输入信号,数据装置就绪。
PWM7_:脉宽调制输出通道 7 引脚映射。
PB0:通用双向数字 I/0 引脚。
CTS:UART0 的 MODEM 输入信号,清除发送。
PWM6:脉宽调制输出通道 6。
PB23:通用双向数字 I/0 引脚。
RST#:外部复位输入,低电平有效,内置上拉电阻。
TMR0_:定时器 0 的 TMR0 引脚映射。
TXD2_:UART2 的 TXD2 引脚映射。
PWM11:脉宽调制输出通道 11。
PB22:通用双向数字 I/0 引脚。
TMR3:定时器 3 的捕捉输入 3 和 PWM 输出通道 3。
RXD2_:UART2 的 RXD2 引脚映射。
PB21:通用双向数字 I/0 引脚。
SCL_:I2C 串行时钟引脚映射。
TXD3_:UART3 的 TXD3 引脚映射。
PB20:通用双向数字 I/0 引脚。
SDA_:I2C 串行数据引脚映射。
RXD3_:UART3 的 RXD3 引脚映射。
PB19:通用双向数字 I/0 引脚。
PB18:通用双向数字 I/0 引脚。
高频振荡器 HSE 的反相输出端,外接 32MHz 晶体的一端。
高频振荡器 HSE 的输入端,外接 32MHz 晶体的另一端。
内部模拟电路的电源节点,需贴近引脚外接退耦电容。启
用 DC-DC 时建议 1uF(支持 0.1uF~2.2uF,容值小略省电
4
34
21
ANT
A
-
35
22
VDCIA
电源
-
36
23
PA4
I/O/A
RXD3
/AIN0
37
24
PA5
I/O/A
TXD3
/AIN1
38
无
PA6
I/O/A
RXD2
/PWM4_
/AIN10
39
无
PA0
I/O/A
SCK1
/AIN9
40
无
PA1
I/O/A
MOSI1
/AIN8
41
无
PA2
I/O/A
TMR3_
/MISO1
/AIN7
42
无
PA3
I/O/A
AIN6
43
25
PA15
I/O/A
MISO
/RXD0_
/AIN5
44
26
PA14
I/O/A
MOSI
/TXD0_
/AIN4
45
27
PA13
I/O/A
SCK0
/PWM5
/AIN3
46
28
PA12
I/O/A
SCS
/PWM4
/AIN2
47
1
PA11
I/O/A
X32KO
/TMR2
48
2
PA10
I/O/A
X32KI
/TMR1
但降低 BLE 灵敏度 1dBm),不启用时建议不小于 0.1uF。
RF 射频信号输入输出,建议直连天线。
内部模拟电路 LDO 调整器的电源输入,需外接退耦电容。
建议不小于 0.1uF,建议直连 VDCID。
PA4:通用双向数字 I/0 引脚。
RXD3:UART3 串行数据输入。
AIN0:ADC 模拟信号输入通道 0。
PA5:通用双向数字 I/0 引脚。
TXD3:UART3 串行数据输出。
AIN1:ADC 模拟信号输入通道 1。
PA6:通用双向数字 I/0 引脚。
RXD2:UART2 串行数据输入。
PWM4_:脉宽调制输出通道 4 引脚映射。
AIN10:ADC 模拟信号输入通道 10。
PA0:通用双向数字 I/0 引脚。
SCK1:SPI1 串行时钟引脚,主机输出。
AIN9:ADC 模拟信号输入通道 9。
PA0:通用双向数字 I/0 引脚。
MOSI1:SPI1 串行数据引脚,主机输出。
AIN8:ADC 模拟信号输入通道 8。
PA0:通用双向数字 I/0 引脚。
TMR3_:定时器 3 的 TMR3 引脚映射。
MISO1:SPI1 串行数据引脚,主机输入。
AIN7:ADC 模拟信号输入通道 7。
PA3:通用双向数字 I/0 引脚。
AIN6:ADC 模拟信号输入通道 6。
PA15:通用双向数字 I/0 引脚。
MISO:SPI0 串行数据引脚,主机输入/从机输出。
RXD0_:UART0 的 RXD0 引脚映射。
AIN5:ADC 模拟信号输入通道 5。
PA14:通用双向数字 I/0 引脚。
MOSI:SPI0 串行数据引脚,主机输出/从机输入。
TXD0_:UART0 的 TXD0 引脚映射。
AIN4:ADC 模拟信号输入通道 4。
PA13:通用双向数字 I/0 引脚。
SCK0:SPI0 串行时钟引脚,主机输出/从机输入。
PWM5:脉宽调制输出通道 5。
AIN3:ADC 模拟信号输入通道 3。
PA12:通用双向数字 I/0 引脚。
SCS:SPI0 从机模式下的片选输入,低电平有效。
PWM4:脉宽调制输出通道 4。
AIN2:ADC 模拟信号输入通道 2。
PA11:通用双向数字 I/0 引脚。
X32KO:低频振荡器的反相输出端,外接 32KHz 晶体的一端。
TMR2:定时器 2 的捕捉输入 2 和 PWM 输出通道 2。
PA10:通用双向数字 I/0 引脚。
X32KI:低频振荡器的输入端,外接 32KHz 晶体的另一端。
TMR1:定时器 1 的捕捉输入 1 和 PWM 输出通道 1。
5
注:
(1)、引脚类型:
I=TTL/CMOS 电平斯密特输入;
O=CMOS 电平三态输出;
A=模拟信号输入或输出;
5VT=支持 5V 信号电压输入。
(2)、引脚的复用功能及映射根据其优先级在表中按从高到底排列,其中 GPIO 功能为最低优先级。
(3)、两线仿真调试接口通过 ISP 工具配置。仿真调试接口启用后,PB15 和 PB14 仅用作 TCK 和 TIO,
不再用于 GPIO 或外设复用功能引脚。关闭仿真调试接口后,PB15 和 PB14 才可用于 GPIO 和外
设复用功能引脚。
(4)、其它封装的引脚参考上述同名引脚的说明。
6
第 2 章 系统结构及存储器
2.1 系统结构
下图为 CH583 芯片系统结构框图。
Battery
Monitor
AIN0~
AIN13
Temperature
Sensor
PGA
ADC
SYS/AUX
INT
DMA
Flash
Control
TouchKey
RXD*4,
CTS,DSR,
RI,DCD
TXD*4,
RTS,DTR
SCS
SCK*2
MISO*2
MOSI*2
SCL
SDA
UART*4
INT
DMA
I2C
INT
PWMx
PWM4~11
Watch-Dog
Timer
PA0~PA15
PB0~PB23
32bits RISC Core
INT*4
SPI*2
VIO33
WCH RISC-V4A
INT*4
DMA*2
INT
GPIO
INT
Address & Data Bus, Interrupt & DMA Arbiter
Timer*4
Capture/PWM
TMR*4
INT*n
RTC
USB
INT
DMA
DMA
Arbiter
DMA
AES
WAKE
CK48M
CK48M
RAM30K
VDDR30K
RAM2K
VDDR2K
UD+
UDU2D+
U2D-
BaseBand
BLE
RF transceiver
PMU
VDDR
USB Phy
USB2 USB Phy
INT
DMA
DMA
INT
TIO
TCK
SWD
INT
CK32K
FlashROM
ANT
XT32M
SLEEP / WAKE
VDCIA
VINTA
LDO
HCLK
POR
LVR
POWER
MUX
CLK
Generator
CK32K
LDO
LDO
VDD33
X32KI
X32KO
32KHz
RC OSC
CLK
Divider
VDCID
VSW
32KHz
Crystal
Fpll
DC/DC
ULP
LDO
VBAT
VDDR
PLL
480MHz
CK32M
32MHz
Crystal
X32MI
X32MO
CK48M
图 2-1 CH583 内部结构框图
2.2 存储器映射
CH583 的寻址空间主要包括 CODE 区/FlashROM、DATA 区/SRAM、外设等几个不同区域,详见下图
所示。
7
图 2-2 存储器映射图
2.3 存储器映射表
各存储器映射区域地址范围如下表所示:
表 2-1 存储器映射区域地址
地址范围
0x00000000-0x0007FFFF
0x00080000-0x1FFFFFFF
0x20000000-0x20007FFF
0x20008000-0x3FFFFFFF
0x40000000-0x4000FFFF
0x40010000-0xE000BFFF
0xE000C000-0xE000FFFF
0xE0010000-0xFFFFFFFF
用途
描述
片上 CODE 区域,非易失存储器
保留
片上 DATA 区域,易失存储器
保留
各种外设
保留
系统内部各种外设
保留
512KB,FlashROM
32KB,SRAM
多个外设模块
系统控制空间 SCS
-
2.3.1 片上 CODE 区域映射表
表 2-2 CODE 区域地址
地址范围
用途
描述
8
0x00000000-0x0006FFFF
0x00000000-0x0002FFFF
0x00070000-0x00077FFF
0x00078000-0x0007DFFF
0x0007E000-0x0007FFFF
CH583/CH582:用户应用程序存储区 CodeFlash
CH581:用户应用程序存储区 CodeFlash
用户非易失数据存储区 DataFlash
CH583 另有 512KB 闪存通过子程序提供存取
系统引导程序存储区 BootLoader
系统非易失配置信息存储区 InfoFlash
448KB
192KB
32KB
24KB
8KB
地址 0x0007E000-0x0007EEFF 的配置信息可以由用户通过工具设置。
表 2-3 用户级非易失配置信息说明
位地址
名称
用途
位 2~位 0
位3
位4
位5
位6
RESERVED
CFG_RESET_EN
CFG_DEBUG_EN
RESERVED
CFG_BOOT_EN
位7
CFG_ROM_READ
位 27~位 8
位 31~位 28
RESERVED
VALID_SIG
保留
RST#外部手工复位输入引脚使能
两线仿真调试接口 SWD 使能
保留
系统引导程序 BootLoader 使能
FlashROM 中的代码和数据保护模式:
0-禁止编程器读出,程序保密;1-允许读出
保留
配置信息有效标志,固定值
默认值
101b
0
1
0
1
1
0FFF0Fh
0100b
注:当 CFG_DEBUG_EN=1、CFG_RESET_EN=0、CFG_ROM_READ=1,两线仿真调试接口启用。
2.3.2 片上 DATA 区域映射表
表 2-4 DATA 区域地址
地址范围
0x20000000-0x200077FF
0x20007800-0x20007FFF
用途
主+辅双电源供电的可独立保持存储区 RAM30K
主+辅双电源供电的可独立保持存储区 RAM2K
描述
30KB
2KB
2.3.3 外设地址分配
CH583 主要包含以下外设,每个外设占用一定的地址空间,外设寄存器的实际访问地址为:基地
址+偏移地址。在后续章节中,寄存器的地址有详细说明。下表为各个外设基地址的分配表。
表 2-5 外设基地址分配表
外设编号
外设名称
外设基址
SYS(PMU/RTC/GPIO 等)
1
0x4000 1000
AUX(ADC/TKEY/PLL 等)
2
FlashROM-Control
0x4000 1800
3
TMR0
0x4000 2000
4
TMR1
0x4000 2400
5
TMR2
0x4000 2800
6
TMR3
0x4000 2C00
7
UART0
0x4000 3000
8
UART1
0x4000 3400
9
UART2
0x4000 3800
10
UART3
0x4000 3C00
11
SPI0
0x4000 4000
12
SPI1
0x4000 4400
9
13
14
15
16
I2C
PWMx(PWM4~PWM11)
USB
USB2
17
Radio:BLE
0x4000
0x4000
0x4000
0x4000
0x4000
0x4000
4800
5000
8000
8400
C000
D000
下表为后续章节寄存器描述中“访问”的解释说明:
表 2-6 访问属性说明
缩写词
RF
RO
WO
RZ
WZ
RW
RW1
WA
RWA
描述
只读且读取值为固定值,不受复位影响。
只读。
只写,读取值为 0 或无效。
只读,读取完之后自动清 0。
写则清 0。
可读可写。
可读,写 1 则清 0。
只写且仅安全模式下,读取值为 0 或无效。
可读,仅安全模式下可写。
下表为后续章节中使用的缩写解释说明:
表 2-7 名词缩写说明
缩写词
HSE
LSE
LSI
CK32M
CK32K
Fpll
HCLK
Fsys
Tsys
RAM2K
RAM30K
0x
H
B
描述
外部高频晶体振荡时钟源(建议 32MHz)
外部低频晶体振荡时钟源(建议 32KHz)
内部低频 RC 时钟振荡源(应用软件运行时校准后为 32KHz)
高频时钟源(默认 32MHz)
低频时钟源(默认 32KHz)
PLL 输出时钟(默认频率为 480MHz)
系统主频时钟
系统主频时钟频率
系统主频时钟周期(1/Fsys)
高地址的 2KB SRAM
低地址的 30KB SRAM
以其开头的数据表示 16 进制数
以其结束的数据表示 16 进制数
以其结束的数据表示 2 进制数
10
第 3 章 中断
系统内置快速可编程中断控制器(PFIC: Programmable Fast Interrupt Controller)
,最多支
持 255 个中断向量。当前系统管理了 20 个外设中断通道和 8 个内核中断通道,其他中断源保留。
3.1 中断控制器
20 个外设中断,每个中断请求都有独立的触发和屏蔽控制位,有专用的状态位。
1 个不可屏蔽中断 NMI。
特有快速中断进出机制,硬件自动压栈和恢复,无需指令开销。
特有快速中断响应机制,4 路可编程直达中断向量地址。
3.2 系统 SysTick 定时器
内核自带了一个 64 位计数器(SysTick)
,支持 HCLK 或者 HCLK/8 作为时基,具有较高优先级。
3.3 中断和异常向量
下表列出了芯片系统的向量表
表 3-1 中断向量表
编号
优先
级
优先级
类型
0
1
2
3
4
5
6-7
8
9
10-11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-3
-2
-1
-1
-1
-1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
固定
固定
固定
固定
固定
固定
可设置
可设置
可设置
可设置
可设置
可设置
可设置
可设置
可设置
可设置
可设置
可设置
可设置
可设置
名称
Reset
NMI
EXC
ECALL-M
ECALL-U
BREAKPOINT
SysTick
SWI
TMR0
GPIO_A
GPIO_B
SPI0
BLEL
BLEB
USB
USB2
TMR1
TMR2
UART0
UART1
说明
保留
复位
不可屏蔽中断
所有类型的失效、异常中断
保留
机器模式回调中断
保留
用户模式回调中断
断点回调中断
保留
系统嘀嗒定时器
保留
软件中断
保留
TMR0 定时器 0 中断
GPIO 端口 PA 通用 I/O 中断
GPIO 端口 PB 通用 I/O 中断
SPI0 中断
无线模块的 LLE 中断
无线模块的 BB 中断
USB 中断
USB2 中断
TMR1 定时器 1 中断
TMR2 定时器 2 中断
UART0 异步串口 0 中断
UART1 异步串口 1 中断
地址
0x0000_0000
0x0000_0004
0x0000_0008
0x0000_000C
0x0000_0014
0x0000_0020
0x0000_0024
0x0000_0030
0x0000_0038
0x0000_003C
0x0000_0040
0x0000_0044
0x0000_0048
0x0000_004C
0x0000_0050
0x0000_0054
0x0000_0058
0x0000_005C
0x0000_0060
0x0000_0064
0x0000_0068
0x0000_006C
11
28
29
30
31
32
33
34
35
14
15
16
17
18
19
20
21
可设置
可设置
可设置
可设置
可设置
可设置
可设置
可设置
RTC
ADC
I2C
PWMX_SPI1
TMR3
UART2
UART3
WDOG_BAT
RTC 实时时钟中断
ADC 和 TouchKey 中断
I2C 中断
PWMX(PWM4~11)中断和 SPI1 中断
TMR3 定时器 3 中断
UART2 异步串口 2 中断
UART3 异步串口 3 中断
看门狗定时器中断/电池低电压中断
0x0000_0070
0x0000_0074
0x0000_0078
0x0000_007C
0x0000_0080
0x0000_0084
0x0000_0088
0x0000_008C
3.4 寄存器
3.4.1 PFIC 寄存器描述
PFIC 相关寄存器基地址:0xE000E000
表 3-2 PFIC 相关寄存器列表
名称
R32_PFIC_ISR1
R32_PFIC_ISR2
R32_PFIC_IPR1
R32_PFIC_IPR2
R32_PFIC_ITHRESDR
R32_PFIC_CFGR
R32_PFIC_GISR
R32_PFIC_IDCFGR
R32_PFIC_FIADDRR0
R32_PFIC_FIADDRR1
R32_PFIC_FIADDRR2
R32_PFIC_FIADDRR3
R32_PFIC_IENR1
R32_PFIC_IENR2
R32_PFIC_IRER1
R32_PFIC_IRER2
R32_PFIC_IPSR1
R32_PFIC_IPSR2
R32_PFIC_IPRR1
R32_PFIC_IPRR2
R32_PFIC_IACTR1
R32_PFIC_IACTR2
R32_PFIC_IPRIORx
R32_PFIC_SCTLR
偏移地址
0x00
0x04
0x20
0x24
0x40
0x48
0x4C
0x50
0x60
0x64
0x68
0x6C
0x100
0x104
0x180
0x184
0x200
0x204
0x280
0x284
0x300
0x304
0x400
0xD10
描述
PFIC 中断使能状态寄存器 1
PFIC 中断使能状态寄存器 2
PFIC 中断挂起状态寄存器 1
PFIC 中断挂起状态寄存器 2
PFIC 中断优先级阈值配置寄存器
PFIC 中断配置寄存器
PFIC 中断全局状态寄存器
PFIC 快速中断 ID 配置寄存器
PFIC 快速中断 0 地址寄存器
PFIC 快速中断 1 地址寄存器
PFIC 快速中断 2 地址寄存器
PFIC 快速中断 3 地址寄存器
PFIC 中断使能设置寄存器 1
PFIC 中断使能设置寄存器 2
PFIC 中断使能清除寄存器 1
PFIC 中断使能清除寄存器 2
PFIC 中断挂起设置寄存器 1
PFIC 中断挂起设置寄存器 2
PFIC 中断挂起清除寄存器 1
PFIC 中断挂起清除寄存器 2
PFIC 中断激活状态寄存器 1
PFIC 中断激活状态寄存器 2
PFIC 中断优先级配置寄存器
PFIC 系统控制寄存器
复位值
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
用户模式下,可以支持全局中断控制,请参考 EVT 评估板资料中提供的示例。
内核中断控制位说明:
1、Reset、NMI、EXC、ECALL-M、ECALL-U、BREAKPOINT 中断默认总是开启。
2、NMI、EXC 支持中断挂起清除和置位控制(PFIC_IPSR1 和 PFIC_IPRR1 寄存器控制)
,不支持中断使
能设置和清除控制。
3、Reset、ECALL-M、ECALL-U、BREAKPOINT 不支持中断挂起清除和置位控制、中断使能设置和清除
控制。
12
PFIC 中断使能状态寄存器 1(PFIC_ISR1)
位
名称
访问
[31:12] INTENSTA
RO
[11:0] Reserved
RO
描述
31#及以下中断当前使能状态。
1:当前编号中断已使能;
0:当前编号中断未启用。
保留。
Reset、NMI、EXC、ECALL 等中断位,下同。
复位值
0
0x0C
PFIC 中断使能状态寄存器 2(PFIC_ISR2)
位
名称
[31:4] Reserved
[3:0]
INTENSTA
访问
描述
RO 保留。
32#及以上中断当前使能状态。
RO 1:当前编号中断已使能;
0:当前编号中断未启用。
PFIC 中断挂起状态寄存器 1(PFIC_IPR1)
位
名称
访问
描述
31#及以下中断当前挂起状态。
[31:12] PENDSTA
RO 1:当前编号中断已挂起;
0:当前编号中断未挂起。
[11:0] Reserved
RO 保留。
复位值
0
0
复位值
0
0
PFIC 中断挂起状态寄存器 2(PFIC_IPR2)
位
名称
[31:4] Reserved
[3:0]
PENDSTA
访问
描述
RO 保留。
32#及以上中断当前挂起状态。
RO 1:当前编号中断已挂起;
0:当前编号中断未挂起。
复位值
0
0
PFIC 中断优先级阈值配置寄存器(PFIC_ITHRESDR)
位
名称
访问
描述
复位值
[31:8] Reserved
RO
保留。
0
中断优先级阈值设置值。
低于当前设置值的中断优先级值,当挂起时不
执行中断服务;此寄存器为 0 时表示阈值寄存
[7:0] THRESHOLD
RW
0
器功能无效。
[7:4]:优先级阈值。
[3:0]:保留,固定为 0,写无效。
PFIC 中断配置寄存器(PFIC_CFGR)
位
[31:16] KEYCODE
名称
访问
WO
描述
对于不同的目标控制位,需要同步写入相应的安
全访问标识数据才能修改,读出数据固定为 0:
KEY1 = 0xFA05;
KEY2 = 0xBCAF;
KEY3 = 0xBEEF。
复位值
0
13
[15:8] Reserved
RO
7
RESETSYS
WO
[6:0]
Reserved
RO
保留。
系统复位(同步写入 KEY3)
。自动清 0。
写 1 有效,写 0 无效。
与 PFIC_SCTLR 寄存器 SYSRESET 位作用相同。
保留。
0
0
0
PFIC 中断全局状态寄存器(PFIC_GISR)
位
名称
访问
描述
复位值
[31:10] Reserved
RO 保留。
0
当前是否有中断处于挂起:
0
9
GPENDSTA
RO
1:有;
0:没有。
当前是否有中断被执行:
0
8
GACTSTA
RO
1:有;
0:没有。
当前中断嵌套状态,目前支持 2 级嵌套,[1:0]
有效。
3:第 2 级中断中;
0
[7:0] NESTSTA
RO
1:第 1 级中断中;
0:没有中断发生;
其他:不可能情况。
PFIC 快速中断 ID 配置寄存器(PFIC_IDCFGR)
位
名称
访问
[31:24]
[23:16]
[15:8]
[7:0]
FIID3
FIID2
FIID1
FIID0
RW
RW
RW
RW
描述
配置快速中断 3 的中断编号。
配置快速中断 2 的中断编号。
配置快速中断 1 的中断编号。
配置快速中断 0 的中断编号。
复位值
0
0
0
0
PFIC 快速中断 0 地址寄存器(PFIC_FIADDRR0)
位
名称
访问
描述
复位值
[31:1] ADDR0
RW 快速中断 0 服务程序地址 bit[31:1],bit0 为 0。 0
快速中断 0 通道使能位:
0
FI0EN
RW
0
1:启用快速中断 0 通道; 0:关闭。
PFIC 快速中断 1 地址寄存器(PFIC_FIADDRR1)
位
名称
访问
描述
复位值
[31:1] ADDR1
RW 快速中断 1 服务程序地址 bit[31:1],bit0 为 0。 0
快速中断 1 通道使能位:
0
FI1EN
RW
0
1:启用快速中断 1 通道; 0:关闭。
PFIC 快速中断 2 地址寄存器(PFIC_FIADDRR2)
位
名称
访问
描述
复位值
[31:1] ADDR2
RW 快速中断 2 服务程序地址 bit[31:1],bit0 为 0。 0
快速中断 2 通道使能位:
0
FI2EN
RW
0
1:启用快速中断 2 通道; 0:关闭。
PFIC 快速中断 3 地址寄存器(PFIC_FIADDRR3)
14
位
[31:1] ADDR3
0
名称
FI3EN
访问
描述
复位值
RW 快速中断 3 服务程序地址 bit[31:1],bit0 为 0。 0
快速中断 3 通道使能位:
0
RW
1:启用快速中断 3 通道; 0:关闭。
PFIC 中断使能设置寄存器 1(PFIC_IENR1)
位
名称
访问
[31:12] INTEN
WO
[11:0] Reserved
RO
描述
31#及以下中断使能控制。
1:当前编号中断使能;
0:无影响。
保留。
复位值
0
0
PFIC 中断使能设置寄存器 2(PFIC_IENR2)
位
名称
[31:4] Reserved
[3:0]
INTEN
访问
描述
RO 保留。
32#及以上中断使能控制。
WO 1:当前编号中断使能;
0:无影响。
复位值
0
0
PFIC 中断使能清除寄存器 1(PFIC_IRER1)
位
名称
访问
[31:12] INTRESET
WO
[11:0] Reserved
RO
描述
31#及以下中断关闭控制。
1:当前编号中断关闭;
0:无影响。
保留。
复位值
0
0
PFIC 中断使能清除寄存器 2(PFIC_IRER2)
位
名称
[31:4] Reserved
[3:0]
INTRESET
访问
描述
RO 保留。
32#及以上中断关闭控制。
WO 1:当前编号中断关闭;
0:无影响。
PFIC 中断挂起设置寄存器 1(PFIC_IPSR1)
位
名称
访问
描述
31#及以下中断挂起设置。
[31:12
PENDSET
WO
1:当前编号中断挂起;
]
0:无影响。
[11:0] Reserved
RO
保留。
PFIC 中断挂起设置寄存器 2(PFIC_IPSR2)
位
名称
访问
描述
[31:4] Reserved
RO 保留。
32#及以上中断挂起设置。
[3:0] PENDSET
WO 1:当前编号中断挂起;
0:无影响。
复位值
0
0
复位值
0
0
复位值
0
0
15
PFIC 中断挂起清除寄存器 1(PFIC_IPRR1)
位
名称
访问
描述
31#及以下中断挂起清除。
[31:12] PENDRESET
WO 1:当前编号中断清除挂起状态;
0:无影响。
[11:0] Reserved
RO 保留。
复位值
0
0
PFIC 中断挂起清除寄存器 2(PFIC_IPRR2)
位
名称
[31:4] Reserved
[3:0]
PENDRESET
访问
描述
RO 保留。
32#及以上中断挂起清除。
WO 1:当前编号中断清除挂起状态;
0:无影响。
PFIC 中断激活状态寄存器 1(PFIC_IACTR1)
位
名称
访问
[31:12] IACTS
RW1
[11:0] Reserved
RO
RO
[3:0]
RW1
IACTS
0
描述
复位值
31#及以下中断执行状态。
1:当前编号中断执行中;
0:当前编号中断未执行。
保留。
PFIC 中断激活状态寄存器 2(PFIC_IACTR2)
位
名称
访问
[31:4] Reserved
复位值
0
0
0
描述
复位值
保留。
32#及以上中断执行状态。
1:当前编号中断执行中;
0:当前编号中断未执行。
0
0
PFIC 中断优先级配置寄存器(PFIC_IPRIORx)
(x=0-63)
控制器支持 256 个中断(0-255)
,每个中断使用 8bit 来设置控制优先级。
31
24 23
16 15
8 7
IPRIOR63
…
IPRIORx
…
IPRIOR0
位
[2047:2040]
…
[31:24]
[23:16]
[15:8]
[7:0]
0
PRIO_255
PRIO_254
PRIO_253
PRIO_252
…
…
…
…
PRIO_(4x+3)
PRIO_(4x+2)
PRIO_(4x+1)
PRIO_(4x)
…
…
…
…
PRIO_3
PRIO_2
PRIO_1
PRIO_0
名称
IP_255
…
IP_3
IP_2
IP_1
IP_0
访问
RW
…
RW
RW
RW
RW
描述
同 IP_0 描述。
…
同 IP_0 描述。
同 IP_0 描述。
同 IP_0 描述。
编号 0 中断优先级配置:
复位值
0
…
0
0
0
0
16
[7:4]:优先级控制位。
[3:0]:保留,固定为 0,写无效。
优先级数值越小则优先级越高。只有 2 级中断嵌
套,即只能抢占 1 次。
PFIC 系统控制寄存器(PFIC_SCTLR)
位
名称
访问
31
SYSRESET
WO
[30:6]
5
Reserved
SETEVENT
RO
WO
4
SEVONPEND
RW
3
WFITOWFE
RW
2
SLEEPDEEP
RW
1
SLEEPONEXIT
RW
0
Reserved
RO
描述
复位值
系统复位。自动清 0。写 1 有效,写 0 无效。
0
与 PFIC_CFGR 寄存器相同效果。
保留。
0
设置事件,可以唤醒 WFE 的情况。
0
当发生事件或者中断挂起状态时,可以从 WFE 指
令后唤醒系统,如果未执行 WFE 指令,将在下次
执行该指令后立即唤醒系统。
0
1:启用的事件和所有中断(包括未开启中断)都
能唤醒系统;
0:只有启用的事件和启用的中断可以唤醒系统。
将 WFI 指令当成是 WFE 执行。
1:将之后的 WFI 指令当做 WFE 指令;
0
0:无作用。
控制系统的低功耗模式:
0
1:deepsleep
0:sleep
控制离开中断服务程序后,系统状态:
1:系统进入低功耗模式;
0
0:系统进入主程序。
保留。
0
3.4.2 WCH 定义 CSR 寄存器
RISC-V 架构中定义了一些控制和状态寄存器(Control and Status Register,CSR)
,用于配置
或标识或记录运行状态。CSR 寄存器属于内核内部的寄存器,使用专用的 12 位地址空间。WCH 芯片除
了 RISC-V 特权架构文档中定义的标准寄存器外,还增加了一些厂商定义寄存器,需要使用 csr 指令
进行访问。说明:此类寄存器标注为“MRW”属性的需要系统在机器模式下才能访问。
中断系统控制寄存器(INTSYSCR)
CSR 地址:0x804
位
名称
[31:2] Reserved
1
INESTEN
0
HWSTKEN
访问
描述
RO 保留。
中断嵌套功能使能。
MRW
1:使能; 0:关闭。
硬件压栈功能使能。
MRW
1:使能; 0:关闭。
异常入口基地址寄存器(MTVEC)
CSR 地址:0x305
位
名称
访问
描述
[31:2] BASEADD
RO 中断向量表基地址。
1
MODE1
RW 中断向量表识别模式。
复位值
0
0
0
复位值
0
0
17
0
MODE0
RW
1:按绝对地址识别,支持全范围,但必须跳转;
0:按跳转指令识别,有限范围,支持非跳指令。
中断或异常入口地址模式选择:
1:根据其编号*4 进行地址偏移;
0:使用统一入口地址。
0
3.4.3 物理内存保护单元 PMP
为了提高系统安全,RISC-V 架构中定义了一套物理地址访问限制,可以为区域内物理内存设置
其读、写、执行属性,区域长度最小 4 字节保护。PMP 单元在用户模式下一直生效,在机器模式下可
选生效,如果违背了当前内存限制,将会产生系统异常中断(EXC)
。
PMP 单元包含 4 组 8bit 的配置寄存器(合计 32bit)和 4 组地址寄存器,需要使用 csr 指令进行
访问,并且在机器模式下进行。
PMP 配置寄存器(PMPCFG0)
CSR 地址:0x3A0
位
名称
访问
[31:24] pmp3cfg
[23:16] pmp2cfg
[15:8] pmp1cfg
[7:0]
MRW
MRW
MRW
pmp0cfg
MRW
描述
见 pmp0cfg。
见 pmp0cfg。
见 pmp0cfg。
位
名称
7
L
[6:5]
[4:3]
2
1
0
A
X
W
R
复位值
0
0
0
描述
锁定使能,机器模式下可解锁:
1:锁定相关寄存器;0:不锁定。
保留
地址对齐及保护区域范围选择。
可执行属性。
可写入属性。
可读出属性
0
地址对齐及保护区域范围选择,对于 A_ADDR ≤ region < B_ADDR 区域进行内存保护(要求
A_ADDR 和 B_ADDR 均 4 字节对齐)
:
2
1、如果 B_ADDR – A_ADDR == 2 ,则采用 NA4 方式;
(G+2)
(G+2)
2、如果 B_ADDR – A_ADDR == 2 ,G ≥ 1,且 A_ADDR 为 2 对齐则采用 NAPOT 方式;
3、否则使用 TOR 方式。
A值
方式
描述
0
OFF
没有区域要保护
顶端对齐区域保护:
pmp0cfg 下,0 ≤ region < pmpaddr0;
pmp1cfg 下,pmpaddr0 ≤ region < pmpaddr1;
1
TOR
pmp2cfg 下,pmpaddr1 ≤ region < pmpaddr2;
pmp3cfg 下,pmpaddr2 ≤ region < pmpaddr3。
pmpaddri-1 = A_ADDR >> 2;
pmpaddri = B_ADDR >> 2。
固定 4 字节区域保护。
2
NA4
pmp0cfg~pmp3cfg 对应 pmpaddr0~pmpaddr3 作为起始地址。
pmpaddri = A_ADDR >> 2。
(G+2)
3
NAPOT
(G+2)
保护 2
区域,G≥1,其中 A_ADDR 为 2 对齐。
(G-1)
pmpaddri = ( A_ADDR >> 2 ) | ( 2
– 1 )
。
18
PMP 地址 0 寄存器(PMPADDR0)
CSR 地址:0x3B0
位
[31:0]
名称
ADDR0
访问
描述
复位值
MRW
PMP 设置地址 0 的 bit[33:2]。实际高 2 位未用
0
PMP 地址 1 寄存器(PMPADDR1)
CSR 地址:0x3B1
位
[31:0]
名称
访问
描述
复位值
MRW PMP 设置地址 1 的 bit[33:2]。实际高 2 位未用
0
ADDR1
PMP 地址 2 寄存器(PMPADDR2)
CSR 地址:0x3B2
位
名称
[31:0] ADDR2
访问
描述
复位值
MRW PMP 设置地址 2 的 bit[33:2]。实际高 2 位未用
0
PMP 地址 3 寄存器(PMPADDR3)
CSR 地址:0x3B3
位
名称
[31:0] ADDR3
访问
描述
复位值
MRW PMP 设置地址 3 的 bit[33:2]。实际高 2 位未用
0
3.4.4 SysTick 寄存器描述
STK 相关寄存器基地址:0xE000F000
表 3-3 STK 相关寄存器列表
名称
偏移地址
描述
R32_STK_CTLR
R32_STK_SR
R32_STK_CNTL
R32_STK_CNTH
R32_STK_CMPLR
R32_STK_CMPHR
0x00
0x04
0x08
0x0C
0x10
0x14
系统计数控制寄存器
系统计数状态寄存器
系统计数器低位寄存器
系统计数器高位寄存器
计数重加载低位寄存器
计数重加载高位寄存器
系统计数控制寄存器(STK_CTLR)
位
名称
访问
31
SWIE
[30:6] Reserved
RW
RO
5
INIT
W1
4
MODE
RW
3
STRE
RW
复位值
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
描述
复位值
软件中断触发使能(SWI)
:
1:触发软件中断;
0:关闭触发。
0
进入软件中断后须将此位清 0,否则一直触发。
保留。
0
计数器初始值更新:
1:向上计数从 0 开始,向下计数从比较值开始;
0
0:无效。
计数模式:
0
1:向下计数;
0:向上计数。
自动重装载计数使能:
1:向上计数到比较值之后从 0 开始计数,向下计
0
数到 0 之后从比较值开始向下计数;
19
2
STCLK
RW
1
STIE
RW
0
STE
RW
计数状态寄存器(STK_SR)
位
名称
[31:1] Reserved
0
CNTIF
访问
RO
RW0
系统计数器低位寄存器(STK_CNTL)
位
名称
访问
[31:0] CNTL
RW
0:继续向上/向下计数。
计数器时钟源选择:
1:HCLK 做时基;
0:HCLK/8 做计数时基。
计数器中断使能控制位:
1:使能计数器中断; 0:无计数器中断。
系统计数器使能控制位:
1:启动系统计数器 STK;
0:关闭系统计数器 STK,计数器停止计数。
描述
保留。
计数值比较标志,写 0 清除,写 1 无效:
1:向上计数达到比较值,向下计数达到 0;
0:未达到比较值。
描述
STK 计数器计数值低 32 位。
系统计数器高位寄存器(STK_CNTH)
位
名称
访问
描述
[31:0] CNTH
RW STK 计数器计数值高 32 位。
0
0
0
复位值
0
0
复位值
0
复位值
0
计数重加载低位寄存器(STK_CMPLR)
位
[31:0] CMPL
名称
访问
描述
RW 设置重加载计数器值低 32 位。
复位值
0
计数重加载高位寄存器(STK_CMPHR)
位
名称
访问
描述
[31:0] CMPH
RW 设置重加载计数器值高 32 位。
复位值
0
20
第 4 章 系统控制
4.1 复位控制
系统支持 6 种复位形式,分别为电源上电复位 RPOR(real power on reset)、外部手工复位
MR(manual reset)、内部软件复位 SR(software reset)、看门狗超时复位 WTR(watch-dog time-out
reset)、下电模式下唤醒导致的全局复位 GRWSM(global reset by waking under shutdown mode)、
常规唤醒导致的局部寄存器复位 LRW(local reset by waking)。
寄存器 R8_GLOB_RESET_KEEP 和 RB_ROM_CODE_OFS,只在 RPOR 或者 GRWSM 复位时被复位,而不受
其它复位形式影响。
下图中时序参数和复位特性参数请参考第 20.5 节的时序参数表。
4.1.1 电源上电复位 RPOR
当电源上电时,芯片内部 POR 模块会产生上电复位,并延时以等待电源稳定。另外,在运行过程
中,当电源电压低于 Vlvr 时,芯片内部 LVR 模块会产生低压复位直到电压回升,并延时以等待电源
稳定。下图为上电复位过程和低压复位过程。
图 4-1 上电复位
4.1.2 外部手工复位 MR
外部手工复位由外部加到 RST#引脚的低电平触发,当复位低电平持续时间大于最小复位脉冲宽
度(Trst)时即触发系统进行复位。
图 4-2 外部复位
4.1.3 内部软件复位 SR
内部软件复位,用于不需要外部干预而自行复位。设置全局复位配置寄存器(R8_RST_WDOG_CTRL)
21
的位 RB_SOFTWARE_RESET 为 1,即可实现软件复位。该位会自动清 0。
4.1.4 看门狗超时复位 WTR
看门狗功能是基于一个 8 位的递增计数器,计数时钟周期为 131072/Fsys。当开启了看门狗超时
复位功能后,一旦此计数器溢出会复位整个系统。
4.1.5 下电模式唤醒后的复位 GRWSM
一旦系统进入下电模式(详见电源管理章节)后,在唤醒信号的作用下,系统将有序执行唤醒操
作,唤醒之后系统将执行全局复位,此复位效果类似于上电复位。
4.1.6 常规唤醒操作引起的复位 LRW
如果系统是从睡眠模式中被唤醒,则在相关电源准备就绪之后会产生复位,此复位为局部复位,
根据需要对睡眠模式下掉电的寄存器进行有选择的复位。
在睡眠模式下,各功能模块的寄存器分为三类:
第一种是属于需数据保持的功能模块的关键寄存器(例如配置/模式等)
,睡眠时由辅助电源继
续供电,数据不丢失,睡眠和唤醒对其数据无影响;
第二种是属于需数据保持的功能模块的可再生寄存器(例如计数器、FIFO 等)
,睡眠时断电,
唤醒后数据是随机数(例如 FIFO 存储单元)或者被复位(例如 FIFO 计数器)
;
第三种是属于无需数据保持的功能模块的寄存器,睡眠时断电,唤醒后数据是随机数(例如
FIFO 存储单元)或者被复位(例如 FIFO 计数器、配置/模式寄存器)
。
LRW 就是用于上述后两种被复位的寄存器。
4.2 安全访问
系统某些寄存器的属性是“RWA”或者“WA”
,表示当前寄存器为安全访问寄存器,可以直接读取
但是写入需要进入安全访问模式。
先写入 R8_SAFE_ACCESS_SIG 寄存器 0x57;
再写入 R8_SAFE_ACCESS_SIG 寄存器 0xA8;
即可进入安全访问模式,此时可以操作具有“RWA/WA”属性的寄存器,此后约 16 个系统主频周期(Tsys)
都处于安全模式下,该有效期内可以改写一个或多个安全类寄存器,超出上述有效期后将自动终止安
全模式。或者可提前向 R8_SAFE_ACCESS_SIG 寄存器写入 0x00 提前终止安全模式。
4.3 寄存器描述
名称
R8_SAFE_ACCESS_SIG
R8_CHIP_ID
R8_SAFE_ACCESS_ID
R8_WDOG_COUNT
R8_RESET_STATUS
R8_GLOB_ROM_CFG
R8_GLOB_CFG_INFO
R8_RST_WDOG_CTRL
R8_GLOB_RESET_KEEP
R32_FLASH_DATA
R32_FLASH_CONTROL
R8_FLASH_DATA
R8_FLASH_CTRL
表 4-1 系统控制相关寄存器列表
访问地址
描述
0x40001040
安全访问标记寄存器
0x40001041
芯片 ID 寄存器
0x40001042
安全访问 ID 寄存器
0x40001043
看门狗计数器寄存器
0x40001044
复位状态寄存器
0x40001044
FlashROM 应用配置寄存器
0x40001045
全局配置信息状态寄存器
0x40001046
看门狗及复位配置寄存器
0x40001047
复位保持寄存器
0x40001800
FlashROM 字数据寄存器
0x40001804
FlashROM 控制寄存器
0x40001804
FlashROM 字节数据寄存器
0x40001806
FlashROM 存取控制寄存器
复位值
0x00
0x83
0x0C
0x00
0x01
0x01
0xEX
0x00
0x00
0xXXXXXXXX
0x074000XX
0xXX
0x40
22
R8_FLASH_CFG
0x40001807
FlashROM 存取配置寄存器
0x07
安全访问标记寄存器(R8_SAFE_ACCESS_SIG)
位
名称
访问
[7:0]
R8_SAFE_ACCESS_SIG
WO
7
[6:4]
Reserved
RB_SAFE_ACC_TIMER
R0
RO
3
RB_SAFE_ACC_ACT
RO
2
Reserved
R0
RB_SAFE_ACC_MODE
RO
[1:0]
描述
安全访问标记寄存器。
部分寄存器(访问属性为 RWA)为保护寄
存器,必须进入安全访问模式才能进行
写操作。对该寄存器先写入 0x57,再写
入 0xA8,即可进入安全访问模式,并且
限时约 16 个主时钟周期(Tsys),超过则
自动保护。可以写入其它任意值强制直
接退出安全访问模式,回到保护状态。
保留。
当前安全访问时间计数。
当前安全访问模式状态:
1:未锁定/安全访问模式下,可写;
0:锁定,RWA 属性寄存器不可改写。
保留。
当前安全访问模式状态:
11:安全模式,可写入属性 RWA 寄存器;
其他:非安全模式。
复位值
00h
0
000b
0
0
00b
芯片 ID 寄存器(R8_CHIP_ID)
位
[7:0]
名称
R8_CHIP_ID
访问
RF
描述
CH583:固定值 83h,用于识别芯片。
CH582:固定值 82h,用于识别芯片。
CH581:固定值 81h,用于识别芯片。
安全访问 ID 寄存器(R8_SAFE_ACCESS_ID)
位
名称
访问
[7:0]
R8_SAFE_ACCESS_ID
RF
看门狗计数器寄存器(R8_WDOG_COUNT)
位
名称
访问
[7:0]
R8_WDOG_COUNT
RW
描述
固定值 0Ch。
描述
可预置初值的看门狗计数器,一直自动
递增,可从 0xFF 循环到 0x00 再继续。
计数周期 = 131072/Fsys。
复位值
83h
82h
81h
复位值
0Ch
复位值
00h
复位状态寄存器(R8_RESET_STATUS)、FlashROM 应用配置寄存器(R8_GLOB_ROM_CFG)
位
名称
访问
描述
复位值
FlashROM 程序存储区 CodeFlash 的擦除
7
RB_ROM_CODE_WE
RWA /编程使能位:
0
1:允许擦除/编程; 0:该区擦写保护。
FlashROM 数据存储区 DataFlash 的擦除
6
RB_ROM_DATA_WE
RWA /编程使能位:
0
1:允许擦除/编程;0:全部擦写保护。
FlashROM 存取控制接口使能:
5
RB_ROM_CTRL_EN
RWA
0
1:允许控制;
0:禁止存取。
23
4
RB_ROM_CODE_OFS
RWA
3
Reserved
R0
RB_RESET_FLAG
RO
[2:0]
选择用户程序代码在 FlashROM 的起始
偏移地址,
该值不受 MR、
SR、
WTR 或 GRWSM
影响,仅在 RPOR 有效时才能清零:
0:0x000000;
1:0x040000(跳过 ROM 中前 256KB)
。
保留。
最近一次复位状态:
000:软件复位 SR(RB_WDOG_RST_EN=0
时软件复位可产生此状态,否则可复位
但不产生此状态)
;
001:上电复位 RPOR;
010:看门狗超时复位 WTR;
011:外部手动复位 MR;
101:从下电模式唤醒时的复位 GRWSM;
100/110/111:唤醒复位 LRW,且此前的
上一次复位分别是 SR/WTR/MR。
0
0
001b
全局配置信息状态寄存器(R8_GLOB_CFG_INFO)
位
[7:6]
名称
Reserved
访问
R0
5
RB_BOOT_LOADER
RO
4
RB_CFG_DEBUG_EN
RO
3
RB_CFG_BOOT_EN
RO
2
RB_CFG_RESET_EN
RO
1
Reserved
RO
0
RB_CFG_ROM_READ
RO
描述
保留。
Bootloader 状态:
1:当前处于 Bootloader 状态;
0:当前处于用户程序状态。
两线仿真调试接口使能状态:
1:可仿真调试,可读取 FlashROM;
0:禁止仿真调试。
系统引导程序 BootLoader 使能状态:
1:已启用;0:未启用。
RST#外部手动复位输入使能状态:
1:已启用;0:未启用。
保留。
FlashROM 代码和数据区保护状态:
1:外部编程器可读;
0:保护,外部不可访问,程序保密。
看门狗及复位配置寄存器(R8_RST_WDOG_CTRL)
位
名称
访问
描述
[7:5] Reserved
RO
保留。
看门狗定时器中断标志:
1:发生了看门狗计数溢出,即检测到
R8_WDOG_COUNT 递增 0xFF 到 0x00;
4
RB_WDOG_INT_FLAG
RW1 0:看门狗计数未溢出。
标志写 1 清 0,或者重新加载看门狗计
数器值(R8_WDOG_COUNT) 清 0,或者执
行__SEV() 清 0。
3
Reserved
RO
保留。
看门狗定时器中断使能位:
2
RB_WDOG_INT_EN
RWA 1:使能,看门狗计数溢出后产生中断;
0:关闭看门狗定时器中断。
复位值
11b
1/0
0
1
0
0
0
复位值
000b
0
0
0
24
1
RB_WDOG_RST_EN
RWA
0
RB_SOFTWARE_RESET
WA/
WZ
看门狗超时复位使能位:
1:使能,看门狗计数溢出后系统复位;
0:仅作为看门狗定时器。
注:此位置 1 后软件复位操作将不影响
RB_RESET_FLAG 状态。
系统软件复位控制,复位后将自动清零:
1:执行系统软件复位;
0:空闲,无动作。
0
0
复位保持寄存器(R8_GLOB_RESET_KEEP)
位
[7:0]
名称
R8_GLOB_RESET_KEEP
访问
RW
描述
复位保持寄存器,该寄存器值不受手动
复位、软件复位、看门狗复位或者普通
唤醒复位的影响。
复位值
00h
有关 FlashROM 的操作或者设置可以参考相关子程序,本手册不提供有关 FlashROM 字数据寄存器和
FlashROM 控制寄存器的说明。
4.4 Flash-ROM 操作步骤
1.擦除 Flash-ROM,将目标扇区中全部数据位变为 1,请参考和调用相关子程序。
2.写 Flash-ROM,将目标字中的部分数据位从 1 变为 0(无法将位数据从 0 变为 1)
,请参考和调用
相关子程序。
3.读 Flash-ROM,通过指向程序存储空间的指针,读取目标地址的 code 或 data。
4.5 芯片唯一 ID 号
每个芯片出厂时都具有唯一的 ID 号,即芯片身份识别号。该 ID 数据及其校验和共 8 字节,存储
于芯片内部只读区域中,具体操作请参考例子程序。
25
第 5 章 电源控制
5.1 电源管理
CH583 内置有电源管理单元 PMU。系统电源从 VDD33 输入,通过内置的多个 LDO 电压调整器为系
统的 FlashROM、系统的数字电路(包括内核和 USB 等)和系统的模拟电路(包括高频振荡器、PLL、
ADC 和 RF 收发器等)提供所需的电源。GPIO 和 FlashROM 的电源从 VIO33 输入。
正常工作时的电源供电分为两种方式:直接电源和 DC-DC 转换。在正常工作之外,CH583 提供了
4 种低功耗模式:空闲模式、暂停模式、睡眠模式、下电模式。
上电后默认不启用 DC-DC,而是提供直通电源,其电压纹波较小。为了降低正常运行时的系统功
耗,可以选择启用 DC-DC 提升电源能耗利用率,工作电流通常将下降到直通方式的 60%左右。
为了降低睡眠时的系统功耗,可以选择关闭系统主 LDO,切换成由系统内置的超低功耗 ULP-LDO
提供辅助电源。当系统进入睡眠或下电模式时,除了电源管理和 RTC 寄存器等常供电单元外,系统的
高 2KB 和低 30KB 的 SRAM、内核及所有的外设皆可选择是否维持供电,LSE/LSI 可选择是否开启。
图 5-1 电源系统
5.2 寄存器描述
名称
R16_SLP_CLK_OFF
R8_SLP_CLK_OFF0
R8_SLP_CLK_OFF1
R8_SLP_WAKE_CTRL
表 5-1 功耗管理相关寄存器列表
访问地址
描述
0x4000100C
睡眠时钟控制寄存器
0x4000100C
睡眠时钟控制寄存器 0
0x4000100D
睡眠时钟控制寄存器 1
0x4000100E
唤醒事件配置寄存器
复位值
0x0000
0x00
0x00
0x20
26
R8_SLP_POWER_CTRL
R16_POWER_PLAN
R8_AUX_POWER_ADJ
R8_BAT_DET_CTRL
R8_BAT_DET_CFG
R8_BAT_STATUS
0x4000100F
0x40001020
0x40001022
0x40001024
0x40001025
0x40001026
外设睡眠电源控制寄存器
睡眠电源管理寄存器
辅助电源调整控制寄存器
电池电压检测控制寄存器
电池电压检测配置寄存器
电池状态寄存器
0x00
0x11DF
0xXX
0x00
0x02
0x00
睡眠时钟控制寄存器 0(R8_SLP_CLK_OFF0)
位
名称
访问
7
RB_SLP_CLK_UART3
RWA
6
RB_SLP_CLK_UART2
RWA
5
RB_SLP_CLK_UART1
RWA
4
RB_SLP_CLK_UART0
RWA
3
RB_SLP_CLK_TMR3
RWA
2
RB_SLP_CLK_TMR2
RWA
1
RB_SLP_CLK_TMR1
RWA
0
RB_SLP_CLK_TMR0
RWA
描述
串口 3 时钟源:
1:关闭;
0:开启。
串口 2 时钟源:
1:关闭;
0:开启。
串口 1 时钟源:
1:关闭;
0:开启。
串口 0 时钟源:
1:关闭;
0:开启。
定时器 3 时钟源:
1:关闭;
0:开启。
定时器 2 时钟源:
1:关闭;
0:开启。
定时器 1 时钟源:
1:关闭;
0:开启。
定时器 0 时钟源:
1:关闭;
0:开启。
复位值
0
0
0
0
0
0
0
0
睡眠时钟控制寄存器 1(R8_SLP_CLK_OFF1)
位
名称
访问
7
RB_SLP_CLK_BLE
RWA
6
Reserved
RO
5
RB_SLP_CLK_USB2
RWA
4
RB_SLP_CLK_USB
RWA
3
RB_SLP_CLK_I2C
RWA
2
RB_SLP_CLK_PWMX
RWA
1
RB_SLP_CLK_SPI1
RWA
0
RB_SLP_CLK_SPI0
RWA
唤醒事件配置寄存器(R8_SLP_WAKE_CTRL)
位
名称
访问
7
Reserved
RO
6
RB_WAKE_EV_MODE
RWA
描述
BLE 控制器时钟源:
1:关闭;
0:开启。
保留。
USB2 控制器时钟源:
1:关闭;
0:开启。
USB 控制器时钟源:
1:关闭;
0:开启。
I2C 时钟源:
1:关闭;
0:开启。
PWMx 时钟源:
1:关闭;
0:开启。
SPI1 时钟源:
1:关闭;
0:开启。
SPI0 时钟源:
1:关闭;
0:开启。
描述
保留。
唤醒事件内部记忆模式使能:
复位值
0
0
0
0
0
0
0
0
复位值
0
0
27
5
RB_SLP_BAT_WAKE
RWA
4
RB_SLP_GPIO_WAKE
RWA
3
RB_SLP_RTC_WAKE
RWA
2
Reserved
RO
1
RB_SLP_USB2_WAKE
RWA
0
RB_SLP_USB_WAKE
RWA
1:使能记忆,支持短脉冲事件唤醒;
0:不记忆,事件需保持有效直到唤醒。
使能电池低压事件唤醒系统:
1:使能;0:关闭。
使能 GPIO 事件唤醒系统:
1:使能;0:关闭。
使能 RTC 事件唤醒系统:
1:使能;0:关闭。
保留。
使能 USB2 事件唤醒系统:
1:使能;
0:关闭。
使能 USB 事件唤醒系统:
1:使能;
0:关闭。
1
0
0
0
0
0
外设睡眠电源控制寄存器(R8_SLP_POWER_CTRL)
位
7
名称
Reserved
访问
RO
6
RB_RAM_RET_LV
RWA
5
RB_SLP_CLK_RAM2K
RWA
4
RB_SLP_CLK_RAMX
RWA
[3:2]
Reserved
RO
[1:0]
RB_WAKE_DLY_MOD
RWA
睡眠电源管理寄存器(R16_POWER_PLAN)
位
名称
访问
RB_PWR_PLAN_EN
RWA/
WZ
[14:11]
RB_PWR_MUST_0010
RWA
10
RB_PWR_DCDC_PRE
RWA
9
RB_PWR_DCDC_EN
RWA
8
RB_PWR_LDO_EN
RWA
15
描述
复位值
保留。
0
SRAM 睡眠时辅助电源低压使能:
0:正常电源电压,睡眠时功耗略大;
0
1:较低电源电压,睡眠时功耗略小。
RAM2K 的 SRAM 时钟控制:
0
1:关闭;0:开启。
主 SRAM(RAM30K)的时钟控制:
0
1:关闭;0:开启。
保留。
00b
选择唤醒后的延时周期数:
11:无延时,8 个周期+TSUCLK,禁用;
10:超短延时,70 个周期+TSUCLK;
01:短延时,520 个周期+TSUCLK,建议;
00b
00:长延时,3590 个周期+TSUCLK。
其中,TSUCLK 取决于睡眠模式和时钟配置,
可能包含 TSUHSE 或 PLL 或两者合计的启动
时间,具体组合参考评估板中示例。
描述
复位值
睡眠电源规划控制使能:
1:开启规划; 0:关闭或结束规划。
0
开启电源规划,用于稍后进入睡眠或下
电模式时执行,执行后该位自动清 0。
保留,必须写 0010b。
0010b
DC-DC 偏置电路使能(即时生效)
:
0
1:使能;
0:禁止。
DC-DC 使能位(即时生效)
:
1:DC-DC 使能,直通电源关闭;
0
0:DC-DC 禁止,直通电源开启。
内部 LDO 控制(睡眠规划)
:
1
1:开启 LDO;0:规划将关闭 LDO,更省。
28
7
RB_PWR_SYS_EN
RWA
6
5
Reserved
Reserved
RWA
RO
4
RB_PWR_RAM30K
RWA
3
RB_PWR_EXTEND
RWA
2
RB_PWR_CORE
RWA
1
RB_PWR_RAM2K
RWA
0
RB_PWR_XROM
RWA
系统电源控制(睡眠规划)
:
1:提供系统电源(在 VSW 引脚)
;
0:关闭系统电源,规划将进入睡眠模式
或者下电模式。
保留,必须写 0。
保留。
RAM30K 的 SRAM 供电(睡眠规划)
:
1:双供电;
0:不用辅助电源。
USB 和 RF 配置供电(睡眠规划)
:
1:双供电;
0:不用辅助电源。
内核和基本外设供电(睡眠规划)
:
1:双供电;
0:不用辅助电源。
RAM2K 的 SRAM 供电(睡眠规划)
:
1:双供电;
0:不用辅助电源。
FlashROM 供电(睡眠规划)
:
1:持续供电;0:睡眠时关闭电源。
1
1
0
1
1
1
1
1
此寄存器除 RB_PWR_DCDC_PRE 和 RB_PWR_DCDC_EN 之外均为睡眠规划预置,其电源配置在进入低功耗
的睡眠模式和下电模式后生效。
辅助电源调整控制寄存器(R8_AUX_POWER_ADJ)
位
7
名称
访问
RB_DCDC_CHARGE
RWA
6
[5:3]
Reserved
Reserved
RO
RWA
[2:0]
RB_ULPLDO_ADJ
RWA
电池电压检测控制寄存器(R8_BAT_DET_CTRL)
位
名称
访问
[7:4]
Reserved
RO
3
RB_BAT_LOW_IE
RWA
2
RB_BAT_LOWER_IE
RWA
1
RB_BAT_MON_EN
RWA
0
RB_BAT_LOW_VTHX
RWA
0
RB_BAT_DET_EN
RWA
描述
低功耗辅助 DC-DC 使能位:
1:辅助 DC-DC 使能;
0:辅助 DC-DC 禁止。
保留。
保留,写入时必须保持原值不变。
超低功耗 LDO 的辅助电源输出电压调节
值(数值仅供参考,不建议修改):
000:0.77V; 001:0.80V;
010:0.84V; 011:0.88V;
100:0.91V; 101:0.95V;
110:0.99V; 111:1.03V。
复位值
描述
复位值
保留。
电池低电压中断使能:
1:使能;0:关闭。
电池超低电压中断使能:
1:使能;0:关闭。
低功耗的电池电压监控功能使能:
1:使能低压监控,增加电流约 1uA;
0:关闭低功耗的电池低压监控。
当 RB_BAT_MON_EN=1 时,设置低功耗的
低压监控阈值。参考 RB_BAT_LOW_VTH。
当 RB_BAT_MON_EN=0 时,是高精度的电
池电压检测功能使能:
1:使能低压检测,同时开启基准电压等
0000b
0
0
1XXb
XXXb
(010b)
0
0
0
0
0
29
模块,睡眠模式下电流 210uA;
0:关闭高精度的电池低压检测。
注:如果电池电压达到超低电压检测阈值,且 RB_BAT_LOWER_IE 和 RB_BAT_LOW_IE 都使能(正常情况
下只使能其中之一)
,那么将产生 NMI 不可屏蔽中断,等效于提高中断优先级。
电池电压检测配置寄存器(R8_BAT_DET_CFG)
位
名称
访问
[7:2] Reserved
RO
[1:0]
RB_BAT_LOW_VTH
RWA
描述
保留。
当 RB_BAT_MON_EN=0 时,设置高精度的
超低电压及低电压的检测阈值:
(超低电压参考阈值,低电压参考阈值)
00:1.7V
, 1.95V;
01:1.9V
, 2.15V;
10:2.1V
, 2.35V;
11:2.3V
, 2.55V。
当
RB_BAT_MON_EN=1
时 , 以
RB_BAT_LOW_VTHX 为最高位加上此 2 位
合并 3 位设置低功耗的低压监控阈值:
000:1.7V;
001:1.8V;
010:1.9V;
011:2.0V;
100:2.1V;
101:2.2V;
110:2.3V;
111:2.4V。
复位值
000000b
10b
电池状态寄存器(R8_BAT_STATUS)
位
访问
描述
复位值
Reserved
RO
000000b
1
RB_BAT_STAT_LOW
RO
0
RB_BAT_STAT_LOWER
RO
保留。
电池低压检测或低压监控的结果,指示
电池电压处于低电压状态:
1:低于低电压阈值;0:否。
当 RB_BAT_MON_EN=0 时,指示电池电压
处于超低电压状态:
1:低于超低电压阈值;0:否。
[7:2]
名称
0
0
5.3 低功耗模式
在系统复位后,微控制器处于正常运行状态。当 MCU 不需要运行时,可以选择适当的低功耗模式
来节省功耗。用户需要根据最低电源消耗、最快启动时间和可用唤醒事件等条件,选定一个合适的低
功耗模式。
芯片提供以下 4 种主要的低功耗模式:
l 空闲模式(Idle)
所有外设保持正常供电,内核停止运行,时钟系统运转。检测到唤醒事件后,可以立即唤醒。
l 暂停模式(Halt)
在空闲模式的基础上,时钟系统停止。检测到唤醒事件后,首先时钟运转,然后唤醒内核运行。
l 睡眠模式(Sleep):
主 LDO 关闭,由超低功耗 ULP-LDO 维持 PMU、内核和基本外设供电,LSE 或 LSI 可以选择是否开
启,RAM2K、RAM30K、USB 和 RF 配置可以选择是否维持供电。检测到唤醒事件后,首先主 LDO 开
启,然后时钟运转,最后唤醒内核,程序继续运行,需要时可以重新设置到更高主频。
l 下电模式(Shutdown)
:
在睡眠模式的基础上,关闭了内核和基本外设以及 USB 和 RF 配置,LSE 或 LSI 可以选择是否开
30
启,RAM2K、RAM30K 可以选择是否维持供电。检测到唤醒事件后,PMU 将执行 GRWSM 复位,软件
可根据复位标志 RB_RESET_FLAG 和可选的 RAM 中的保持数据区分于 RPOR。
下表详细描述了几种低功耗模式的特征及唤醒途径:
表 5-2 低功耗模式
模式
特征
进入条件
外设均正常供电,内核停止运行, 设置 SLEEPDEEP=0,
空闲模式
时钟系统运转,但可以通过外设时 设 置 唤 醒 条 件 后 执 行
Idle
钟控制位选择关闭各外设的时钟。 __WFI()或__WFE()。
唤醒事件
I/O 或 RTC
或 BAT 或
USB
设置 SLEEPDEEP=1,
设置唤醒条件后执行
__WFI()或__WFE()。
I/O 或 RTC
或 BAT 或
USB
320uA
设置 SLEEPDEEP=1,
设置 POWER_PLAN,
设置唤醒条件后执行
__WFI()或__WFE()。
I/O 或 RTC
或 BAT。
芯片唤醒后
会继续运行
0.7uA~
2.8uA
设置 SLEEPDEEP=1,
设置 POWER_PLAN,
设置唤醒条件后执行
__WFI()或__WFE()。
I/O 或 RTC
或 BAT。
芯片唤醒后
会自动复位
0.2uA~
2.3uA
暂停模式
Halt
睡眠模式
Sleep
下电模式
Shutdown
外设均正常供电,内核停止运行,
时钟系统停止(PLL/HSE 停止)
。
主 LDO 关闭,超低功耗 ULP-LDO 维
持 PMU、内核和基本外设供电,
LSE 或 LSI 可以选择是否开启,
RAM2K、RAM30K、USB 和 RF 配置可
以选择是否维持供电。
超低功耗 LDO 维持 PMU 供电,
LSE 或 LSI 可以选择是否开启,
RAM2K、RAM30K 可以选择是否维持
供电,用于保持数据。
功耗
1.6mA
下表描述了几种低功耗模式的详细配置:
表 5-3 低功耗模式详细配置示例
规划配置
SYS_EN
RAM2K RAM30K
CK32K
CORE
EXTEND 功耗(仅供参考)
维持供电 系统电源 数据区 数据区 LSE/LSI 二选一 CPU 内核和 USB 和 PMU 和 RTC 寄存器
的功能
VSW
2KB
30KB
RTC 唤醒
基本外设 RF 配置 常供电,约 0.2uA
0
0
0
0
0
0
0.2uA
0
1
0
0
0
0
0.5uA
下电模式
常用配置
0
0
0
1
0
0
0.5uA
0
1
0
1
0
0
0.8uA
0
1
0
0
1
0
0.7uA
0
1
0
1
1
0
1.0uA
睡眠模式
0
0
1
0
1
0
1.8uA
常用配置
0
0
1
1
1
0
2.1uA
0
1
1
1
1
1
2.4uA
5.4 DC-DC 操作步骤
启用 DC-DC 电源模式(启用前需确认外部硬件电路上存在 DC-DC 所需的电感和电容)
(1)
、进入安全访问模式:寄存器 R8_SAFE_ACCESS_SIG 先写入 0x57,再写入 0xA8;
(2)
、打开 DC-DC 偏置电路:将寄存器 R16_POWER_PLAN 的 RB_PWR_DCDC_PRE 置 1;
(3)
、打开 DC-DC 电源:将寄存器 R16_POWER_PLAN 的 RB_PWR_DCDC_EN 置 1,启用 DC-DC。
关闭 DC-DC,切换到直通电源模式
(1)
、进入安全访问模式:寄存器 R8_SAFE_ACCESS_SIG 先写入 0x57,再写入 0xA8;
(2)
、清零寄存器 R16_POWER_PLAN 的 RB_PWR_DCDC_EN 和 RB_PWR_DCDC_PRE 控制位。
31
第 6 章 系统时钟及 RTC
6.1 系统时钟简介
以下几种不同的时钟源可被选择来驱动系统时钟 HCLK(Fsys)
— HSE 之分频。
— 内部 PLL(默认 480MHz)分频。
— LSE 或 LSI 原始时钟 CK32K。
任意一个时钟源都可以被独立地启动或关闭,由此可以优化系统功耗。
6.1.1 时钟结构
CLK_OSC32K_XT
PA10
X32KI
PA11
X32KO
外部晶振
LSE
RTC
MUX
CK32K
内部时钟32K, LSI
MUX
X32MI
X32MO
HCLK
外部晶振
HSE
PLL倍频器
x15=480MHz
CLK_MOD
PIN_XT32K_IE
Fpll
时钟分频器
Fpll/10=48MHz
分频器
CLK_SYS_MOD
Fsys
CLK_XT32K_PON
USB,USB2
ADC
SLP_CLK_USB/2
ADC_CLK_DIV
SLP_CLK_BLE
BLE
SLP_CLK_TMRx
Timer 0-3
SPI 0-1
SPI_CLOCK_DIV
PWMX 4-11
PWM_CLOCK_DIV
UART 0-3
UARTx_DIV
SLP_CLK_SPIx
SLP_CLK_PWMx
SLP_CLK_UARTx
SLP_CLK_I2C
I2C
SLP_CLK_RAMX
RAM30K SRAM
SLP_CLK_RAM2K
RAM2K SRAM
HCLK
PMU, CPU, GPIO, FlashROM, DMA
图 6-1 时钟树框图
上图是系统内部的时钟树结构,其中的 RTC 功能使用的是 32KHz 时钟源 CK32K,所以使用这些功
能必须打开低频时钟;USB 的数据传输依靠 PLL 分频后产生的时钟源;其他的外设驱动时钟以及数字
控制逻辑由系统时钟或者再分频驱动。
32
6.2 RTC 简介
实时时钟(RTC)是一个独立的定时器,包含一组连续计数的计数器。在相应软件配置下,可提
供简单日历功能。修改计数器的值可以重新设置当前的时间和日期。
RTC 寄存器与 PMU 一样常供电,在系统复位或从低功耗模式唤醒后,RTC 的设置和时间维持不变。
6.2.1 主要特性
l 可配置 2 种模式:
— 定时模式:软件可选择固定周期时间(定时)产生中断通知。
— 触发模式:匹配一个软件预设的目标闹钟时间,产生中断通知。
l 3 组 16 位计数器,提供了 CK32K 原始周期、2 秒周期、1 天周期的计数。
6.3 寄存器描述
表 6-1 时钟及振荡器控制相关寄存器列表
名称
R16_CLK_SYS_CFG
R8_HFCK_PWR_CTRL
R16_INT32K_TUNE
R8_XT32K_TUNE
R8_CK32K_CONFIG
R8_XT32M_TUNE
R16_OSC_CAL_CNT
R8_OSC_CAL_OV_CNT
R8_OSC_CAL_CTRL
R8_PLL_CONFIG
R8_RTC_FLAG_CTRL
R8_RTC_MODE_CTRL
R32_RTC_TRIG
R16_RTC_CNT_32K
R16_RTC_CNT_2S
R32_RTC_CNT_DAY
访问地址
0x40001008
0x4000100A
0x4000102C
0x4000102E
0x4000102F
0x4000104E
0x40001050
0x40001052
0x40001053
0x4000104B
0x40001030
0x40001031
0x40001034
0x40001038
0x4000103A
0x4000103C
系统时钟配置寄存器(R16_CLK_SYS_CFG)
位
名称
访问
[15:8]
Reserved
RO
[7:6]
5
[4:0]
计算:
Fck32m
Fck32k
Fpll =
Fsys =
RB_CLK_SYS_MOD
RWA
Reserved
RO
RB_CLK_PLL_DIV
RWA
描述
系统时钟配置寄存器
高频时钟模块电源控制寄存器
内部 32KHz 时钟校准寄存器
外部 32KHz 时钟谐振控制寄存器
32KHz 振荡器配置寄存器
外部 32MHz 时钟谐振控制寄存器
振荡器频率校准计数值寄存器
振荡器频率校准溢出次数寄存器
振荡器频率校准控制寄存器
PLL 配置寄存器
RTC 标志和控制寄存器
RTC 模式配置寄存器
RTC 触发数值寄存器
RTC 基于 32768Hz 计数值寄存器
RTC 以 2S 为单位的计数值寄存器
RTC 以天为单位的计数值寄存器
复位值
0x0005
0x14
0x1011
0xC3
0xX2
0x32
0xXXXX
0x00
0x09
0x4A
0x30
0x02
0x00000000
0xXXXXXXXX
0xXXXXXXXX
0x0000XXXX
描述
保留。
HCLK 系统时钟源模式选择:
00/10:CK32M(默认 32MHz)进行分频;
01:PLL(默认 480MHz)进行分频;
11:CK32K(默认 32KHz)作为 HCLK。
保留。
HCLK 输出时钟分频系数,最小值为 2,0
代表最大值 32,写 1 将关闭 HCLK。
复位值
00h
00b
0
00101b
= XT_32MHz;
= RB_CLK_OSC32K_XT ? XT_32KHz : RC_32KHz;
Fck32m * 15 = 480MHz;
RB_CLK_SYS_MOD==3?Fck32k:(RB_CLK_SYS_MOD[0]? Fpll :Fck32m)/RB_CLK_PLL_DIV;
33
上电默认值 Fsys = Fck32m/ RB_CLK_PLL_DIV = 32MHz / 5 = 6.4MHz;
Fsys 范围: 32KHz,2MHz~10MHz,15MHz~80MHz
高频时钟模块电源控制寄存器(R8_HFCK_PWR_CTRL)
位
名称
访问
[7:5]
Reserved
RO
4
RB_CLK_PLL_PON
RWA
3
RB_CLK_XT32M_KEEP
RWA
2
RB_CLK_XT32M_PON
RWA
Reserved
RO
[1:0]
描述
复位值
保留。
PLL 电源控制位:
1:上电;
0:掉电。
用于暂停模式下控制时钟系统的停止:
1:Halt 模式下不自动停止 HSE 和 PLL;
0:Halt 模式下自动停止 HSE 和 PLL。
外部 32MHz 振荡器 HSE 电源控制位:
1:上电;
0:掉电。
保留。
000b
内部 32KHz 时钟校准寄存器(R16_INT32K_TUNE)
位
名称
访问
[15:13]
[12:0]
Reserved
RB_INT32K_TUNE
RO
RWA
描述
保留。
内部 RC 32KHz 时钟频率校准值。
1
0
1
00b
复位值
000b
1011h
外部 32KHz 时钟谐振控制寄存器(R8_XT32K_TUNE)
位
名称
访问
[7:4]
RB_XT32K_C_LOAD
RWA
[3:2]
Reserved
RO
[1:0]
RB_XT32K_I_TUNE
RWA
描述
复位值
选择与外部 32KHz 晶体匹配的内置负载
电容(可能影响 RTC 时钟精度):
0000:内置负载电容量为 2pF;
其它:
1100b
电容量 = RB_XT32K_C_LOAD + 12pF,
0001b~1111b 分别对应约 13pF~27pF。
根据所用晶体参数选择。
保留。
00b
外部 32KHz 振荡器偏置电流选择:
00:70%额定电流;01:额定电流;
11b
10:140%额定电流;11:200%额定电流。
在晶体振荡器稳定后可改为额定电流。
32KHz 振荡器配置寄存器(R8_CK32K_CONFIG)
位
名称
访问
描述
7
RB_32K_CLK_PIN
RO
32KHz 时钟引脚状态(异步信号)。
[6:4]
Reserved
RO
保留。
内部 32KHz 振荡器噪声过滤模式:
3
RB_CLK_OSC32K_FILT
RWA
1:禁用;
0:启用。
CK32K(32KHz)时钟源选择位:
2
RB_CLK_OSC32K_XT
RWA 1:外部 32KHz 振荡器;
0:内部 32KHz 振荡器。
内部 32KHz 振荡器电源控制位:
1
RB_CLK_INT32K_PON
RWA
1:上电;0:掉电。
外部 32KHz 振荡器电源控制位:
0
RB_CLK_XT32K_PON
RWA
1:上电;
0:掉电。
复位值
X
000b
0
0
1
0
34
外部 32MHz 时钟谐振控制寄存器(R8_XT32M_TUNE)
位
名称
访问
7
Reserved
RO
[6:4]
RB_XT32M_C_LOAD
RWA
[3:2]
Reserved
RO
[1:0]
RB_XT32M_I_BIAS
RWA
描述
复位值
保留。
选择与外部 32MHz 晶体匹配的内置负载
电容(可能影响无线通讯):
电容量 = RB_XT32M_C_LOAD * 2 + 10pF,
000b~111b 分别对应约 10pF~24pF。
根据所用晶体参数选择,常用为 111b。
保留。
外部 32MHz 振荡器偏置电流选择:
00:75%额定电流;01:额定电流;
10:125%额定电流;11:150%额定电流。
0
011b
00b
10b
振荡器频率校准计数值寄存器(R16_OSC_CAL_CNT)
位
名称
访问
15
RB_OSC_CAL_IF
RW1
14
RB_OSC_CAL_OV_CLR
RW1
RB_OSC_CAL_CNT
RO
[13:0]
描述
复位值
振荡器捕捉完成中断标志位,写 1 清零:
0
1:有中断;
0:无中断。
R8_OSC_CAL_OV_CNT 寄存器数值非零指
0
示,写 1 将 R8_OSC_CAL_OV_CNT 清零。
对多个 CK32K 周期基于系统主频的计数
XXXXh
值,用于校准内部 32KHz 振荡器频率。
振荡器频率校准溢出次数寄存器(R8_OSC_CAL_OV_CNT)
位
名称
访问
描述
复位值
振荡器频率校准计数溢出次数,向
[7:0]
RB_OSC_CAL_OV_CNT
RO
XXh
RB_OSC_CAL_OV_CLR 写 1 清零此寄存器。
振荡器频率校准控制寄存器(R8_OSC_CAL_CTRL)
位
名称
访问
描述
复位值
7
Reserved
RO
保留。
0
振荡器捕捉终点选择:
0
6
RB_OSC_CNT_END
RWA
1:追加 2 个周期;0:不追加。
振荡器频率校准计数器使能位:
5
RB_OSC_CNT_EN
RWA
0
1:使能计数;0:禁止计数。
振荡器捕捉完成中断使能位:
4
RB_OSC_CAL_IE
RWA
0
1:使能中断;0:禁止中断。
振荡器频率校准计数器计数状态位:
3
RB_OSC_CNT_HALT
RO
1
1:正在暂停计数;0:正在计数中。
振荡器捕捉总周期数选择:
000:1 个;001:2 个;010:4 个;
[2:0]
RB_OSC_CNT_TOTAL
RWA
001b
011:32 个;100:64 个;101:128 个;
110:1024 个;111:2047 个。
PLL 配置寄存器(R8_PLL_CONFIG)
位
名称
7
RB_FLASH_IO_MOD
[6:0]
RB_PLL_CFG_DAT
访问
RWA
RWA
描述
FlashROM 控制操作模式。
PLL 配置参数。
复位值
0
1001010b
35
RTC 标志和控制寄存器(R8_RTC_FLAG_CTRL)
位
名称
访问
7
6
RB_RTC_TRIG_FLAG
RB_RTC_TMR_FLAG
RO
RO
5
RB_RTC_TRIG_CLR
RW
4
RB_RTC_TMR_CLR
RW
Reserved
RO
[3:0]
描述
复位值
RTC 触发模式激活标志。
RTC 定时模式激活标志。
禁用触发模式时,此位固定为 1。
使能触发模式时,写 1 清零触发模式激
活标志 RB_RTC_TRIG_FLAG 并自动清 0。
禁用定时模式时,此位固定为 1。
使能定时模式时,写 1 清零定时模式激
活标志 RB_RTC_TMR_FLAG 并自动清 0。
保留。
0
0
0000b
描述
复位值
1
1
RTC 模式配置寄存器(R8_RTC_MODE_CTRL)
位
名称
访问
7
RB_RTC_LOAD_HI
RWA
6
RB_RTC_LOAD_LO
RWA
5
RB_RTC_TRIG_EN
RWA
4
RB_RTC_TMR_EN
RWA
3
RB_RTC_IGNORE_B0
RWA
[2:0]
RB_RTC_TMR_MODE
RWA
RTC 触发数值寄存器(R32_RTC_TRIG)
位
名称
写 1 将加载 RTC 计数器高字,加载后自
动清 0。将 R32_RTC_TRIG(实际仅低 14
位)加载到 R32_RTC_CNT_DAY。
写 1 将加载 RTC 计数器低字,加载后自
动清 0。将 R32_RTC_TRIG 高 16 位加载
到 R16_RTC_CNT_2S;将 R32_RTC_TRIG
低 16 位加载到 R16_RTC_CNT_32K。
RTC 触发模式使能位:
1:使能;0:禁用。
RTC 定时模式使能位:
1:使能;0:禁用。
触发模式下忽略比较匹配值的最低位:
1:忽略最低位;0:比较最低位。
RTC 定时模式固定周期(定时)选择:
000:0.125S; 001:0.25S;
010:0.5S; 011:1S;
100:2S;
101:4S;
110:8S;
111:16S。
访问
描述
RTC 触发模式下的预设匹配数值,其高
16 位和低 16 位分别与 R16_RTC_CNT_2S
[31:0]
R32_RTC_TRIG
RWA 和 R16_RTC_CNT_32K 进行匹配。
与 RB_RTC_LOAD_LO 及 RB_RTC_LOAD_HI
配合,用于更新 RTC 计数器当前值。
注:预设匹配数值不是直接写入目标时间,涉及简单计算,请参考后面的说明。
RTC 基于 32768Hz 计数值寄存器(R16_RTC_CNT_32K)
位
名称
访问
描述
[15:0]
R16_RTC_CNT_32K
RO
RTC 基于 32768Hz 计数值寄存器。
RTC 以 2S 为单位的计数值寄存器(R16_RTC_CNT_2S)
0
0
0
0
0
010b
复位值
0000h
复位值
XXXXh
36
位
[15:0]
名称
R16_RTC_CNT_2S
访问
RO
描述
RTC 以 2S 为单位的当前计数值。
复位值
XXXXh
RTC 以天为单位的计数值寄存器(R32_RTC_CNT_DAY)
位
[31:16]
[15:14]
[13:0]
名称
Reserved
Reserved
R32_RTC_CNT_DAY
访问
RO
RO
RO
描述
复位值
保留。
0000h
保留。
00b
RTC 以天为单位的当前计数值。 XXXXXXXXXXXXXXb
6.4 功能描述及配置
6.4.1 RTC 计数器初始化
(1)、设置 R32_RTC_TRIG 寄存器数值,将 RB_RTC_LOAD_HI 置位,即可将 R32_RTC_TRIG 寄存器的数值
加载到 R32_RTC_CNT_DAY 寄存器中;
(2)、设置 R32_RTC_TRIG 寄存器数值,将 RB_RTC_LOAD_LO 置位,即可将 R32_RTC_TRIG 寄存器的高低
各 16 位数值分别加载到 R16_RTC_CNT_2S 寄存器和 R16_RTC_CNT_32K 寄存器。
6.4.2 RTC 时钟源切换为 LSE 晶振
(1)、确认 X32KI 和 X32KO 所在的 GPIO 引脚没有设置为输出,没有设置上拉和下拉电阻,只有晶体;
(2)、配置 R8_CK32K_CONFIG 寄存器,置 RB_CLK_XT32K_PON 为 1,开启外部 32KHz 晶体振荡器;
(3)、建议先置 RB_XT32K_I_TUNE 为最大,等待晶体振荡器稳定(约数百 mS)后再改为额定电流;
(4)、配置 R8_CK32K_CONFIG 寄存器,置 RB_CLK_OSC32K_XT 为 1,要求时钟源切换到晶体振荡器;
(5)、等待至少半个 32KHz 时钟周期,通常 16uS,真正完成时钟源的切换。
6.4.3 RTC 定时功能
(1)、配置 R8_RTC_MODE_CTRL 寄存器,设置 RB_RTC_TMR_MODE 选择合适的定时周期,置 RB_RTC_TMR_EN
为 1,打开 RTC 定时功能;
(2)、达到定时周期后,会产生 RTC 定时激活标志 RB_RTC_TMR_FLAG 及中断,查询 R8_RTC_FLAG_CTRL
寄存器,置位 RB_RTC_TMR_CLR 可清零标志。
6.4.4 RTC 触发功能
(1)、在 R32_RTC_TRIG 寄存器中设置好目标匹配数值,计算和操作步骤:
以当前时间 R32_RTC_CNT_32K(高 16 位 R16_RTC_CNT_2S 和低 16 位 R16_RTC_CNT_32K)加上间
隔时间 DelayTime(单位 S),计算出目标时间数值,T32 = R32_RTC_CNT_32K + DelayTime * 32768,
将 T32 写入 R32_RTC_TRIG 寄存器中,完成匹配数值设定;
(2)、配置 R8_RTC_MODE_CTRL 寄存器,置 RB_RTC_TRIG_EN 为 1,打开 RTC 触发功能;
(3)、当 RTC 当前计数值 R16_RTC_CNT_2S 和 R16_RTC_CNT_32K 分别与 R32_RTC_TRIG 预设的高和低 16
位匹配时,产生 RTC 触发激活标志 RB_RTC_TRIG_FLAG 及中断,置位 RB_RTC_TRIG_CLR 可清零标志。
(4)、如果 RTC 已经过校时,那么可以支持目标绝对时间触发,由目标年/月/日/时/分/秒/毫秒计算
出目标时间数值 T32,其它步骤同上。具体可参考评估板例子程序。
6.4.5 用 HSE 校准内部 32K 时钟 LSI
参考评估板例子程序
37
第 7 章 通用 I/O 和复用功能
7.1 GPIO 简介
芯片提供了 2 组 GPIO 端口 PA 和 PB,共 40 个通用输入输出引脚,其中 32 个引脚具有中断和唤
醒功能,部分引脚具有复用及映射功能。
每个 GPIO 端口有一个 32 位方向配置寄存器 R32_Px_DIR,
一个 32 位引脚输入寄存器 R32_Px_PIN,
一个 32 位数据输出寄存器 R32_Px_OUT,一个 32 位数据复位寄存器 R32_Px_CLR,一个 32 位上拉电阻
配置寄存器 R32_Px_PU,一个 32 位下拉电阻/驱动能力配置寄存器 R32_Px_PD_DRV。
PA 端口中 PA[0]~PA[15]位有效,对应芯片上 16 个 GPIO 引脚。
PB 端口中 PB[0]~PB[23]位有效,对应芯片上 24 个 GPIO 引脚。
每个 I/O 端口位可以自由编程,但是 I/O 端口寄存器必须按 8 位、16 位或者 32 位字访问。如果
引脚的复用功能没有开启,则默认作为通用 I/O 口使用。
下图是 GPIO 内部结构框图:
VIO33
VIO33
R32_Px_PU
50K
Data_Bus
Read R32_Px_OUT
SET
D
Write R32_Px_OUT
CK
CLR
Write R32_Px_CLR
Q
I/O
R32_Px_PD_DRV
Q
RESET
50K
R32_Px_PD_DRV
R32_Px_DIR
GND
R32_Px_PIN
//
GND
AIN[x]
GND
R8_ADC_CHANNEL
图 7-1 I/O 内部结构框图
7.2 外部中断/唤醒
芯片的部分 I/O 管脚具有中断功能,并可实现睡眠唤醒。
为了使用外部中断,端口位必须配置成输入模式。并提供 4 种触发模式:高电平、低电平、上升
沿、下降沿。
唤醒功能需要打开端口位的中断使能 R16_Px_INT_EN,
并开启寄存器 R8_SLP_WAKE_CTRL 中的 GPIO
唤醒控制位 RB_SLP_GPIO_WAKE。
7.3 GPIO 的复用与重映射
7.3.1 复用功能
38
部分 I/O 引脚具有复用功能,上电后默认所有 I/O 引脚均为通用 I/O 功能,启用各功能模块后,
相应的原 GPIO 引脚被配置成各自功能模块对应的功能引脚。
如果一个管脚复用多个功能,并且多个功能都已开启,那么复用功能的优先级顺序请参考 1.2 节
引脚描述的“复用功能”列表中功能顺序。
例如:PB23 脚复用为 RST#/TMR0_/TXD2_/PWM11,则 RST#复位输入功能优先,PWM11 输出功能的
优先级最低。这样可以在多个复用功能中,将功能优先级最低的部分不需使用的引脚启用相对更高优
先级的复用功能。
下表列出了部分用于外设模块的功能引脚的 GPIO 配置。
表 7-1 定时器 x
TMR0/1/2/3 引脚
功能配置
GPIO 配置
输入捕捉通道 x
输入(浮空输入/上拉输入/下拉输入)
TMRx
输出 PWM 通道 x
推挽输出
UART0/1/2/3 引脚
TXDx
RXDx
RTS,DTR
CTS,DSR,RI,DCD
表 7-2 UARTx
功能配置
串口发送 x
串口接收 x
MODEM 信号输出或 RS485 控制
MODEM 信号输入
GPIO 配置
推挽输出
上拉输入(推荐)或浮空输入
推挽输出
上拉输入(推荐)或浮空输入
表 7-3 SPIx
SPI0/1 引脚
SCKx
MOSIx
MISOx
SCS
功能配置
主模式时钟输出
从模式时钟输入
全双工模式-主模式
全双工模式-从模式
半双工模式-主模式
半双工模式-从模式
全双工模式-主模式
全双工模式-从模式
半双工模式-主模式
半双工模式-从模式
主模式片选输出
从模式片选输入
GPIO 配置
推挽输出
输入(浮空输入/上拉输入/下拉输入)
推挽输出
输入(浮空输入/上拉输入/下拉输入)
未用到,可做通用 I/O
未用到,可做通用 I/O
输入(浮空输入/上拉输入/下拉输入)
输入(推荐上拉,片选后自动切为推挽输出)
或推挽输出(禁止用于总线连接方式)
输入或推挽输出,手工切换
输入(推荐上拉,片选后自动切为推挽输出)
推挽输出(可换用其它引脚)
上拉输入(推荐)或浮空输入
表 7-4 I2C
I2C 引脚
SCL
SDA
ADC 采样通道引脚
AINx
功能配置
串行时钟输出-主模式
串行时钟输出/输入-多主模式
串行时钟输入-从模式
串行数据输入输出
表 7-5 ADC
功能配置
模拟数字转换输入通道
表 7-6 USBx
GPIO 配置
推挽输出(此模式不支持多主机)
输入(推荐上拉,需要时自动开漏输出)
上拉输入(推荐)或浮空输入
输入(推荐上拉,需要时自动开漏输出)
GPIO 配置
浮空输入
39
USB 信号引脚
UD-,U2DUD+,U2D+
功能配置
连接到内部 USB 收发器
连接到内部 USB 收发器
GPIO 配置
浮空输入
浮空输入
7.3.2 功能引脚重映射
为了使外设功能的同时利用率达到最优,可以通过设置 R16_PIN_ALTERNATE 功能引脚重映射寄存
器把一些功能引脚重新映射到其他引脚上。
表 7-7 复用功能重映射引脚
外设功能引脚
默认所在的 GPIO 引脚
重映射到的 GPIO 引脚
SCS/SCK0/MOSI/MISO
PA[12]/PA[13]/PA[14]/PA[15]
PB[12]/PB[13]/PB[14]/PB[15]
RXD3/TXD3
PA[4]/PA[5]
PB[20]/PB[21]
RXD2/TXD2
PA[6]/PA[7]
PB[22]/PB[23]
RXD1/TXD1
PA[8]/PA[9]
PB[12]/PB[13]
RXD0/TXD0/DSR/DTR
PB[4]/PB[7]/PB[1]/PB[5]
PA[15]/PA[14]/PB[14]/PB[15]
TMR3/PWM3/CAP3
PB[22]
PA[2]
TMR2/PWM2/CAP2
PA[11]
PB[11]
TMR1/PWM1/CAP1
PA[10]
PB[10]
TMR0/PWM0/CAP0
PA[9]
PB[23]
PWM4/PWM5
PA[12]/PA[13]
PA[6]/PA[7]
PWM7/PWM8/PWM9
PB[4]/PB[6]/PB[7]
PB[1]/PB[2]/PB[3]
SCL/SDA
PB[13]/PB[12]
PB[21]/PB[20]
7.4 寄存器描述
表 7-8 GPIO 相关寄存器列表
名称
R16_PIN_ALTERNATE
R16_PIN_ANALOG_IE
R16_PA_INT_EN
R16_PB_INT_EN
R16_PA_INT_MODE
R16_PB_INT_MODE
R16_PA_INT_IF
R16_PB_INT_IF
R32_PA_DIR
R32_PA_PIN
R32_PA_OUT
R32_PA_CLR
R32_PA_PU
R32_PA_PD_DRV
R32_PB_DIR
R32_PB_PIN
R32_PB_OUT
R32_PB_CLR
R32_PB_PU
R32_PB_PD_DRV
访问地址
0x40001018
0x4000101A
0x40001090
0x40001092
0x40001094
0x40001096
0x4000109C
0x4000109E
0x400010A0
0x400010A4
0x400010A8
0x400010AC
0x400010B0
0x400010B4
0x400010C0
0x400010C4
0x400010C8
0x400010CC
0x400010D0
0x400010D4
描述
功能引脚重映射寄存器
外设模拟管脚配置寄存器
PA 端口中断使能寄存器
PB 端口中断使能寄存器
PA 端口中断模式配置寄存器
PB 端口中断模式配置寄存器
PA 端口中断标志寄存器
PB 端口中断标志寄存器
PA 端口方向配置寄存器
PA 端口引脚输入寄存器
PA 端口数据输出寄存器
PA 端口数据复位寄存器
PA 端口上拉电阻配置寄存器
PA 端口下拉/驱动配置寄存器
PB 端口方向配置寄存器
PB 端口引脚输入寄存器
PB 端口数据输出寄存器
PB 端口数据复位寄存器
PB 端口上拉电阻配置寄存器
PB 端口下拉/驱动配置寄存器
复位值
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x00000000
0x0000XXXX
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00XXXXXX
0x00000000
0x00000000
0x00000000
0x00000000
40
功能引脚重映射寄存器(R16_PIN_ALTERNATE)
位
名称
访问
15
RB_RF_ANT_SW_EN
RW
14
RB_PIN_U0_INV
RW
13
RB_PIN_INTX
RW
12
RB_PIN_MODEM
RW
11
RB_PIN_I2C
RW
10
RB_PIN_PWMX
RW
9
Reserved
RO
8
RB_PIN_SPI0
RW
7
RB_PIN_UART3
RW
6
RB_PIN_UART2
RW
5
RB_PIN_UART1
RW
4
RB_PIN_UART0
RW
3
RB_PIN_TMR3
RW
2
RB_PIN_TMR2
RW
描述
RF 天线开关控制输出使能:
1:开关控制输出到 PB[16]~PB[21];
0:禁止输出。
UART0 输入输出反相使能:
1:RXD0/RXD0_反相输入,TXD0/TXD0_
反相输出;
0:正常同相输入、输出。
INT24/INT25 功能引脚映射选择位:
1:INT24_/25_映射到 PB[22]/PB[23];
0:INT24/25 映射到 PB[8]/PB[9]。
注:INT24/INT25 是 R16_PB_INT_EN、
R16_PB_INT_MODE、R16_PB_INT_IF 中
[9:8]对应的中断输入。
UART0 MODEM 功能引脚映射选择位:
1:DSR_/DTR_映射到 PB[14]/PB[15];
0:DSR/DTR 映射到 PB[1]/PB[5]。
I2C 功能引脚映射选择位:
1:SCL_/SDA_映射到 PB[21]/PB[20];
0:SCL/SDA 映射到 PB[13]/PB[12]。
PWMx 功能引脚映射选择位:
1:PWM4/5/7/8/9 映射到
PA[6]/PA[7]/PB[1]/PB[2]/PB[3];
0:PWM4/5/7/8/9 映射到
PA[12]/PA[13]/PB[4]/PB[6]/PB[7]。
保留。
SPI0 功能引脚映射选择位:
1:SCK0_/SCS_/MOSI_/MISO_映射到
PB[12]/PB[13]/PB[14]/PB[15];
0:SCK0/SCS/MOSI/MISO 映射到
PA[12]/PA[13]/PA[14]/PA[15]。
UART3 功能引脚映射选择位:
1:RXD3_/TXD3_映射到 PB[20]/PB[21];
0:RXD3/TXD3 映射到 PA[4]/PA[5]。
UART2 功能引脚映射选择位:
1:RXD2_/TXD2_映射到 PB[22]/PB[23];
0:RXD2/TXD2 映射到 PA[6]/PA[7]。
UART1 功能引脚映射选择位:
1:RXD1_/TXD1_映射到 PB[12]/PB[13];
0:RXD1/TXD1 映射到 PA[8]/PA[9]。
UART0 功能引脚映射选择位:
1:RXD0_/TXD0_映射到 PA[15]/PA[14];
0:RXD0/TXD0 映射到 PB[4]/PB[7]。
TMR3 功能引脚映射选择位:
1:TMR3_/PWM3_/CAP3_映射到 PA[2];
0:TMR3/PWM3/CAP3 映射到 PB[22]。
TMR2 功能引脚映射选择位:
复位值
0
0
0
0
0
0
0
0
0
0
0
0
0
0
41
1
RB_PIN_TMR1
RW
0
RB_PIN_TMR0
RW
1:TMR2_/PWM2_/CAP2_映射到 PB[11];
0:TMR2/PWM2/CAP2 映射到 PA[11]。
TMR1 功能引脚映射选择位:
1:TMR1_/PWM1_/CAP1_映射到 PB[10];
0:TMR1/PWM1/CAP1 映射到 PA[10]。
TMR0 功能引脚映射选择位:
1:TMR0_/PWM0_/CAP0_映射到 PB[23];
0:TMR0/PWM0/CAP0 映射到 PA[9]。
0
0
外设模拟管脚配置寄存器(R16_PIN_ANALOG_IE)
位
名称
访问
描述
复位值
ADC/TKEY 4/5 通道引脚数字输入禁用:
15
RB_PIN_ADC4_5_IE
RW
1:关闭 PA14-15 数字输入,可节约功耗;
0
0:打开数字输入。
ADC/TKEY 2/3 通道引脚数字输入禁用:
14
RB_PIN_ADC2_3_IE
RW
1:关闭 PA12-13 数字输入,可节约功耗;
0
0:打开数字输入。
32KHz 晶振 LSE 引脚数字输入禁用:
1:关闭 PA10-11 数字输入,可节约功耗;
13
RB_PIN_XT32K_IE
RW
0
0:打开数字输入。
ADC/TKEY 13 通道引脚数字输入禁用:
12
RB_PIN_ADC13_IE
RW
1:关闭 PA9 数字输入,可节约功耗;
0
0:打开数字输入。
ADC/TKEY 12 通道引脚数字输入禁用:
11
RB_PIN_ADC12_IE
RW
1:关闭 PA8 数字输入,可节约功耗;
0
0:打开数字输入。
ADC/TKEY 1 通道引脚数字输入禁用:
10
RB_PIN_ADC1_IE
RW
1:关闭 PA5 数字输入,可节约功耗;
0
0:打开数字输入。
ADC/TKEY 0 通道引脚数字输入禁用:
9
RB_PIN_ADC0_IE
RW
1:关闭 PA4 数字输入,可节约功耗;
0
0:打开数字输入。
8
Reserved
RW
保留。
0
USB 引脚使能:
7
RB_PIN_USB_IE
RW
1:PB10-11 为 USB 通讯引脚;
0
0:PB10-11 不用于 USB 通讯。
USB UD+引脚内部上拉电阻使能:
1:强制使能上拉(RB_UC_DEV_PU_EN 在
6
RB_PIN_USB_DP_PU
RW
0
睡眠或下电模式下不起作用,由此代替)
;
0:由 RB_UC_DEV_PU_EN 控制是否上拉。
USB2 引脚使能:
5
RB_PIN_USB2_IE
RW
1:PB12-13 为 USB2 通讯引脚;
0
0:PB12-13 不用于 USB2 通讯。
USB2 U2D+引脚内部上拉电阻使能:
1:强制使能上拉(RB_UC_DEV_PU_EN 在
4
RB_PIN_USB2_DP_PU
RW
0
睡眠或下电模式下不起作用,由此代替)
;
0:由 RB_UC_DEV_PU_EN 控制是否上拉。
ADC/TKEY 11 通道引脚数字输入禁用:
3
RB_PIN_ADC11_IE
RW
0
1:关闭 PA7 数字输入,可节约功耗;
42
2
RB_PIN_ADC10_IE
RW
1
RB_PIN_ADC6_7_IE
RW
0
RB_PIN_ADC8_9_IE
RW
0:打开数字输入。
ADC/TKEY 10 通道引脚数字输入禁用:
1:关闭 PA6 数字输入,可节约功耗;
0:打开数字输入。
ADC/TKEY 7/6 通道引脚数字输入禁用:
1:关闭 PA2/PA3 数字输入,可节约功耗;
0:打开数字输入。
ADC/TKEY 9/8 通道引脚数字输入禁用:
1:关闭 PA0/PA1 数字输入,可节约功耗;
0:打开数字输入。
0
0
0
注:如果引脚用于模拟功能(ADC/TouchKey)
,建议将该引脚的数字输入功能关闭,即设置数字输入
禁用,从而可以降低功耗,并有利于减少干扰。
PA 端口中断使能寄存器(R16_PA_INT_EN)
位
[15:0]
名称
R16_PA_INT_EN
访问
RW
描述
PA 引脚中断使能位:
1:使能相应中断;
0:禁止相应中断。
复位值
0000h
PB 端口中断使能寄存器(R16_PB_INT_EN)
位
名称
访问
描述
PB 引脚中断使能位:
[15:0]
R16_PB_INT_EN
RW
1:使能相应中断;
0:禁止相应中断。
注:R16_PB_INT_EN[9:8]由 RB_PIN_INTX 选择对应 PB[23:22]或 PB[9:8]。
PA 端口中断模式配置寄存器(R16_PA_INT_MODE)
位
名称
访问
描述
PA 引脚中断模式选择位:
[15:0]
R16_PA_INT_MODE
RW
1:边沿触发;0:电平触发。
PB 端口中断模式配置寄存器(R16_PB_INT_MODE)
位
名称
访问
描述
PB 引脚中断模式选择位:
[15:0]
R16_PB_INT_MODE
RW
1:边沿触发;0:电平触发。
注:R16_PB_INT_MODE[9:8]由 RB_PIN_INTX 选择对应 PB[23:22]或 PB[9:8]。
PA 端口中断标志寄存器(R16_PA_INT_IF)
位
名称
访问
[15:0]
R16_PA_INT_IF
RW1
PB 端口中断标志寄存器(R16_PB_INT_IF)
位
名称
访问
描述
PA 引脚中断标志位,写 1 清零:
1:有中断;0:无中断。
描述
PB 引脚中断标志位,写 1 清零:
[15:0]
R16_PB_INT_IF
RW1
1:有中断;
0:无中断。
注:R16_PB_INT_IF[9:8]由 RB_PIN_INTX 选择对应 PB[23:22]或 PB[9:8]。
复位值
0000h
复位值
0000h
复位值
0000h
复位值
0000h
复位值
0000h
43
PA 端口方向配置寄存器(R32_PA_DIR)
位
名称
访问
[31:16] Reserved
RO
[15:8]
R8_PA_DIR_1
RW
[7:0]
R8_PA_DIR_0
RW
描述
保留。
PA 引脚当前输入输出方向配置:
1:引脚为输出模式;
0:引脚为输入模式。
复位值
0000h
00h
00h
PA 端口引脚输入寄存器(R32_PA_PIN)
位
[31:16]
名称
Reserved
访问
RO
[15:8]
R8_PA_PIN_1
RO
[7:0]
R8_PA_PIN_0
RO
描述
保留。
PA 引脚当前电平状态(仅在 R32_PA_DIR
对应位为 0 时,该位值有效):
1:引脚输入高电平;
0:引脚输入低电平。
复位值
0000h
描述
复位值
0000h
XXh
XXh
PA 端口数据输出寄存器(R32_PA_OUT)
位
[31:16]
名称
Reserved
访问
RO
[15:8]
R8_PA_OUT_1
RW
[7:0]
R8_PA_OUT_0
RW
保留。
方向寄存器 R32_PA_DIR 对应位为 1 时:
控制 PA 引脚输出电平状态:
1:输出高电平;0:输出低电平。
方向寄存器 R32_PA_DIR 对应位为 0 时:
控制 PA 引脚中断极性选择:
1:高电平/上升沿;0:低电平/下降沿。
00h
00h
PA 端口数据复位寄存器(R32_PA_CLR)
位
[31:16]
[15:8]
名称
Reserved
R8_PA_CLR_1
访问
RO
WZ
[7:0]
R8_PA_CLR_0
WZ
PA 端口上拉电阻配置寄存器(R32_PA_PU)
位
名称
访问
[31:16] Reserved
RO
[15:8]
R8_PA_PU_1
RW
[7:0]
R8_PA_PU_0
RW
描述
保留。
PA 数据寄存器复位控制:
1:R32_PA_OUT 对应位数据清 0;
0:无影响。
描述
保留。
PA 引脚上拉电阻使能控制:
1:启用上拉电阻;0:关闭上拉电阻。
PA 端口下拉/驱动配置寄存器(R32_PA_PD_DRV)
位
名称
访问
描述
[31:16] Reserved
RO
保留。
方向寄存器 R32_PA_DIR 对应位为 0 时:
PA 引脚下拉电阻使能控制:
[15:8]
R8_PA_PD_DRV_1
RW
1:启用下拉电阻;0:关闭下拉电阻。
方向寄存器 R32_PA_DIR 对应位为 1 时:
PA 引脚电流驱动能力选择:
[7:0]
R8_PA_PD_DRV_0
RW
1:20mA 级别;0:5mA 级别。
复位值
0000h
00h
00h
复位值
0000h
00h
00h
复位值
0000h
00h
00h
44
PB 端口方向配置寄存器(R32_PB_DIR)
位
名称
访问
[31:24] Reserved
RO
[23:16] R8_PB_DIR_2
RW
[15:8]
R8_PB_DIR_1
RW
[7:0]
R8_PB_DIR_0
RW
描述
保留。
PB 引脚当前输入输出方向配置:
1:引脚为输出模式;
0:引脚为输入模式。
复位值
00h
00h
00h
00h
PB 端口引脚输入寄存器(R32_PB_PIN)
位
[31:24]
[23:16]
[15:8]
名称
Reserved
R8_PB_PIN_2
R8_PB_PIN_1
访问
RO
RO
RO
[7:0]
R8_PB_PIN_0
RO
描述
保留。
PB 引脚当前电平状态(仅在 R32_PB_DIR
对应位为 0 时,该位值有效):
1:引脚输入高电平;
0:引脚输入低电平。
复位值
00h
XXh
XXh
XXh
PB 端口数据输出寄存器(R32_PB_OUT)
位
[31:24]
名称
Reserved
访问
RO
[23:16]
R8_PB_OUT_2
RW
[15:8]
R8_PB_OUT_1
RW
[7:0]
R8_PB_OUT_0
RW
描述
保留。
方向寄存器 R32_PB_DIR 对应位为 1 时:
控制 PB 引脚输出电平状态:
1:输出高电平;0:输出低电平。
方向寄存器 R32_PB_DIR 对应位为 1 时:
控制 PB 引脚输出电平状态:
1:输出高电平;0:输出低电平。
方向寄存器 R32_PB_DIR 对应位为 0 时:
控制 PB 引脚中断极性选择:
1:高电平/上升沿;0:低电平/下降沿。
复位值
00h
00h
00h
00h
PB 端口数据复位寄存器(R32_PB_CLR)
位
[31:24]
[23:16]
[15:8]
[7:0]
名称
Reserved
R8_PB_CLR_2
R8_PB_CLR_1
R8_PB_CLR_0
访问
RO
WZ
WZ
WZ
PB 端口上拉电阻配置寄存器(R32_PB_PU)
位
名称
访问
[31:24] Reserved
RO
[23:16] R8_PB_PU_2
RW
[15:8]
R8_PB_PU_1
RW
[7:0]
R8_PB_PU_0
RW
描述
保留。
PB 数据寄存器复位控制:
1:R32_PB_OUT 对应位数据清 0;
0:无影响。
描述
保留。
PB 引脚上拉电阻使能控制:
1:启用上拉电阻;0:关闭上拉电阻。
PB 端口下拉/驱动配置寄存器(R32_PB_PD_DRV)
位
名称
访问
[31:24] Reserved
RO
保留。
[23:16]
R8_PB_PD_DRV_2
RW
复位值
00h
00h
00h
00h
复位值
00h
00h
00h
00h
描述
复位值
00h
方向寄存器 R32_PB_DIR 对应位为 0 时:
00h
45
[15:8]
R8_PB_PD_DRV_1
RW
[7:0]
R8_PB_PD_DRV_0
RW
PB 引脚下拉电阻使能控制:
1:启用下拉电阻;0:关闭下拉电阻。
方向寄存器 R32_PB_DIR 对应位为 1 时:
PB 引脚电流驱动能力选择:
1:20mA 级别;0:5mA 级别。
00h
00h
7.5 GPIO 引脚模式配置
每个 GPIO 都可以配置成 5 种模式,具体见下表:
表 7-9 端口配置表
模式
R32_Px_DIR
浮空输入/高阻输入/模拟输入
0
带上拉电阻的输入
0
带下拉电阻的输入
0
推挽输出,驱动能力 5mA 级别
1
推挽输出,驱动能力 20mA 级别
1
R32_Px_PU
0
1
0
X
X
R32_Px_PD_DRV
0
0
1
0
1
46
第 8 章 通用定时器 TMRx
8.1 TMRx 简介
芯片提供了 4 个 26 位定时器,TMR0、TMR1、TMR2 和 TMR3,最长定时时间为 2^26 个时钟周期。
它适用于多种场合,包括测量输入信号脉冲长度(输入捕捉)或者产生输出波形(PWM)
,另外 TMR1
和 TMR2 支持 DMA 功能。每个定时器都是完全独立的,可以一起同步操作。
8.1.1 主要特性
l 4 个 26 位定时器,每个定时器定时时间最大为 2^26 个时钟周期。
l 支持定时器中断,其中 TMR1 和 TMR2 支持 DMA 及中断。
l 支持捕捉功能,测量输入脉冲长度或周期。
l 捕捉功能可设置为电平变化捕捉和高或低电平保持时间捕捉功能。
l 支持 26 位 PWM 功能,可动态调整 PWM 占空比设置。
8.2 寄存器描述
表 8-1 TMR0 相关寄存器列表
名称
访问地址
描述
复位值
R8_TMR0_CTRL_MOD
R8_TMR0_INTER_EN
R8_TMR0_INT_FLAG
R8_TMR0_FIFO_COUNT
R32_TMR0_COUNT
R32_TMR0_CNT_END
R32_TMR0_FIFO
0x40002000
0x40002002
0x40002006
0x40002007
0x40002008
0x4000200C
0x40002010
模式设置寄存器
中断使能寄存器
中断标志寄存器
FIFO 计数寄存器
当前计数值寄存器
计数终值设置寄存器
FIFO 寄存器
0x02
0x00
0x00
0x0X
0x0XXXXXXX
0x0XXXXXXX
0x0XXXXXXX
名称
R8_TMR1_CTRL_MOD
R8_TMR1_CTRL_DMA
R8_TMR1_INTER_EN
R8_TMR1_INT_FLAG
R8_TMR1_FIFO_COUNT
R32_TMR1_COUNT
R32_TMR1_CNT_END
R32_TMR1_FIFO
R16_TMR1_DMA_NOW
R16_TMR1_DMA_BEG
R16_TMR1_DMA_END
表 8-2 TMR1 相关寄存器列表
访问地址
描述
0x40002400
模式设置寄存器
0x40002401
DMA 控制寄存器
0x40002402
中断使能寄存器
0x40002406
中断标志寄存器
0x40002407
FIFO 计数寄存器
0x40002408
当前计数值寄存器
0x4000240C
计数终值寄存器
0x40002410
FIFO 寄存器
0x40002414
DMA 当前缓冲区地址
0x40002418
DMA 起始缓冲区地址
0x4000241C
DMA 结束缓冲区地址
复位值
0x02
0x00
0x00
0x00
0x0X
0x0XXXXXXX
0x0XXXXXXX
0x0XXXXXXX
0x0000XXXX
0x0000XXXX
0x0000XXXX
名称
R8_TMR2_CTRL_MOD
R8_TMR2_CTRL_DMA
R8_TMR2_INTER_EN
表 8-3 TMR2 相关寄存器列表
访问地址
描述
0x40002800
模式设置寄存器
0x40002801
DMA 控制寄存器
0x40002802
中断使能寄存器
复位值
0x02
0x00
0x00
47
R8_TMR2_INT_FLAG
R8_TMR2_FIFO_COUNT
R32_TMR2_COUNT
R32_TMR2_CNT_END
R32_TMR2_FIFO
R16_TMR2_DMA_NOW
R16_TMR2_DMA_BEG
R16_TMR2_DMA_END
0x40002806
0x40002807
0x40002808
0x4000280C
0x40002810
0x40002814
0x40002818
0x4000281C
中断标志寄存器
FIFO 计数寄存器
当前计数值寄存器
计数终值寄存器
FIFO 寄存器
DMA 当前缓冲区地址
DMA 起始缓冲区地址
DMA 结束缓冲区地址
表 8-4 TMR3 相关寄存器列表
访问地址
描述
名称
R8_TMR3_CTRL_MOD
R8_TMR3_INTER_EN
R8_TMR3_INT_FLAG
R8_TMR3_FIFO_COUNT
R32_TMR3_COUNT
R32_TMR3_CNT_END
R32_TMR3_FIFO
0x40002C00
0x40002C02
0x40002C06
0x40002C07
0x40002C08
0x40002C0C
0x40002C10
模式设置寄存器
中断使能寄存器
中断标志寄存器
FIFO 计数寄存器
当前计数值寄存器
计数终值设置寄存器
FIFO 寄存器
0x00
0x0X
0x0XXXXXXX
0x0XXXXXXX
0x0XXXXXXX
0x0000XXXX
0x0000XXXX
0x0000XXXX
复位值
0x02
0x00
0x00
0x0X
0x0XXXXXXX
0x0XXXXXXX
0x0XXXXXXX
模式设置寄存器(R8_TMRx_CTRL_MOD) (x=0/1/2/3)
位
名称
访问
[7:6]
RB_TMR_CAP_EDGE
RW
[7:6]
RB_TMR_PWM_REPEAT
RW
5
Reserved
RO
4
RB_TMR_CAP_COUNT
RW
4
RB_TMR_OUT_POLAR
RW
3
RB_TMR_OUT_EN
RW
2
RB_TMR_COUNT_EN
RW
1
RB_TMR_ALL_CLEAR
RW
0
RB_TMR_MODE_IN
RW
描述
捕捉模式下,选择捕捉触发方式:
00:不触发;
01:捕捉任何边沿变化之间的时间;
10:捕捉下降沿到下降沿之间时间;
11:捕捉上升沿到上升沿之间时间。
计数模式下,选择计数的边沿:
00:不采样计数;
01:采样到任意边沿计数;
10:采样到下降沿计数;
11:采样到上升沿计数。
PWM 模式下,选择数据重复方式:
00:重复 1 次;01:重复 4 次;
10:重复 8 次;11:重复 16 次。
保留。
RB_TMR_MODE_IN=1 输入模式的子模式:
1:计数模式;0:捕捉模式。
PWM 模式下,输出极性设置位:
1:默认高电平,低电平有效;
0:默认低电平,高电平有效。
定时器输出使能位:
1:输出使能;0:输出禁止。
定时器计数使能位:
1:使能计数;0:停止计数。
定时器的 FIFO/计数器/中断标志清零:
1:强制清空和清零;0:不清。
定时器模式设置位:
1:输入模式(捕捉模式或计数模式)
;
复位值
00b
00b
0
0
0
0
0
1
0
48
0:定时模式或 PWM 模式。
中断使能寄存器(R8_TMRx_INTER_EN) (x=0/1/2/3)
位
[7:5]
名称
Reserved
访问
RO
4
RB_TMR_IE_FIFO_OV
RW
3
RB_TMR_IE_DMA_END
RW
2
RB_TMR_IE_FIFO_HF
RW
1
RB_TMR_IE_DATA_ACT
RW
0
RB_TMR_IE_CYC_END
RW
描述
保留。
FIFO 溢出(捕捉模式 FIFO 满或 PWM 模
式 FIFO 空)中断使能位:
1:使能中断;0:禁止中断。
DMA 结束中断使能位(仅 TMR1/2 支持)
:
1:使能中断;0:禁止中断。
FIFO 使用过半
(捕捉模式 FIFO>=4 或 PWM
模式 FIFO=4 或 PWM
模式 FIFO=4 或发送
时 FIFOTCHIG
0.4
0.8
0.6
0.5
0.006
0.006
典型值
最大值
0.4
0.2
单位
uS
uS
uS
uS
uS
uS
uS
uS
uS
uS
uS
84
第 13 章 预留
第 14 章 预留
85
第 15 章 模数转换器 ADC
15.1 ADC 简介
芯片提供一个 12 位逐次逼近型模拟数字转换器 ADC,提供多达 16 个通道,CH583 和 CH582 芯片
支持 14 个外部信号源和 2 个内部信号源,CH581 芯片支持前 6 个外部信号源和 2 个内部信号源。
15.1.1 主要特性
l
l
l
l
l
l
l
l
12 位分辨率。
14 个外部电压采样通道、内部的温度检测通道、内部的电池电压检测通道。
单端输入模式和差分输入模式检测。
采样时钟频率可选。
ADC 输入电压范围 0V~VIO33。
可选 PGA,提供增益调节选择。
可选输入缓冲器 BUF,支持高阻信号源。
CH583 和 CH582 支持 DMA 和定时间隔自动连续 ADC 采样,间隔可调。CH581 不支持。
15.1.2 功能描述
下图为一个 ADC 模块的框图。
图 15-1 ADC 结构图
15.2 寄存器描述
名称
R8_ADC_CHANNEL
R8_ADC_CFG
R8_ADC_CONVERT
R8_TEM_SENSOR
表 15-1 ADC 相关寄存器列表
访问地址
描述
0x40001058
ADC 输入通道选择寄存器
0x40001059
ADC 配置寄存器
0x4000105A
ADC 转换控制寄存器
0x4000105B
温度传感器控制寄存器
复位值
0x0F
0xA0
0x00
0x00
86
R16_ADC_DATA
R8_ADC_INT_FLAG
R32_ADC_DMA_CTRL
R8_ADC_CTRL_DMA
R8_ADC_DMA_IF
R8_ADC_AUTO_CYCLE
R16_ADC_DMA_NOW
R16_ADC_DMA_BEG
R16_ADC_DMA_END
0x4000105C
0x4000105E
0x40001060
0x40001061
0x40001062
0x40001063
0x40001064
0x40001068
0x4000106C
ADC 数据寄存器
ADC 中断标志寄存器
DMA 控制和状态寄存器
DMA 和中断控制寄存器
ADC 和 DMA 中断标志寄存器
连续 ADC 定时周期寄存器
DMA 当前缓冲区地址
DMA 起始缓冲区地址
DMA 结束缓冲区地址
0x0XXX
0x00
0x00
0x00
0x00
0xXX
0x0000XXXX
0x0000XXXX
0x0000XXXX
ADC 输入通道选择寄存器(R8_ADC_CHANNEL)
位
[7:4]
名称
Reserved
[3:0]
RB_ADC_CH_INX
访问
RO
RW
描述
保留。
ADC 通道索引号,共 16 个通道:
00h-0Dh:外部信号通道 AIN0~AIN13;
0Eh:电池电压 VBAT;
0Fh:内置温度传感器 TS。
CH581 仅支持 AIN0~AIN5 和 VBAT 及 TS。
复位值
0000b
1111b
ADC 配置寄存器(R8_ADC_CFG)
位
名称
访问
[7:6]
RB_ADC_CLK_DIV
RW
[5:4]
RB_ADC_PGA_GAIN
RW
3
RB_ADC_OFS_TEST
RW
2
RB_ADC_DIFF_EN
RW
1
RB_ADC_BUF_EN
RW
0
RB_ADC_POWER_ON
RW
PGA 增益选择
-12dB(1/4 倍)
描述
ADC 时钟频率选择:
00:基于 CK32M 的 10 分频,3.2MHz;
01:基于 CK32M 的 4 分频,8MHz;
10:基于 CK32M 的 6 分频,5.33MHz;
11:基于 CK32M 的 8 分频,4MHz。
实际采样速率约为该时钟频率的 1/18。
ADC 的输入 PGA 增益选择:
00:-12dB,1/4 倍;
01:-6dB,1/2 倍;
10:0dB,1 倍,无增益;
11:6dB,2 倍。
ADC 偏移误差测试模式:
1:测试/校准模式,测试模式下数据寄
存器 R16_ADC_DATA 低 12 位数据将按位
取反(0x0573 反为 0x0A8C);
0:正常模式。
ADC 通道信号输入模式:
1:差分输入;0:单端输入。
ADC 输入缓冲器 BUF 使能:
1:开启;
0:关闭。
ADC 模块电源使能控制:
1:使能;
0:关闭。
表 15-2 PGA 增益选择与输入电压范围表
由 ADC 转换后的数据
理论可测
理论可测电压范围
计算被采样的电压 Vi 电压上限
(假定 Vref=1.05V)
(ADC/512-3)*Vref
5*Vref
-0.2V ~ VIO33+0.2V
复位值
10b
10b
0
0
0
0
建议实际可用
测量电压范围
2.9V ~ VIO33
87
-6dB(1/2 倍)
0dB(1 倍)
6dB(2 倍)
(ADC/1024-1)*Vref
(ADC/2048)*Vref
(ADC/4096+0.5)*Vref
3*Vref
2*Vref
1.5*Vref
-0.2V ~ 3.15V
0V ~ 2.1V
0.525V ~ 1.575V
1.9V ~ 3V
0V ~ 2V
0.6V ~ 1.5V
ADC:ADC 转换后的数字量,即 R16_ADC_DATA。
Vref:内部模拟电路的电源节点 VINTA 的实际电压值,通常为 1.05V±0.015V。
说明:较低的电压如果进行负增益(信号减小)后采样,可能将会导致一段电压范围内误差大;
而较高的电压如果经过正增益(信号放大)后采样,可能将会导致 ADC 转换值溢出,因此建议根据被
测信号电压范围选择合理的增益模式。
默认建议开启输入缓冲器,只有当外部信号源内阻小于 1KΩ时,才可以关闭输入缓冲器进行 ADC。
当采用差分输入时,建议关闭输入缓冲器。当用于 TouchKey 检测时,必须开启输入缓冲器,且
建议选择 0dB(优先)或-6dB 两种增益之一。
ADC 转换控制寄存器(R8_ADC_CONVERT)
位
名称
7
RB_ADC_EOC_X
RO
Reserved
RO
RB_ADC_START
RW
[6:1]
0
访问
描述
复位值
ADC 转换结束标志(异步信号):
0
1:完成;
0:进行中。
保留。
000000b
ADC 转换启动控制及状态,在非连续 ADC
结束时或在 DMA 结束时自动清零:
0
1:开始转换/正在转换;0:停止转换。
温度传感器控制寄存器(R8_TEM_SENSOR)
位
7
[6:0]
名称
访问
RB_TEM_SEN_PWR_ON
RW
Reserved
RW
描述
TS 温度传感器电源使能控制:
1:使能;
0:关闭。
保留。
复位值
0
0000000b
ADC 数据寄存器(R16_ADC_DATA)
位
[15:12]
[11:0]
名称
Reserved
RB_ADC_DATA
访问
RW
RO
ADC 中断标志寄存器(R8_ADC_INT_FLAG)
位
名称
访问
7
[6:0]
RB_ADC_IF_EOC
RO
Reserved
RW
DMA 和中断控制寄存器(R8_ADC_CTRL_DMA)
位
名称
访问
7
RB_ADC_AUTO_EN
RW
6
RB_ADC_CONT_EN
RW
5
4
Reserved
RB_ADC_IE_EOC
RO
RW
描述
保留。
ADC 转换后的数据。
描述
ADC 转换完成标志。
对 寄 存 器 R8_ADC_CONVERT 或
R8_TKEY_CONVERT 进行写操作可清零
此标志。
保留。
描述
定时间隔自动连续 ADC 采样使能:
1:使能自动 ADC; 0:禁止自动 ADC。
ADC 连续转换模式使能:
1:使能连续 ADC; 0:禁止连续 ADC。
保留。
ADC 转换完成中断使能位:
复位值
0000b
XXXh
复位值
0
0000000b
复位值
0
0
00b
0
88
3
RB_ADC_IE_DMA_END
RW
2
RB_ADC_DMA_LOOP
RW
1
Reserved
RO
0
RB_ADC_DMA_ENABLE
RW
1:使能中断;
0:禁止中断。
DMA 结束中断使能位:
1:使能中断;
0:禁止中断。
DMA 地址循环功能使能位:
1:使能地址循环;0:禁止地址循环。
如果使能 DMA 地址循环,当 DMA 地址增
加到设置的末尾地址时,自动循环指向
设置的首地址。
保留。
DMA 功能使能位:
1:使能 DMA;
0:禁止 DMA。
0
0
0
0
ADC 和 DMA 中断标志寄存器(R8_ADC_DMA_IF)
位
[7:5]
名称
Reserved
访问
RO
4
RB_ADC_IF_END_ADC
RW1
3
RB_ADC_IF_DMA_END
RW1
Reserved
RO
[2:0]
描述
保留。
ADC 转换完成中断标志,写 1 清零或 DMA
取走数据或对寄存器 R8_ADC_CONVERT
进行写操作可清零此标志:
1:已完成一次 ADC;0:未完成。
DMA 完成标志位,写 1 清零:
1:已完成; 0:未完成。
保留。
复位值
000b
0
0
000b
连续 ADC 定时周期寄存器(R8_ADC_AUTO_CYCLE)
位
[7:0]
名称
R8_ADC_AUTO_CYCLE
访问
描述
复位值
RW
连续 ADC 定时周期起始值,以 16 个系统
时钟为单位计数,满 256 后重新加载。
计算方法:定时
=(256-R8_ADC_AUTO_CYCLE)*16*Tsys
XXh
DMA 当前缓冲区地址(R16_ADC_DMA_NOW)
位
名称
访问
[15:0]
R16_ADC_DMA_NOW
RO
DMA 起始缓冲区地址(R16_ADC_DMA_BEG)
位
名称
访问
[15:0]
R16_ADC_DMA_BEG
RW
DMA 结束缓冲区地址(R16_ADC_DMA_END)
位
名称
访问
[15:0]
R16_ADC_DMA_END
15.3 ADC 配置
RW
描述
DMA 数据缓冲区当前地址。
可用于计算已转换次数,计算方法:
COUNT=(ADC_DMA_NOW-ADC_DMA_BEG)/2。
复位值
描述
DMA 数据缓冲区起始地址,仅低 15 位有
效,地址必须 2 字节对齐。
复位值
描述
DMA 数据缓冲区结束地址(不含)
,仅低
15 位有效,地址必须 2 字节对齐。
复位值
XXXXh
XXXXh
XXXXh
89
15.3.1 外部通道采样
(1)、设置 R8_ADC_CFG 的 RB_ADC_POWER_ON 为 1 开启 ADC,通过 RB_ADC_CLK_DIV 选择采样频率,通
过 RB_ADC_BUF_EN 和 RB_ADC_PGA_GAIN 启用输入缓冲器及选择信号增益等;
(2)、设置 R8_ADC_CHANNEL 寄存器,选择外部或内部信号通道;
(3)、设置 R8_ADC_CONVERT 寄存器,置位 RB_ADC_START,启动 ADC 转换;
(4)、查询等待 RB_ADC_START 自动清零或者等待 RB_ADC_IF_EOC 置 1,表示转换完成,可以读取
R16_ADC_DATA 获取 12 位 ADC 转换数据,时间足够时建议再次转换并丢弃首次 ADC 数据;
(5)、重复 2、3、4 步骤,可以继续采样另一通道或者下一组数据。
(6)、单次 ADC 转换周期:ADC 采样(4 个时钟)+ 切换 1 个时钟 + 转换时间(12 个时钟)≈ 17 个
Tadc,连续 ADC 时还要加上 1 个时间间隔,其中,Tadc = Tsys @ RB_ADC_CLK_DIV。
(7)、如果使用差分输入:
使能差分,选择 0#通道:实际是对 AIN0(正端)和 AIN2(负端)的电压进行差分转换;
使能差分,选择 1#通道:实际是对 AIN1(正端)和 AIN3(负端)的电压进行差分转换;
ADC 转换后的结果,如果数据大于 0x800 表示差分正端的电压高于差分负端的电压;如果数据
小于 0x800 表示差分正端的电压低于差分负端的电压。以 PGA 增益选择 0dB 为例,理论可测电
压范围为-1.05V~1.05V,0x400 表示差分正端的电压低于差分负端的电压约 0.5 个 Vref。
15.3.2 温度传感器采样
(1)、设置 R8_TEM_SENSOR 寄存器的 RB_TEM_SEN_PWR_ON 为 1 开启温度传感器,设置 R8_ADC_CHANNEL
为 15,选择温度传感器信号连接到 ADC 输入;
(2)、设置 RB_ADC_POWER_ON 为 1 开启 ADC,设置 RB_ADC_DIFF_EN 为 1,设置 RB_ADC_CLK_DIV,设置
RB_ADC_BUF_EN 为 1,设置 RB_ADC_PGA_GAIN 为 11;
(3)、设置 R8_ADC_CONVERT 寄存器,置位 RB_ADC_START 为 1,启动 ADC 转换;
(4)、查询等待 RB_ADC_START 自动清零或者等待 RB_ADC_IF_EOC 置 1,读取 R16_ADC_DATA 获取 12 位
ADC 转换数据,精度要求较高时,建议重复 3 和 4 步骤多次,计算 ADC 数据的平均值;
(5)、根据电压与温度换算关系得到温度值,具体请参考评估板例子程序。
15.3.4 启用 DMA 自动连续 ADC
(1)、参考非 DMA 方式设置 ADC 参数和选择通道等;
(2)、设置 R8_ADC_AUTO_CYCLE 选择连续 ADC 的周期;
(3)、设置寄存器 R16_ADC_DMA_BEG 为存储 ADC 数据缓冲区的首地址,设置寄存器 R16_ADC_DMA_END
为存储 ADC 数据缓冲区的结束地址(不含)
,并设置 R8_ADC_CTRL_DMA 的 RB_ADC_DMA_ENABLE 为 1,
使能 DMA 功能;
(4)、可选步骤,如果需要启用中断则设置相应的中断使能寄存器位,当 RB_ADC_IE_EOC=1 时将由
RB_ADC_IF_END_ADC 触发 ADC 完成中断,当 RB_ADC_IE_EOC=0 且 RB_ADC_IE_DMA_END=0 时将由
RB_ADC_IF_EOC 触发 ADC 完成中断;
(5)、将 RB_ADC_AUTO_EN 置 1 以开启自动连续 ADC;
(6)、每次 ADC 完成后,RB_ADC_IF_EOC 和 RB_ADC_IF_END_ADC 都会置 1,但 RB_ADC_IF_END_ADC 会在
DMA 取走数据时自动清零,所以,如果需要查询 ADC 完成状态,那么可以查询 RB_ADC_IF_EOC。
90
第 16 章 触摸按键 Touch-Key
16.1 Touch-Key 简介
CH583 和 CH582 芯片提供了电容检测模块,配合 ADC 模块使用,可以实现电容类触摸按键检测功
能。共 14 个输入通道,支持触摸按键电容值范围 10pF~100pF,提供驱动屏蔽输出以提高灵敏度。
16.2 寄存器描述
表 16-1 TouchKey 相关寄存器列表
访问地址
描述
名称
R8_TKEY_COUNT
R8_TKEY_CONVERT
R8_TKEY_CFG
0x40001054
0x40001056
0x40001057
TouchKey 充放电时间寄存器(R8_TKEY_COUNT)
位
名称
访问
[7:5]
RB_TKEY_DISCH_CNT
RW
[4:0]
RB_TKEY_CHARG_CNT
RW
TouchKey 充放电时间寄存器
TouchKey 检测控制寄存器
TouchKey 配置寄存器
描述
Touch-Key 放 电 周 期 数 , 以 由
RB_ADC_CLK_DIV 选择的 ADC 时钟为计数
单 位 。 计 算 方 法 : 放 电 时 间
=(RB_TKEY_DISCH_CNT+1)*Tadc。
Touch-Key 充 电 周 期 数 , 以 由
RB_ADC_CLK_DIV 选择的 ADC 时钟为计数
单 位 。 计 算 方 法 : 充 电 时 间
=(RB_TKEY_CHARG_CNT+4)*Tadc。
复位值
0xXX
0x00
0x00
复位值
XXXb
XXXXXb
TouchKey 检测控制寄存器(R8_TKEY_CONVERT)
位
[7:1]
0
名称
Reserved
RB_TKEY_START
TouchKey 配置寄存器(R8_TKEY_CFG)
位
名称
[7:4] Reserved
访问
RO
RW
访问
RO
3
RB_TKEY_PGA_ADJ
RW
2
RB_TKEY_DRV_EN
RW
1
RB_TKEY_CURRENT
RO
0
RB_TKEY_PWR_ON
RW
16.3 Touch-Key 配置
请参考和调用相关子程序。
描述
保留。
TouchKey 检测控制及状态,自动清零:
1:开始检测/正在转换;0:停止转换。
描述
保留。
选择 ADC 中 PGA 的运行速度:
1:高速但功耗略大;0:正常速度。
TouchKey 驱动屏蔽使能:
1:使能;
0:禁用。
TouchKey 充电电流选择:
1:60%电流;0:额定电流。
TouchKey 模块电源使能控制:
1:使能;
0:关闭。
复位值
0000000b
0
复位值
0000b
0
0
0
0
91
第 17 章 USB 控制器
17.1 USB 控制器简介
l
l
l
l
CH581 内嵌 1 个、CH583 和 CH582 内嵌 2 个完全独立的 USB 主从控制器及收发器,特性如下:
支持 USB Host 主机功能和 USB Device 设备功能。
支持 USB2.0 全速 12Mbps 或者低速 1.5Mbps。
支持 USB 控制传输、批量传输、中断传输、同步/实时传输。
支持最大 64 字节的数据包,内置 FIFO,支持中断和 DMA。
17.2 寄存器描述
两个 USB 控制器的基地址分别是 0x40008000 和 0x40008400,除此之外都相同,本手册以 USB 为
例说明,USB2 参考使用。
USB 相关寄存器分为 3 个部分,部分寄存器是在主机和设备模式下进行复用的。
(1)
、USB 全局寄存器
(2)
、USB 设备控制寄存器
(3)
、USB 主机控制寄存器
17.2.1 全局寄存器描述
表 17-1 USB 相关寄存器列表(标灰受 RB_UC_RESET_SIE 复位控制)
名称
访问地址
描述
复位值
R8_USB_CTRL
0x40008000
USB 控制寄存器
0x06
R8_USB_INT_EN
0x40008002
USB 中断使能寄存器
0x00
R8_USB_DEV_AD
0x40008003
USB 设备地址寄存器
0x00
R32_USB_STATUS
0x40008004
USB 状态寄存器
0xXX20XXXX
R8_USB_MIS_ST
0x40008005
USB 杂项状态寄存器
0xXX
R8_USB_INT_FG
0x40008006
USB 中断标志寄存器
0x20
R8_USB_INT_ST
0x40008007
USB 中断状态寄存器
0xXX
R8_USB_RX_LEN
0x40008008
USB 接收长度寄存器
0xXX
USB 控制寄存器(R8_USB_CTRL)
位
名称
访问
7
RB_UC_HOST_MODE
RW
6
RB_UC_LOW_SPEED
RW
5
RB_UC_DEV_PU_EN
RW
[5:4]
MASK_UC_SYS_CTRL
RW
RB_UC_INT_BUSY
RW
3
描述
复位值
USB 工作模式选择位:
1:主机模式(HOST)
;
0
0:设备模式(DEVICE)
。
USB 总线信号传输速率选择位:
0
1:1.5Mbps;0:12Mbps。
USB 设备模式下,USB 设备使能和内部上
拉电阻控制位,为 1 则使能 USB 设备传
0
输并且启用内部上拉电阻。
RB_PIN_USB_DP_PU 可代替此位。
见下表配置 USB 系统。
00b
USB 传输完成中断标志未清零前自动暂
停使能位:
0
1:在中断标志 UIF_TRANSFER 未清零前
自动暂停,设备模式下自动应答忙 NAK,
92
2
RB_UC_RESET_SIE
RW
1
RB_UC_CLR_ALL
RW
0
RB_UC_DMA_EN
RW
主机模式下自动暂停后续传输;
0:不暂停。
USB 协议处理器软件复位控制位:
1:强制复位 USB 协议处理器(SIE)
,需
要软件清零;
0:不复位。
USB 的 FIFO 和中断标志清零:
1:强制清空和清零; 0:不清。
USB 的 DMA 和 DMA 中断控制位:
1:使能 DMA 功能和 DMA 中断;
0:关闭 DMA。
1
1
0
由 RB_UC_HOST_MODE 和 MASK_UC_SYS_CTRL 组成 USB 系统控制组合:
RB_UC_HOST_MODE
MASK_UC_SYS_CTRL
0
00
0
01
0
1x
1
1
1
1
00
01
10
11
USB 系统控制描述
禁止 USB 设备功能,关闭内部上拉电阻。
注:
如果 RB_PIN_USB_DP_PU=1 则强制启用 DP 上拉电阻。
使能 USB 设备功能,关闭内部上拉电阻,需加外部上拉。
注:
如果 RB_PIN_USB_DP_PU=1 则强制启用 DP 上拉电阻。
使能 USB 设备功能,启用内部 1.5K 上拉电阻。该上拉
电阻优先于下拉电阻,也可用于 GPIO 模式。
USB 主机模式,正常工作状态。
USB 主机模式,强制 DP/DM 输出 SE0 状态。
USB 主机模式,强制 DP/DM 输出 J 状态。
USB 主机模式,强制 DP/DM 输出 K 状态/唤醒。
USB 中断使能寄存器(R8_USB_INT_EN)
位
名称
访问
7
RB_UIE_DEV_SOF
RW
6
RB_UIE_DEV_NAK
RW
5
Reserved
RO
4
RB_UIE_FIFO_OV
RW
3
RB_UIE_HST_SOF
RW
2
RB_UIE_SUSPEND
RW
1
RB_UIE_TRANSFER
RW
RB_UIE_DETECT
RW
RB_UIE_BUS_RST
RW
0
USB 设备地址寄存器(R8_USB_DEV_AD)
位
名称
访问
描述
USB 设备模式,接收 SOF 包中断:
1:使能中断;0:禁止中断。
USB 设备模式,接收到 NAK 中断:
1:使能中断;0:禁止中断。
保留。
FIFO 溢出中断:
1:使能中断;0:禁止中断。
USB 主机模式,SOF 定时中断:
1:使能中断;0:禁止中断。
USB 总线挂起或唤醒事件中断:
1:使能中断;0:禁止中断。
USB 传输完成中断:
1:使能中断;0:禁止中断。
USB 主机模式,USB 设备连接或断开事件
中断:
1:使能中断;0:禁止中断。
USB 设备模式,USB 总线复位事件中断:
1:使能中断;0:禁止中断。
描述
复位值
0
0
0
0
0
0
0
0
0
复位值
93
7
RB_UDA_GP_BIT
RW
[6:0]
MASK_USB_ADDR
RW
USB 杂项状态寄存器(R8_USB_MIS_ST)
位
名称
访问
7
RB_UMS_SOF_PRES
RO
6
RB_UMS_SOF_ACT
RO
5
RB_UMS_SIE_FREE
RO
4
RB_UMS_R_FIFO_RDY
RO
3
RB_UMS_BUS_RESET
RO
2
RB_UMS_SUSPEND
RO
1
RB_UMS_DM_LEVEL
RO
0
RB_UMS_DEV_ATTACH
RO
USB 中断标志寄存器(R8_USB_INT_FG)
位
名称
访问
7
RB_U_IS_NAK
RO
6
RB_U_TOG_OK
RO
5
RB_U_SIE_FREE
RO
4
RB_UIF_FIFO_OV
RW
USB 通用标志位,用户自定义。
0
主机模式:当前操作的 USB 设备地址;
0000000b
设备模式:该 USB 自身地址。
描述
USB 主机模式下 SOF 包预示状态位:
1:将要发送 SOF 包,此时如有其它 USB
数据包将被自动延后;
0:无 SOF 包发送。
USB 主机模式下 SOF 包传输状态位:
1:正在发出 SOF 包;
0:发送完成或者空闲。
USB 协议处理器的空闲状态位:
1:协议器空闲;
0:忙,正在进行 USB 传输。
USB 接收 FIFO 数据就绪状态位:
1:接收 FIFO 非空;
0:接收 FIFO 为空。
USB 总线复位状态位:
1:当前 USB 总线处于复位态;
0:当前 USB 总线处于非复位态。
USB 挂起状态位:
1:USB 总线处于挂起态,有一段时间没
有 USB 活动;
0:USB 总线处于非挂起态。
USB 主机模式下,设备刚连入 USB 端口
是 DM 引脚的电平状态,用于判断速度:
1:高电平/低速;
0:低电平/全速。
USB 主机模式下端口的 USB 设备连接状
态位:
1:端口已经连接 USB 设备;
0:端口没有 USB 设备连接。
复位值
描述
USB 设备模式下,NAK 响应状态位:
1:当前 USB 传输过程中回应 NAK;
0:无 NAK 响应。
当前 USB 传输 DATA0/1 同步标志匹配状
态位:
1:同步;0:不同步。
USB 协议处理器空闲状态位:
1:USB 空闲;
0:忙,正在进行 USB 传输。
USB FIFO 溢出中断标志位,写 1 清零:
1:FIFO 溢出触发;0:无事件。
复位值
X
X
1
0
X
0
0
0
0
0
1
0
94
3
RB_UIF_HST_SOF
RW
2
RB_UIF_SUSPEND
RW
1
RB_UIF_TRANSFER
RW
RB_UIF_DETECT
RW
RB_UIF_BUS_RST
RW
0
USB 中断状态寄存器(R8_USB_INT_ST)
位
名称
访问
USB 主机模式下 SOF 定时中断标志位,
写 1 清零:
1:SOF 包传输完成触发;0:无事件。
USB 总线挂起或唤醒事件中断标志位,
写 1 清零:
1:USB 挂起事件或唤醒事件触发;
0:无事件。
USB 传输完成中断标志位,写 1 清零:
1:一个 USB 传输完成触发;0:无事件。
USB 主机模式下 USB 设备连接或断开事
件中断标志位,写 1 清零:
1:检测到 USB 设备连接或断开触发;
0:无事件。
USB 设备模式下 USB 总线复位事件中断
标志位,写 1 清零:
1:USB 总线复位事件触发;
0:无事件。
描述
0
0
0
0
0
复位值
USB 设备模式下,该位为 1 表示当前已
成功接收到 8 字节的 SETUP 请求包,
0
SETUP 令 牌不影 响 RB_UIS_TOG_OK 和
7
RB_UIS_SETUP_ACT
RO
MASK_UIS_TOKEN 、 MASK_UIS_ENDP 及
R8_USB_RX_LEN。
当前 USB 传输 DATA0/1 同步标志匹配状
6
RB_UIS_TOG_OK
RO
态位,同 RB_U_TOG_OK:
0
1:同步;0:不同步。
设备模式下,当前 USB 传输事务的令牌
[5:4] MASK_UIS_TOKEN
RO
XXb
PID 标识。
设备模式下,当前 USB 传输事务的端点
MASK_UIS_ENDP
RO
XXXXb
号。
[3:0]
主机模式下,当前 USB 传输事务的应答
MASK_UIS_H_RES
RO
PID 标识,0000 表示设备无应答或超时; XXXXb
其它值表示应答 PID。
MASK_UIS_TOKEN 用于 USB 设备模式下标识当前 USB 传输事务的令牌 PID:00 表示 OUT 包;01 表
示 SOF 包;10 表示 IN 包;11 表示空闲。
当 MASK_UIS_TOKEN 非空闲、并且 RB_UIS_SETUP_ACT 也为 1 时,必须先处理前者,处理完前者后
清零一次 RB_UIF_TRANSFER 使前者进入空闲状态,再处理后者,最后再清零一次 RB_UIF_TRANSFER。
MASK_UIS_H_RES 仅在主机模式下有效。在主机模式下,若主机发送 OUT/SETUP 令牌包时,则该
PID 是握手包 ACK/NAK/STALL,或者是设备无应答/超时。若主机发送 IN 令牌包,则该 PID 是数据包
的 PID(DATA0/DATA1)或者握手包 PID。
USB 接收长度寄存器(R8_USB_RX_LEN)
位
名称
访问
[7:0] R8_USB_RX_LEN
RO
17.2.2 设备寄存器描述
描述
当前 USB 端点接收的数据字节数。
复位值
XXh
95
在 USB 设备模式下,芯片提供了端点 0、1、2、3、4、5、6、7 共 8 组双向端点,所有端点的最
大数据包长度都是 64 字节。
端点 0 是默认端点,支持控制传输,发送和接收共用一个 64 字节数据缓冲区。
端点 1、端点 2、端点 3 各自包括一个发送端点 IN 和一个接收端点 OUT,发送和接收各有一个独
立的 64 字节或者双 64 字节数据缓冲区,支持批量传输、中断传输和实时/同步传输。
端点 4、端点 5、端点 6、端点 7 包括一个发送端点 IN 和一个接收端点 OUT,发送和接收各有一
个独立的 64 字节数据缓冲区,支持批量传输、中断传输和实时/同步传输。
每组端点都具有一个控制寄存器 R8_UEPn_CTRL 和发送长度寄存器 R8_UEPn_T_LEN
(n=0/1/2/3/4/5/6/7)
,用于设定该端点的同步触发位、对 OUT 事务和 IN 事务的响应以及发送数据
的长度等。
作为 USB 设备所必要的 USB 总线上拉电阻可以由软件随时设置是否启用,当 USB 控制寄存器
R8_USB_CTRL 中的 RB_UC_DEV_PU_EN 置 1 时,控制器根据 RB_UD_LOW_SPEED 的速度设置,在内部为 USB
总线的 DP/DM 引脚连接上拉电阻,并启用 USB 设备功能。上述控制不能用于睡眠或下电模式,但
R16_PIN_ANALOG_IE 中的 RB_PIN_USB_DP_PU 可以不受睡眠模式的影响而强制启用 DP 引脚的上拉电阻。
当检测到 USB 总线复位、USB 总线挂起或唤醒事件,或者当 USB 成功处理完数据发送或者数据接
收后,USB 协议处理器都将设置相应的中断标志,如果中断使能打开,还会产生相应的中断请求。应
用程序可以直接查询或在 USB 中断服务程序中查询并分析中断标志寄存器 R8_USB_INT_FG,根据
RB_UIF_BUS_RST 和 RB_UIF_SUSPEND 进行相应的处理;并且,如果 RB_UIF_TRANSFER 有效,那么还需
要继续分析 USB 中断状态寄存器 R8_USB_INT_ST,
根据当前端点号 MASK_UIS_ENDP 和当前事务令牌 PID
标识 MASK_UIS_TOKEN 进行相应的处理。如果事先设定了各个端点的 OUT 事务的同步触发位
RB_UEP_R_TOG,那么可以通过 RB_U_TOG_OK 或者 RB_UIS_TOG_OK 判断当前所接收到的数据包的同步
触发位是否与该端点的同步触发位匹配,如果数据同步,则数据有效;如果数据不同步,则数据应该
被丢弃。每次处理完 USB 发送或者接收中断后,都应该正确修改相应端点的同步触发位,用于下次所
发送的数据包或者下次所接收的数据包是否同步检测;另外,设置 RB_UEP_AUTO_TOG 可以实现在发送
成功或者接收成功后自动翻转相应的同步触发位。
各个端点准备发送的数据在各自的缓冲区中,准备发送的数据长度是独立设定在 R8_UEPn_T_LEN
中;各个端点接收到的数据在各自的缓冲区中,但是接收到的数据长度都在 USB 接收长度寄存器
R8_USB_RX_LEN 中,可以在 USB 接收中断时根据当前端点号区分。
表 17-2 USB 设备相关寄存器列表(标灰受 RB_UC_RESET_SIE 复位控制)
名称
R8_UDEV_CTRL
R8_UEP4_1_MOD
R8_UEP2_3_MOD
R8_UEP567_MOD
R16_UEP0_DMA
R16_UEP1_DMA
R16_UEP2_DMA
R16_UEP3_DMA
R8_UEP0_T_LEN
R8_UEP0_CTRL
R8_UEP1_T_LEN
R8_UEP1_CTRL
R8_UEP2_T_LEN
R8_UEP2_CTRL
R8_UEP3_T_LEN
R8_UEP3_CTRL
R8_UEP4_T_LEN
R8_UEP4_CTRL
访问地址
0x40008001
0x4000800c
0x4000800d
0x4000800e
0x40008010
0x40008014
0x40008018
0x4000801c
0x40008020
0x40008022
0x40008024
0x40008026
0x40008028
0x4000802a
0x4000802c
0x4000802e
0x40008030
0x40008032
描述
USB 设备物理端口控制寄存器
端点 1/4 模式控制寄存器
端点 2/3 模式控制寄存器
端点 5/6/7 模式控制寄存器
端点 0 缓冲区起始地址
端点 1 缓冲区起始地址
端点 2 缓冲区起始地址
端点 3 缓冲区起始地址
端点 0 发送长度寄存器
端点 0 控制寄存器
端点 1 发送长度寄存器
端点 1 控制寄存器
端点 2 发送长度寄存器
端点 2 控制寄存器
端点 3 发送长度寄存器
端点 3 控制寄存器
端点 4 发送长度寄存器
端点 4 控制寄存器
复位值
0xX0
0x00
0x00
0x00
0xXXXX
0xXXXX
0xXXXX
0xXXXX
0xXX
0x00
0xXX
0x00
0xXX
0x00
0xXX
0x00
0xXX
0x00
96
R16_UEP5_DMA
R16_UEP6_DMA
R16_UEP7_DMA
R8_UEP5_T_LEN
R8_UEP5_CTRL
R8_UEP6_T_LEN
R8_UEP6_CTRL
R8_UEP7_T_LEN
R8_UEP7_CTRL
0x40008054
0x40008058
0x4000805c
0x40008064
0x40008066
0x40008068
0x4000806a
0x4000806c
0x4000806e
端点 5 缓冲区起始地址
端点 6 缓冲区起始地址
端点 7 缓冲区起始地址
端点 5 发送长度寄存器
端点 5 控制寄存器
端点 6 发送长度寄存器
端点 6 控制寄存器
端点 7 发送长度寄存器
端点 7 控制寄存器
0xXXXX
0xXXXX
0xXXXX
0xXX
0x00
0xXX
0x00
0xXX
0x00
USB 设备物理端口控制寄存器(R8_UDEV_CTRL)
位
名称
访问
7
RB_UD_PD_DIS
RW
6
Reserved
RO
5
RB_UD_DP_PIN
RO
4
RB_UD_DM_PIN
RO
3
Reserved
RO
2
RB_UD_LOW_SPEED
RW
1
RB_UD_GP_BIT
RW
0
RB_UD_PORT_EN
RW
描述
复位值
USB 设备端口 UD+/UD-引脚内部下拉电
阻控制位:
1
1:禁用内部下拉;0:使能内部下拉。
可用于 GPIO 模式提供下拉电阻。
保留。
0
当前 UD+引脚状态:
X
1:高电平;
0:低电平。
当前 UD-引脚状态:
X
1:高电平;
0:低电平。
保留。
0
USB 设备物理端口低速模式使能位:
1:选择 1.5Mbps 低速模式;
0
0:选择 12Mbps 全速模式。
USB 设备模式通用标志位,用户自定义。
0
USB 设备物理端口使能位:
0
1:使能物理端口;0:禁用物理端口。
端点 1/4 模式控制寄存器(R8_UEP4_1_MOD)
位
名称
访问
描述
复位值
1:使能端点 1 接收(OUT)
;
7
RB_UEP1_RX_EN
RW
0
0:禁止端点 1 接收。
1:使能端点 1 发送(IN)
;
6
RB_UEP1_TX_EN
RW
0
0:禁止端点 1 发送。
5
Reserved
RO
保留。
0
4
RB_UEP1_BUF_MOD
RW
端点 1 数据缓冲区模式控制位。
0
1:使能端点 4 接收(OUT)
;
3
RB_UEP4_RX_EN
RW
0
0:禁止端点 4 接收。
1:使能端点 4 发送(IN)
;
2
RB_UEP4_TX_EN
RW
0
0:禁止端点 4 发送。
[1:0] Reserved
RO
保留。
00b
bUEP4_RX_EN 和 bUEP4_TX_EN 组合配置 USB 端点 0 和 4 的数据缓冲区模式,具体参考下表:
表 17-3 端点 0 和 4 缓冲区模式
bUEP4_RX_EN bUEP4_TX_EN
描述:以 UEP0_DMA 为起始地址由低向高排列
0
0
端点 0 单 64 字节收发共用缓冲区(IN 和 OUT)
。
1
0
端点 0 单 64 字节收发共用缓冲区;
端点 4 单 64 字节接收缓冲区
(OUT)。
97
0
1
1
1
端点 0 单 64 字节收发共用缓冲区;端点 4 单 64 字节发送缓冲区(IN)。
端点 0 单 64 字节收发共用缓冲区;
端点 4 单 64 字节接收缓冲区
(OUT);
端点 4 单 64 字节接收缓冲区(IN)
。总共 192 字节排列如下:
UEP0_DMA+0 地址:端点 0 收发共用缓冲区 64 字节起始地址;
UEP0_DMA+64 地址:端点 4 接收缓冲区 64 字节起始地址;
UEP0_DMA+128 地址:端点 4 发送缓冲区 64 字节起始地址。
端点 2/3 模式控制寄存器(R8_UEP2_3_MOD)
位
名称
访问
描述
复位值
1:使能端点 3 接收(OUT)
;
0
7
RB_UEP3_RX_EN
RW
0:禁止端点 3 接收。
1:使能端点 3 发送(IN)
;
0
6
RB_UEP3_TX_EN
RW
0:禁止端点 3 发送。
5
Reserved
RO
保留。
0
4
RB_UEP3_BUF_MOD
RW
端点 3 数据缓冲区模式控制位。
0
1:使能端点 2 接收(OUT)
;
0
3
RB_UEP2_RX_EN
RW
0:禁止端点 2 接收。
1:使能端点 2 发送(IN)
;
2
RB_UEP2_TX_EN
RW
0
0:禁止端点 2 发送。
1
Reserved
RO
保留。
0
0
RB_UEP2_BUF_MOD
RW
端点 2 数据缓冲区模式控制位。
0
由 RB_UEPn_RX_EN 和 RB_UEPn_TX_EN 以及 RB_UEPn_BUF_MOD(n=1/2/3)
组合分别配置 USB 端点 1、
2、3 的数据缓冲区模式,具体参考下表。其中,在双 64 字节缓冲区模式下,USB 数据传输时将根据
RB_UEP_*_TOG=0 选择前 64 字节缓冲区,根据 RB_UEP_*_TOG=1 选择后 64 字节缓冲区,设置
RB_UEP_AUTO_TOG=1 可实现自动切换。
RB_UEPn_
RX_EN
0
1
1
0
0
1
RB_UEPn_
TX_EN
0
0
0
1
1
1
1
1
表 17-4 端点 n 缓冲区模式(n=1/2/3)
RB_UEPn_
描述:以 R16_UEPn_DMA 为起始地址由低向高排列
BUF_MOD
X
端点被禁用,未用到 R16_UEPn_DMA 缓冲区。
0
单 64 字节接收缓冲区(OUT)。
1
双 64 字节接收缓冲区(OUT),由 RB_UEP_R_TOG 选择。
0
单 64 字节发送缓冲区(IN)。
1
双 64 字节发送缓冲区(IN),由 RB_UEP_T_TOG 选择。
0
单 64 字节接收缓冲区(OUT),单 64 字节发送缓冲区(IN)
。
双 64 字节接收缓冲区(OUT),通过 RB_UEP_R_TOG 选择,
双 64 字节发送缓冲区(IN),通过 RB_UEP_T_TOG 选择。
全部 256 字节排列如下:
1
UEPn_DMA+0 地址:RB_UEP_R_TOG=0 时端点接收地址;
UEPn_DMA+64 地址:RB_UEP_R_TOG=1 时端点接收地址;
UEPn_DMA+128 地址:RB_UEP_T_TOG=0 时端点发送地址;
UEPn_DMA+192 地址:RB_UEP_T_TOG=1 时端点发送地址。
端点 5/6/7 模式控制寄存器(R8_UEP567_MOD)
位
名称
访问
描述
[7:6] Reserved
RO
保留。
1:使能端点 7 接收(OUT)
;
5
RB_UEP7_RX_EN
RW
0:禁止端点 7 接收。
复位值
00b
0
98
4
RB_UEP7_TX_EN
RW
3
RB_UEP6_RX_EN
RW
2
RB_UEP6_TX_EN
RW
1
RB_UEP5_RX_EN
RW
0
RB_UEP5_TX_EN
RW
1:使能端点 7 发送(IN)
;
0:禁止端点 7 发送。
1:使能端点 6 接收(OUT)
;
0:禁止端点 6 接收。
1:使能端点 6 发送(IN)
;
0:禁止端点 6 发送。
1:使能端点 5 接收(OUT)
;
0:禁止端点 5 接收。
1:使能端点 5 发送(IN)
;
0:禁止端点 5 发送。
0
0
0
0
0
由 RB_UEPn_RX_EN 和 RB_UEPn_TX_EN(n=5/6/7)组合分别配置 USB 端点 5、6、7 的数据缓冲区
模式,具体参考下表。
RB_UEPn_RX_EN
0
1
0
1
表 17-5
RB_UEPn_TX_EN
0
0
1
1
端点 n 缓冲区模式(n=5/6/7)
描述:以 R16_UEPn_DMA 为起始地址由低向高排列
端点被禁用,未用到 R16_UEPn_DMA 缓冲区。
单 64 字节接收缓冲区(OUT)。
单 64 字节发送缓冲区(IN)。
单 64 字节接收缓冲区(OUT),单 64 字节发送缓冲区(IN)
。
端点 n 缓冲区起始地址(R16_UEPn_DMA) (n=0/1/2/3/5/6/7)
位
名称
访问
描述
端点 n 缓冲区起始地址。
[15:0] R16_UEPn_DMA
RW
低 15 位有效,地址必须 4 字节对齐。
复位值
XXXXh
注:接收数据的缓冲区的长度 >= min(可能收到的最大数据包长度 + 2 字节,64 字节)
。
端点 n 发送长度寄存器(R8_UEPn_T_LEN) (n=0/1/2/3/4/5/6/7)
位
[7:0]
名称
R8_UEPn_T_LEN
访问
RW
描述
复位值
设置 USB 端点 n 准备发送的数据字节数。
XXh
端点 n 控制寄存器(R8_UEPn_CTRL) (n=0/1/2/3/4/5/6/7)
位
名称
访问
7
RB_UEP_R_TOG
RW
6
RB_UEP_T_TOG
RW
5
Reserved
RO
4
RB_UEP_AUTO_TOG
RW
[3:2]
MASK_UEP_R_RES
RW
描述
复位值
USB 端点 n 的接收器(处理 OUT 事务)
期望的同步触发位:
0
1:期望 DATA1;0:期望 DATA0。
USB 端点 n 的发送器(处理 IN 事务)准
备的同步触发位:
0
1:发送 DATA1;0:发送 DATA0。
保留。
0
同步触发位自动翻转使能控制位:
1:数据发送或接收成功后自动翻转相应
的同步触发位;
0
0:不自动翻转,可以手动切换。
只支持端点 1/2/3/5/6/7。
端点 n 的接收器对 OUT 事务的响应控制:
00:应答 ACK;
00b
01:超时/无响应,用于非端点 0 的实时
/同步传输;
99
[1:0]
MASK_UEP_T_RES
RW
10:应答 NAK 或忙;
11:应答 STALL 或错误。
端点 n 的发送器对 IN 事务的响应控制:
00:DATA0/DATA1 数据就绪并期望 ACK;
01:应答 DATA0/DATA1 并期望无响应,
用于非端点 0 的实时/同步传输;
10:应答 NAK 或忙;
11:应答 STALL 或错误。
00b
17.2.3 主机寄存器描述
在 USB 主机模式下,芯片提供了一组双向主机端点,包括一个发送端点 OUT 和一个接收端点 IN,
数据包的最大长度是 64 字节,支持控制传输、中断传输、批量传输和实时/同步传输。
主机端点发起的每一个 USB 事务,在处理结束后总是自动设置 RB_UIF_TRANSFER 中断标志。应用
程序可以直接查询或在 USB 中断服务程序中查询并分析中断标志寄存器 R8_USB_INT_FG,根据各中断
标志分别进行相应的处理;并且,如果 RB_UIF_TRANSFER 有效,那么还需要继续分析 USB 中断状态寄
存器 R8_USB_INT_ST,根据当前 USB 传输事务的应答 PID 标识 MASK_UIS_H_RES 进行相应的处理。
如果事先设定了主机接收端点的 IN 事务的同步触发位 RB_UH_R_TOG,那么可以通过 RB_U_TOG_OK
或者 RB_UIS_TOG_OK 判断当前所接收到的数据包的同步触发位是否与主机接收端点的同步触发位匹
配,如果数据同步,则数据有效;如果数据不同步,则数据应该被丢弃。每次处理完 USB 发送或者接
收中断后,都应该正确修改相应主机端点的同步触发位,用于同步下次所发送的数据包和检测下次所
接收的数据包是否同步;另外,通过设置 RB_UH_T_AUTO_TOG 和 RB_UH_R_AUTO_TOG 可以实现在发送
成功或接收成功后自动翻转相应的同步触发位。
USB 主机令牌设置寄存器 R8_UH_EP_PID 用于设置被操作的目标设备的端点号和本次 USB 传输事
务的令牌 PID 包标识。SETUP 令牌和 OUT 令牌所对应的数据由主机发送端点提供,准备发送的数据在
R16_UH_TX_DMA 缓冲区中,准备发送的数据长度设置在 R16_UH_TX_LEN 中;IN 令牌所对应数据由目标
设备返回给主机接收端点,接收到数据存放 R16_UH_RX_DMA 缓冲区中,接收到的数据长度存放在
R8_USB_RX_LEN 中。
表 17-6 USB 主机相关寄存器列表(标灰受 RB_UC_RESET_SIE 复位控制)
名称
访问地址
描述
复位值
R8_UHOST_CTRL
0x40008001
USB 主机物理端口控制寄存器
0xX0
R8_UH_EP_MOD
0x4000800d
USB 主机端点模式控制寄存器
0x00
R16_UH_RX_DMA
0x40008018
USB 主机接收缓冲区起始地址
0xXXXX
R16_UH_TX_DMA
0x4000801c
USB 主机发送缓冲区起始地址
0xXXXX
R8_UH_SETUP
0x40008026
USB 主机辅助设置寄存器
0x00
R8_UH_EP_PID
0x40008028
USB 主机令牌设置寄存器
0x00
R8_UH_RX_CTRL
0x4000802a
USB 主机接收端点控制寄存器
0x00
R8_UH_TX_LEN
0x4000802c
USB 主机发送长度寄存器
0xXX
R8_UH_TX_CTRL
0x4000802e
USB 主机发送端点控制寄存器
0x00
USB 主机物理端口控制寄存器(R8_UHOST_CTRL)
位
名称
访问
描述
USB 主机端口 UD+/UD-引脚内部下拉电
阻控制位:
7
RB_UH_PD_DIS
RW
1:禁用内部下拉;0:使能内部下拉。
可用于 GPIO 模式提供下拉电阻。
6
Reserved
RO
保留。
5
RB_UH_DP_PIN
RO
当前 UD+引脚状态:
复位值
1
0
X
100
4
RB_UH_DM_PIN
RO
3
Reserved
RO
2
RB_UH_LOW_SPEED
RW
1
RB_UH_BUS_RESET
RW
0
RB_UH_PORT_EN
RW
1:高电平;
0:低电平。
当前 UD-引脚状态:
1:高电平;
0:低电平。
保留。
USB 主机端口低速模式使能位:
1:选择 1.5Mbps 低速模式;
0:选择 12Mbps 全速模式。
USB 主机模式总线复位控制位:
1:强制输出 USB 总线复位;
0:结束输出。
USB 主机端口使能位:
1:使能主机端口;0:禁用主机端口。
当 USB 设备断开连接时,该为自动清 0。
X
0
0
0
0
USB 主机端点模式控制寄存器(R8_UH_EP_MOD)
位
名称
访问
描述
复位值
7
Reserved
RO
保留。
0
主机发送端点发送(SETUP/OUT)使能位:
6
RB_UH_EP_TX_EN
RW
1:使能端点发送;
0
0:禁止端点发送。
5
Reserved
RO
保留。
0
主机发送端点发送数据缓冲区模式控制
4
RB_UH_EP_TBUF_MOD
RW
0
位。
主机接收端点接收(IN)使能位:
3
RB_UH_EP_RX_EN
RW
1:使能端点接收;
0
0:禁止端点接收。
[2:1] Reserved
RO
保留。
00b
USB 主机接收端点接收数据缓冲区模式
0
RB_UH_EP_RBUF_MOD
RW
0
控制位。
由 RB_UH_EP_TX_EN 和 RB_UH_EP_TBUF_MOD 组合控制主机发送端点数据缓冲区模式,参考下表。
表 17-7 主机发送缓冲区模式
RB_UH_EP_TX_EN
RB_UH_EP_TBUF_MOD
描述:以 R16_UH_TX_DMA 为起始地址
0
X
端点被禁用,未用到 R16_UH_TX_DMA 缓冲区。
1
0
单 64 字节发送缓冲区(SETUP/OUT)
。
双 64 字节发送缓冲区,通过 RB_UH_T_TOG 选择:
1
1
当 RB_UH_T_TOG=0 时选择前 64 字节缓冲区;
当 RB_UH_T_TOG=1 时选择后 64 字节缓冲区。
由 RB_UH_EP_RX_EN 和 RB_UH_EP_RBUF_MOD 组合控制主机接收端点数据缓冲区模式,参考下表。
表 17-8 主机接收缓冲区模式
RB_UH_EP_RX_EN
RB_UH_EP_RBUF_MOD
结构描述:以 R16_UH_TX_DMA 为起始地址
0
X
端点被禁用,未用到 R16_UH_RX_DMA 缓冲区。
1
0
单 64 字节接收缓冲区(IN)
。
双 64 字节接收缓冲区,通过 RB_UH_R_TOG 选择:
1
1
当 RB_UH_R_TOG=0 时选择前 64 字节缓冲区;
当 RB_UH_R_TOG=1 时选择后 64 字节缓冲区。
USB 主机接收缓冲区起始地址(R16_UH_RX_DMA)
位
名称
访问
描述
复位值
101
[15:0]
R16_UH_RX_DMA
RW
主机端点数据接收缓冲区起始地址。
低 15 位有效,地址必须 4 字节对齐。
USB 主机发送缓冲区起始地址(R16_UH_TX_DMA)
位
名称
访问
描述
主机端点数据发送缓冲区起始地址。
[15:0] R16_UH_TX_DMA
RW
低 15 位有效,地址必须 4 字节对齐。
XXXXb
复位值
XXXXb
USB 主机辅助设置寄存器(R8_UH_SETUP)
位
名称
访问
7
RB_UH_PRE_PID_EN
RW
6
RB_UH_SOF_EN
RW
Reserved
RO
[5:0]
描述
低速前导包 PRE PID 使能位:
1:使能,用于通过外部 HUB 与低速 USB
设备通讯。
0:禁用低速前导包。
自动产生 SOF 包使能位:
1:主机自动产生 SOF 包;
0:不自动产生,但可手工产生。
保留。
000000b
描述
复位值
USB 主机令牌设置寄存器(R8_UH_EP_PID)
位
名称
访问
[7:4]
MASK_UH_TOKEN
RW
[3:0]
MASK_UH_ENDP
RW
设置本次 USB 传输事务的令牌 PID 包标
识。
设置本次被操作的目标设备的端点号。
复位值
0
0
0000b
0000b
USB 主机接收端点控制寄存器(R8_UH_RX_CTRL)
位
7
名称
访问
RB_UH_R_TOG
RW
Reserved
RO
4
RB_UH_R_AUTO_TOG
RW
3
Reserved
RO
2
RB_UH_R_RES
RW
Reserved
RO
[6:5]
[1:0]
USB 主机发送长度寄存器(R8_UH_TX_LEN)
位
名称
访问
[7:0]
R8_UH_TX_LEN
RW
描述
USB 主机接收器(处理 IN 事务)期望的
同步触发位:
1:期望 DATA1;0:期望 DATA0。
保留。
同步触发位自动翻转使能控制位:
1:数据接收成功后自动翻转相应的期待
同步触发位(RB_UH_R_TOG);
0:不自动翻转,可以手动切换。
保留。
主机接收器对 IN 事务的响应控制位:
1:无响应,用于非 0 端点的实时/同步
传输;
0:应答 ACK。
保留。
描述
设置 USB 主机发送端点准备发送的数据
字节数。
USB 主机发送端点控制寄存器(R8_UH_TX_CTRL)
复位值
0
00b
0
0
0
00b
复位值
XXh
102
位
7
名称
Reserved
访问
RO
6
RB_UH_T_TOG
RW
5
Reserved
RO
4
RB_UH_T_AUTO_TOG
RW
Reserved
RO
RB_UH_T_RES
RW
[3:1]
0
描述
保留。
USB 主机发送器(处理 SETUP/OUT 事务)
准备的同步触发位:
1:表示发送 DATA1;0:表示发送 DATA0。
保留。
同步触发位自动翻转使能控制位:
1:数据发送成功后自动翻转相应的同步
触发位(RB_UH_T_TOG);
0:不自动翻转,可以手动切换。
保留。
USB 主机发送器对 SETUP/OUT 事务的响
应控制位:
1:期望无响应,用于非 0 端点的实时/
同步传输;
0:期望应答 ACK。
复位值
0
0
0
0
000b
0
103
第 18 章 预留
104
第 19 章 无线通讯
19.1 简介
芯片集成低功耗 2.4-GHz 无线通讯模块,包括 RF 收发器、基带和链路控制以及天线匹配网络,
支持低功耗蓝牙 BLE。内部提供数百个寄存器用于调节参数和控制过程及状态,本手册不对寄存器作
详细介绍,无线通讯底层操作主要以子程序库提供应用支持。
主要特性:
l 集成 2.4GHz 射频收发器、BaseBand 基带和 LLE 链路控制。
l 支持低功耗蓝牙 BLE,符合 Bluetooth Low Energy 4.2/5.0 及以上规范。
l 单端 RF 接口,简化板级设计。
l 支持 2Mbps、1Mbps、500Kbps 和 125Kbps。
l 接收灵敏度-98dBm。
l 可编程-20dBm 到+7dBm 发送功率,支持动态调整。
l 在 0dBm 发送功率、PCB 板载天线时开阔地通讯距离约 210 米,7dBm 发送功率时约 500 米。
l 在 7dBm 发送功率、125Kbps 模式下开阔地通讯距离约 1000 米。
l 支持 AES 加解密。
l 支持 DMA。
l 提供优化的协议栈和应用层 API,支持组网。
19.2 LLE 模块
LLE 模块支持自动收发模式和手动收发模式,5 组独立的硬件定时器,可控制收发数据任意一过
程的时间点。
19.3 DMA 模块
控制器共有 2 组 DMA,每组 DMA 有两个通道。DMA0 的两个通道分别用于发送数据和接收数据,DMA2
的两个通道用于自动模式,在自动发送模式中,可以同时配置发送 DMA 的地址和接收 DMA 的地址,这
样在帧间隔期间不需要再进行配置。
19.4 BB 模块
19.5 AES 模块
具体的应用请基于 BLE 协议栈库使用,并参考提供的 BLE 应用示例。
105
第 20 章 参数
20.1 绝对最大值
临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏。
表 20-1 绝对最大值参数表
名称
TA
TS
VDD33
VIO33
VIO
VIO5
VDCI
VXCK
参数说明
工作时的环境温度
储存时的环境温度
系统电源电压(VDD33 接电源,GND 接地)
I/O 电源电压(VIO33 接电源,GND 接地)
输入或者输出引脚上的电压
支持 5V 耐压的输入或者输出引脚上的电压
VDCID/VDCIA 引脚上的电压(如果用外置 DC-DC)
X32MI/X32MO/启用 LSE 后的 PA10/PA11 的电压
最小值
-40
-40
-0.4
-0.4
-0.4
-0.4
-0.4
-0.3
最大值
85
125
4.2
4.2
VIO33+0.4
5.5
VDD33+0.4
1.4
单位
℃
℃
V
V
V
V
V
V
20.2 电气参数
测试条件:TA=25℃,VDD33=VIO33=3.3V,Fsys=16MHz。
表 20-2 电气参数表
名称
VDD33
VIO33
ICC8
ICC16
ICC48
IDDC8
IDDC16
IDDC48
VIL
VIH
VIL5
VIH5
VOL
VOH
IIN
IUP
IDN
Vref
Vdci
Vlvr
参数说明
CH583M
非 CH583M
CH583M
I/O 电源电压@VIO33
非 CH583M
Fsys=8M
直通方式静态电源电流
条件:代码运行于 RAM 中。 Fsys=16M
如运行于 Flash 中另加 5mA Fsys=48M
启用 DC-DC 后静态电源电流 Fsys=8M
条件:代码运行于 RAM 中。 Fsys=16M
如运行于 Flash 中另加 4mA Fsys=48M
GPIO 低电平输入电压
GPIO 高电平输入电压
支持 5V 耐压的 GPIO 低电平输入电压
支持 5V 耐压的 GPIO 高电平输入电压
低电平输出电压(5mA/20mA 吸入电流)
高电平输出电压(5mA/20mA 输出电流)
GPIO 浮空输入端的输入电流
GPIO 内置上拉电阻的输入端的输入电流
GPIO 内置下拉电阻的输入端的输入电流
VINTA 引脚的电压(ADC 参考电压)
VDCID 引脚在启用 DC-DC 后的电压
CH583X
LVR 低压复位的门限电压
非 CH583X
系统电源电压@VDD33
最小值
1.7
2.3
1.7
2.3
典型值
3.3
3.3
3.3
3.3
2.0
2.2
6.0
1.5
1.6
4.0
0
2.0
0
2.0
0
0.3
VIO33-0.4 VIO33-0.3
-3
0
25
60
-90
-60
1.035
1.05
1.18
1.3
1.3
1.5
1.8
2.05
最大值
3.6
3.6
3.6
3.6
0.9
VIO33
0.9
5.0
0.4
VIO33
3
90
25
1.065
1.38
1.7
2.3
单位
V
V
V
V
mA
mA
mA
mA
mA
mA
V
V
V
V
V
V
uA
uA
uA
V
V
V
V
106
20.3 低功耗模式功耗
测试条件:TA=25℃,VDD33=VIO33=3.3V,Fsys=16MHz。
表 20-3 低功耗参数表(仅供参考,与温度相关)
低功耗模式
最小值
典型值
空闲模式,开启各模块时钟组合
暂停模式,关闭所有时钟
睡眠模式,多种组合,参考表 5-3
睡眠模式,PMU+内核+RAM2K,GPIO 唤醒,无 RTC
下电模式,多种组合,参考表 5-3
下电模式,仅 PMU,GPIO 唤醒后复位,无 RTC
1.2
最大值
单位
1.8
mA
uA
uA
uA
uA
uA
典型值
0.3
1.4
0.3
0.4
200
0.9
100
150
0.4
0.1
0.1
1.6
3
11
6
5
2
10
4.5
12.5
5.5
最大值
单位
uA
uA
uA
uA
uA
uA
uA
uA
mA
mA
mA
mA
mA
mA
mA
mA
mA
mA
mA
mA
mA
典型值
32
200
500
最大值
36
500
3000
单位
MHz
uS
uS
典型值
32K
最大值
48K
单位
Hz
1.6
320
0.7~2.8
0.7
0.2~2.3
0.2
表 20-4 各模块电流(仅供参考,与温度相关)
名称
IDD(RAM2K)
IDD(RAM30K)
IDD(LSI)
IDD(LSE)
IDD(HSE)
IDD(BM)
IDD(BD)
IDD(PLL)
IDD(ADC)
IDD(TKEY)
IDD(TS)
IDD(USB)
IDD(BLE)
参数说明
RAM2K:2KB SRAM
RAM30K:30KB SRAM
内部 LSI 振荡器
外部 LSE 振荡器
外部 HSE 振荡器
低功耗的电池低压监控 BM 模块
高精度的电池低压检测 BD 模块
内部 PLL 振荡器
ADC 模块
TouchKey 模块
温度传感器 TS 模块
非发送状态
USB 模块
发送状态
直通电源
接收
启用 DC-DC
直通电源
-20dBm
发送功率
启用 DC-DC
BLE 蓝牙
直通电源
0dBm
发送功率
启用 DC-DC
直通电源
+3dBm
发送功率
启用 DC-DC
最小值
100
1.2
300
2.0
20.4 时钟源
名称
FHSE
TSUHSE
TSTHSE
名称
FLSIR
表 20-5 高速振荡器 HSE
参数说明
最小值
外部 HSE 振荡器频率(关闭无线通讯时)
24
外部 HSE 振荡器启动到可用时间
80
外部 HSE 振荡器启动到稳定时间
200
表 20-6 低速振荡器 LSI 和 LSE
参数说明
最小值
内部 LSI 振荡器频率(校准前)
20K
107
FLSI
ALSI
TSULSI
TSULSE
TSTLSE
内部 LSI 频率(应用软件运行时校准后)
TA=-40℃~85℃
LSI 振荡器精度
(软件校准后)
TA=0℃~60℃
内部 LSI 振荡器启动到稳定时间
外部 LSE 振荡器启动到可用时间
外部 LSE 振荡器启动到稳定时间
32726
100
500
表 20-7 PLL 特性
最小值
名称
参数说明
FPLL
TPLLLK
PLL 倍频输出时钟(CK32M * 15 倍)
PLL 锁相时间
32768
0.1
0.04
40
300
1500
32810
0.5
0.2
100
1500
5000
Hz
%
%
uS
mS
mS
典型值
最大值
单位
480
15
30
MHz
uS
典型值
最大值
单位
20.5 时间参数
测试条件:TA=25℃,VDD33=VIO33=3.3V,Fsys=6.4MHz。
表 20-8 时间参数
名称
参数说明
最小值
Trpor
Trst
Tmr
Tsr
Twtr
电源上电复位 RPOR 后的复位延时
11
15
20
mS
RST#有效信号宽度
100
nS
外部复位 MR 后的复位延时
2
8
18
uS
软件复位 SR 后的复位延时
2
8
18
uS
看门狗复位 WTR 后的复位延时
10
12
18
uS
空闲模式
0.6
1
3
uS
暂停模式
TSUHSE+1
TSUHSE+80
TSUHSE+150
uS
从低功耗状态
TWAK
退出的唤醒时间
睡眠模式
TSUHSE+1
TSUHSE+300
TSUHSE+400
uS
下电模式
TSUHSE+0.4
TSUHSE+1
TSUHSE+5
mS
注:上表中延时参数均是基于 Tsys 的倍数,降低主频将增加延时。
上表中延时参数是基于使用外部 HSE 时钟源,如果睡眠期间使用外部 HSE 时钟源,那么表中暂停模式
/睡眠模式/下电模式的延时参数 TWAK 均额外增加约 0.2~1mS(启动到可用 TSUHSE)
。
20.6 其它参数
测试条件:TA=25℃,VDD33=VIO33=3.3V,Fsys=16MHz。
表 20-9 其它参数
名称
参数说明
最小值
典型值
最大值 单位
RTS
TS 温度传感器的测量范围
-40
85
℃
ATSC
温度传感器经软件校准后的测量误差
±10
℃
TFRER
Flash-ROM 的单次扇区擦除操作时间
6
9
13
mS
TFRPG
Flash-ROM 的单次字编程操作时间
1
2
4
mS
5~45℃
100K
1000K(非担保)
Flash-ROM 的擦写次数
NEPCE
times
erase/program cycle endurance -40~85℃ 50K 200K(非担保)
TDR
Flash-ROM 的数据保持能力
20
years
天线 ANT
2K
4K(非担保)
V
I/O 输入或者输出
VESD
引脚上的 ESD 耐压
I/O 引脚:PA 和 PB
4K
6K(非担保)
V
108
第 21 章 封装
芯片封装
封装形式
塑体宽度
QFN48
QFN48
QFN28
QFN28
5*5mm
5*5mm
4*4mm
4*4mm
引脚间距
0.35mm
0.35mm
0.4mm
0.4mm
13.8mil
13.8mil
15.7mil
15.7mil
封装说明
订货型号
方形无引线 48 脚
方形无引线 48 脚
方形无引线 28 脚
方形无引线 28 脚
CH583M
CH582M
CH582F
CH581F
说明:尺寸标注的单位是 mm(毫米)
,引脚中心间距是标称值,除此之外的尺寸误差不大于±0.2mm。
QFN48_5X5
109
QFN28_4X4
110
第 22 章 修改记录
版本
日期
说明
V0.9
2020.05.11
初版发行
V1.0
2020.12.22
增加 3.4.2 和 3.4.3 节并修改 3.4.1 中断和 3.4.4 系统计数器说明,
微调蓝牙接收灵敏度,提示触摸检测支持驱动屏蔽,微调睡眠电流
V1.1
2021.06.22
4.1 节 R8_GLOB_RESET_KEEP 特性变化,在 shutdown/GRWSR 时将复位
V1.2
2021.08.10
修正 20.2 节型号笔误,替换 QFN48 封装图(厚度默认为 0.75)
V1.3
2021.09.23
更新 RB_WAKE_DLY_MOD,更新封装形式加注尺寸
http://wch.cn
很抱歉,暂时无法提供与“CH582M”相匹配的价格&库存,您可以联系我们找货
免费人工找货