APT32F101
V2.2
数据手册
APT32F101
触摸感应通用型 32 位微处理控制器
Revision 2.2
May 2018
版权所有©深圳市爱普特微电子有限公司
本资料内容为深圳市爱普特微电子有限公司在现有数据资料基础上慎重且力求准
确无误编制而成,本资料中所记载的实例以正确的使用方法和标准操作为前提,
使用方在应用该等实例时请充分考虑外部诸条件,深圳市爱普特微电子有限公司
不担保或确认该等实例在使用方的适用性、适当性或完整性,深圳市爱普特微电
子有限公司亦不对使用方因使用本资料所有内容而可能或已经带来的风险或后果
承担任何法律责任。基于使本资料的内容更加完善等原因,公司保留未经预告的
修改权。
APTCHIP MICROELECTRONICS
1
APT32F101
V2.2
产品订购信息
型号
FLASH 大小
SRAM 大小
封装
APT32F101H6S6
32KB
2KB
SSOP24
APT32F101H4S6
16KB
2KB
SSOP24
APT32F101H6M6
32KB
2KB
SOP24
APT32F101H4M6
16KB
2KB
SOP24
APT32F101F6M6
32KB
2KB
SOP20
APT32F101F4M6
16KB
2KB
SOP20
APT32F101F6U6
32KB
2KB
QFN20
APT32F101E6M6
32KB
2KB
SOP16
APT32F101E4M6
16KB
2KB
SOP16
A
P
T
32
F
1
0
1
H
6
S
6
-40℃ to 85℃
封装类型:S — SSOP
M — SOP
U — QFN
ROM大小:4 — 16KB
6 — 32KB
管脚数量: H — 24pin
F — 20pin
E — 16pin
MCU型号
APTCHIP MICROELECTRONICS
2
APT32F101
V2.2
历史版本说明
版本
修改日期
修改概要
V1.0
2016-9-10
初版
V1.1
2016-9-19
修正了一些前后表达不一致的错误
V1.2
2016-9-22
增加了系统定时器CORET章节
V1.3
2016-11-15
增加PC0.1作为复位管脚的一些描述,管脚定义和UserOption
- 电气特性中增加上电和掉电复位章节
V1.4
2017-01-12
- 根据量产测试情况,增加或修正电气特性中各个条目的参数值
- 修正一些前后表达不一致的错误
- 增加封装尺寸信息
V1.5
2017-03-16
V1.6
2017-06-09
V1.7
2017-07-20
- 增加24SOP和20QFN封装类型
V1.8
2017-08-01
- 修正SYSCON章节中IWDCR寄存器IWDT_INTW位的描述错误
V1.9
2017-11-01
- 删除错误增加的20TSSOP封装描述
- ADC章节:完善一些描述,修正错误说明
- 增加烧录工具复位脚 (PA0.0 / F_RST) 的描述
- 管脚重映射部分的内容改为管脚复用
V2.0
2018-02-08
- 电容式触摸传感器章节增加应用参考电路
- 上电时LVD改为默认使能,LVDCR寄存器第0位写1为禁止LVD模块 (E版本芯
片)
- QFN20封装管脚图上增加FLASH烧写管脚F_RST图示
V2.1
2018-03-12
- TC32增加寄存器使用说明,PRDR/PULR不能设置为0
- 在PC0.3/PC0.2上增加ADC13/14通道
- 删除LED中的机械按键检测功能
V2.2
2018-05-16
APTCHIP MICROELECTRONICS
- 更新上电示意图,删除POR电压检测值(VPOR)
3
概述
APT32F101
1
概述
1.1 文档用途
本文档是APT32F101产品的一个完整,详细的规格书。
1.2 APT32F101介绍
APT32F101是一个低成本,高性能的系列单片机,使用了C-Sky Microsystems Co., Ltd开发的32位单片机核。
APT32F101单片机面向的应用为家电以及便携设备等。
•
C-Sky 32位CPU核(0.9DMIPS)
•
片载32K(16Kbytes可选)程序闪存,4Kbytes数据闪存(大小可配置)
•
内含2Kbytes SRAM,可用于堆栈,数据存储,代码存储
•
工作温度: − 40 to 85°C
•
工作电压范围: 2.4 to 5.5V
•
中断控制器:支持动态配置的可嵌套中断 (NVIC)
•
用户友好的时钟和功耗控制器(SYSCON)
•
1 x 独立看门狗定时器(IWDT)
•
3 × 16位通用定时器/计数器,支持PWM功能 (GTC)
•
1 × 32位通用定时器/计数器,支持PWM功能 (GTC)
•
1 x 16位计数器(COUNTERA),支持自动重载功能以及单次或者循环计数功能(载波发生器)
•
1 × I2C 和 2 × UART
•
多达15路的12位ADC
•
多达16路的触摸按键控制器
•
支持4x8点阵(1/4占空比)的自动扫描LED驱动
•
4 x 大电流驱动的管脚(每个管脚最大120mA)
•
支持RUN,SLEEP,和DEEP-SLEEP模式
APTCHIP MICROELECTRONICS
1-1
概述
APT32F101
1.3 主要特性
1.3.1 CPU
•
32-bit RISC CPU核,指令长度16位
•
16个32位通用寄存器
•
高效的2级执行流水线
•
32位x32位的硬件整形乘法阵列
•
SWD (Serial Wire Debug)调试接口
1.3.2 存储
•
多达8, 16或32Kbytes的内部程序闪存,支持ISP保护,保护区域的大小可配置
•
多达4Kbytes的数据闪存,大小可通过User Option配置
•
闪存的User Option配置支持修改复位源,允许或者禁止看门狗,修改数据闪存大小以及使能程序代码保护功能
•
专用闪存烧录工具,支持快速的量产烧录
•
多达2Kbytes的内部SRAM
•
只支持小端(little-endian)存储方式
1.3.3 可嵌套中断控制器
•
多达32个中断源
•
32个可编程优先级,每个中断都有独立的优先级
•
每个中断都有独立的使能或者禁止控制
•
每个中断源都有固定的向量地址
•
支持陷阱功能
•
支持软件复位
•
可单独配置唤醒事件和中断的使能/禁止
1.3.4 系统控制器(SYSCON)
•
外部晶振 32.768K 到 24MHz (EMCLK: External Main Clock,外部主时钟)
•
内部晶振 20MHz (1%偏差,典型值) (IMCLK: Internal Main Clock,内部主时钟)
•
内部辅晶振 500KHz 或 3MHz (ISCLK: Internal Sub Clock,内部辅时钟)
•
支持低功耗模式 (SLEEP/DEEP-SLEEP)
•
低功耗模式下支持可编程的功耗优化
•
可编程的时钟分频器
•
外部晶振失效监测
•
复位源检测和管理 (RSTID)
APTCHIP MICROELECTRONICS
1-2
概述
APT32F101
1.3.5 IWDT: 独立看门狗定时器
•
复位时间可配置
•
可配置定时提醒中断
•
使用内部辅晶振的可编程18位递减计数器
1.3.6 GTC: 16位/32位通用定时器/计数器
•
多达3个通道的16位和1个通道的32位定时器/计数器(GTC0 to GTC3)
•
定时器的计数位数可配置
•
可以工作在捕捉,匹配和溢出,输出翻转和PWM输出模式
•
匹配和溢出中断
•
可选择内部或者外部时钟源
1.3.7 载波频率发生器 (Counter A)
•
1个16位的计数器,支持自动重载功能以及单次或者循环计数功能
•
软件/硬件可选择的载波频率输出使能/禁止控制
•
在一个周期波形内,输出高/低电平脉冲宽度可配置
•
输出极性可配置
•
可以用于驱动扬声器或者远程IR数据传输
1.3.8 UART: 通用异步收发器
•
多达2个通道
•
8位数据长度,无校验位
•
可编程的波特率
1.3.9 I2C
•
1个通道
•
支持多主机I2C总线
•
兼容串行8位数据传输和双向数据传输
•
标准模式100Kbit/s,高速模式可达400Kbit/s
1.3.10 ADC: 模数转换器
•
多达15个模拟输入通道供选择
•
12位模式支持最快500KSPS转换速度,10位模式支持最快1MSPS
•
支持连续转换模式和硬件比较转换结果
•
启动转换支持外部管脚触发或者内部定时器触发
APTCHIP MICROELECTRONICS
1-3
概述
APT32F101
1.3.11 触摸按键 (APT32F101)
•
针对电源敏感的应用和噪声敏感的应用,提供两种不同的检测模式
•
RC模式:支持多达16个触摸按键扫描通道,分成2组
•
外部C模式:支持15个触摸按键扫描通道
•
每个通道都支持可编程的灵敏度调节
•
支持同一个管脚上的触摸扫描和LED驱动同时工作
•
可配置扫描时钟频率,用于优化功耗
•
多种扫描触发模式
•
内嵌独立的硬件算法模块,支持硬件自动按键检测和系统唤醒
1.3.12 LED驱动
•
支持4 x 8 点阵(1/4占空比) LED驱动
•
可配置的COM通道数和亮度控制
•
多达4个大电流驱动I/O口,可以直接驱动LED(每个120mA)
•
8段显示驱动的通道可以和触摸按键功能在不同时间段内共用通一个管脚
1.3.13 通用IO (GPIO)
•
20管脚:18 个GPIO
•
16管脚:14 个GPIO
•
推挽输出和开漏输出可配置
•
上下拉电阻可配置
•
支持输出状态监测
•
管脚复用功能简单易用;所有管脚都支持外部中断功能
1.3.14 两个低功耗模式
•
SLEEP: 关闭选择的系统时钟和CPU时钟
•
DEEP-SLEEP: 关闭所有系统时钟和CPU时钟
•
可配置的DEEP-SLEEP唤醒源:外部中断,iWDT中断,LVD中断或者触摸按键中断
1.3.15 POR: 上电复位
1.3.16 LVD: 低电压检测
•
可配置成低电压复位功能,可选4个电压值 (2.2V/2.7V/3.3V/3.6V).
•
可配置成低电压产生中断,可选4个电压值 (2.5V/3.0V/3.9V/4.1V).
1.3.17 工作电压范围
•
2.4V to 5.5V
APTCHIP MICROELECTRONICS
1-4
概述
APT32F101
1.3.18 工作频率范围
•
外部主晶振 24 MHz
•
内部主晶振 20 MHz
•
内部辅晶振 500KHz 或 3MHz
1.3.19 工作温度范围
•
− 40 to 85°C
1.3.20 封装
•
24-SSOP
•
24-SOP
•
20-SOP
•
20-QFN
•
16-SOP
APTCHIP MICROELECTRONICS
1-5
概述
APT32F101
1.4 概要
ITEM
APT32F101
24 Pin 封装
20 Pin 封装
16 Pin 封装
FLASH (Kbytes)
32/16
32/16
32/16
SRAM (Kbytes)
2
2
2
32位通用定时器(GTC)
1
1
1
16位通用定时器(GTC)
3
3
3
UART
2
2
1
I2C
1
1
1
IWDT
1
1
1
ADC输入通道
15
13
11
TOUCH通道
16 CH
16 CH
12 CH
GPIOs (LSCIO)(1)
22(4)
18(4)
14(4)
CPU频率
24MHz
24MHz
24MHz
工作电压
2.4V ~ 5.5V
2.4V ~ 5.5V
2.4V ~ 5.5V
Table 1-1
APT32F101特性比较
NOTE: (1) LSCIO 意为大电流驱动 IO (Large Sink Current IO)
APTCHIP MICROELECTRONICS
1-6
概述
APT32F101
1.5 模块框图
32bit CPU
Bus
Control
Debug
Interface
Debug
Control
EIC
FLASH
SRAM
Internal
Flash
Controller
SRAM
Bridge
AHB Lite Bus Interface
AHB BUS
AHB2APB Bridge
SYSCON
I2C
LVD
IWDT
IMCLK CTL (20MHz)
EMCLK CTL (1~24MHz)
UART0
APB BUS
ISCLK CTL (3MHz)
UART1
12-bit ADC
LED Drive Controller
GTC0~3
TOUCH KEY
Counter A
IO FUNCTION MUX
LDO
IO FUNCTION MUX
GPIO
POR
BGR
Figure 1-1 APT32F101模块框图
APTCHIP MICROELECTRONICS
1-7
OSC
管脚配置
APT32F101
2
管脚配置
2.1 概要
本章节描述APT32F101产品的管脚功能信息。
包含:
•
管脚映射图
•
管脚分配表
•
管脚复用
•
管脚描述
•
Pad电路类型
APT MICROELECTRONICS
2-1
管脚配置
APT32F101
2.2 管脚定义图
VDD
1
24
VSS
23
PA0.0/T0OUT/SEG0/RSTB/CLO/TCH0
PA0.13/TXD0/SWCLK/T2OUT/SCL/ADC0
2 F_SCLK
PA0.12/RXD0/SWDIO/TCAP0/SDA/ADC1
3 F_SDAT
22
PA0.1/SCL/SEG1/XIN/SWCLK/TCH1
PA0.11/T0OUT/COM3/ADC_ETR/ADC2/TCH9
4
21
PA0.2/SDA/SEG2/XOUT/SWDIO/TCH2
PA0.10/TCAP1/COM2/ADC3/TCH10
5
20
PB0.0/T2OUT/TXD1/TCAP3/TCH3
PA0.9/T1OUT/COM1/TCLK2/ADC4/TCH11
6
19
PB0.1/T0OUT/RXD1/TCH4
PA0.8/TCAP2/COM0/CLO/T1OUT/ADC5/TCH12
7
18
PC0.0/T3OUT
PB0.3/T1OUT/TCLK2/T3OUT/ADC6/TCH13
8
17
PC0.1/T2OUT/RSTB
PB0.2/T3OUT/TCAP2/BUZZ/T0OUT/ADC7/TCH14
9
16
PC0.2/RXD1/T1OUT
PA0.7/BUZZ/SEG7/T2OUT/ADC8/TCH15/ECP0
10
15
PC0.3/TXD1/T0OUT
PA0.6/TCLK0/SEG6/TCAP1/ADC9/TCH8
11
14
PA0.3/TCAP0/SEG3/T3OUT/BUZZ/ADC12/TCH5
PA0.5/SEG5/SDA/RXD0/T1OUT/ADC10/TCH7
12
13
PA0.4/ADC_ETR/SEG4/SCL/TXD0/T2OUT/ADC11/TCH6
F_RST
APT32F101
24-SSOP
24-SOP
Figure 2-1 管脚定义图(24SOP/SSOP)
VDD
1
20
VSS
19
PA0.0/T0OUT/SEG0/RSTB/CLO/TCH0
PA0.13/TXD0/SWCLK/T2OUT/SCL/ADC0
2 F_SCLK
PA0.12/RXD0/SWDIO/TCAP0/SDA/ADC1
3 F_SDAT
18
PA0.1/SCL/SEG1/XIN/SWCLK/TCH1
PA0.11/T0OUT/COM3/ADC_ETR/ADC2/TCH9
4
17
PA0.2/SDA/SEG2/XOUT/SWDIO/TCH2
PA0.10/TCAP1/COM2/ADC3/TCH10
5
16
PB0.0/T2OUT/TXD1/TCAP3/TCH3
PA0.9/T1OUT/COM1/TCLK2/ADC4/TCH11
6
15
PB0.1/T0OUT/RXD1/TCH4
PA0.8/TCAP2/COM0/CLO/T1OUT/ADC5/TCH12
7
14
PA0.3/TCAP0/SEG3/T3OUT/BUZZ/ADC12/TCH5
PB0.3/T1OUT/TCLK2/T3OUT/ADC6/TCH13
8
13
PA0.4/ADC_ETR/SEG4/SCL/TXD0/T2OUT/ADC11/TCH6
PB0.2/T3OUT/TCAP2/BUZZ/T0OUT/ADC7/TCH14
9
12
PA0.5/SEG5/SDA/RXD0/T1OUT/ADC10/TCH7
10
11
PA0.6/TCLK0/SEG6/TCAP1/ADC9/TCH8
PA0.7/BUZZ/SEG7/T2OUT/ADC8/TCH15/ECP0
F_RST
APT32F101
20-SOP
Figure 2-2 管脚定义图(20SOP)
APT MICROELECTRONICS
2-2
管脚配置
APT32F101
PA0.3/TCAP0/SEG3/T3OUT/BUZZ/ADC12/TCH5
1
15
PB0.3/T1OUT/TCLK2/T3OUT/ADC6/TCH13
PB0.1/T0OUT/RXD1/TCH4
2
14
PA0.8/TCAP2/COM0/CLO/T1OUT/ADC5/TCH12
PB0.0/T2OUT/TXD1/TCAP3/TCH3
3
13
PA0.9/T1OUT/COM1/TCLK2/ADC4/TCH11
PA0.2/SDA/SEG2/XOUT/SWDIO/TCH2
4
12
PA0.10/TCAP1/COM2/ADC3/TCH10
PA0.1/SCL/SEG1/XIN/SWCLK/TCH1
5
11
PA0.11/T0OUT/COM3/ADC_ETR/ADC2/TCH9
9 F_SCLK
10 F_SDAT
PA0.13/TXD0/SWCLK/T2OUT/SCL/ADC0
PA0.12/RXD0/SWDIO/TCAP0/SDA/ADC1
8
7
VSS
VDD
6
PA0.0/T0OUT/SEG0/RSTB/CLO/TCH0
F_RST
APT32F101
20-QFN
Figure 2-3 管脚定义图(20QFN-1)
APT MICROELECTRONICS
2-3
管脚配置
APT32F101
PA0.3/TCAP0/SEG3/T3OUT/BUZZ/ADC12/TCH5
1
15
PB0.3/T1OUT/TCLK2/T3OUT/ADC6/TCH13
PB0.0/T2OUT/TXD1/TCAP3/TCH3
2
14
PA0.8/TCAP2/COM0/CLO/T1OUT/ADC5/TCH12
PA0.2/SDA/SEG2/XOUT/SWDIO/TCH2
3
13
PA0.9/T1OUT/COM1/TCLK2/ADC4/TCH11
PA0.1/SCL/SEG1/XIN/SWCLK/TCH1
4
12
PA0.10/TCAP1/COM2/ADC3/TCH10
PA0.0/T0OUT/SEG0/RSTB/CLO/TCH0
5
11
PA0.11/T0OUT/COM3/ADC_ETR/ADC2/TCH9
9 F_SCLK
10 F_SDAT
PA0.13/TXD0/SWCLK/T2OUT/SCL/ADC0
PA0.12/RXD0/SWDIO/TCAP0/SDA/ADC1
8
7
VSS
VDD
6
VREF
F_RST
APT32F101
20-QFN
Figure 2-4 管脚定义图(20QFN-2)
APT MICROELECTRONICS
2-4
管脚配置
APT32F101
VDD
1
16
VSS
15
PA0.0/T0OUT/SEG0/RSTB/CLO/TCH0
PA0.13/TXD0/SWCLK/T2OUT/SCL/ADC0
2 F_SCLK
PA0.12/RXD0/SWDIO/TCAP0/SDA/ADC1
3 F_SDAT
14
PA0.1/SCL/SEG1/XIN/SWCLK/TCH1
PA0.11/T0OUT/COM3/ADC_ETR/ADC2/TCH9
4
13
PA0.2/SDA/SEG2/XOUT/SWDIO/TCH2
PA0.10/TCAP1/COM2/ADC3/TCH10
5
12
PA0.3/TCAP0/SEG3/T3OUT/BUZZ/ADC12/TCH5
PA0.9/T1OUT/COM1/TCLK2/ADC4/TCH11
6
11
PA0.4/ADC_ETR/SEG4/SCL/TXD0/T2OUT/ADC11/TCH6
PA0.8/TCAP2/COM0/CLO/T1OUT/ADC5/TCH12
7
10
PA0.5/SEG5/SDA/RXD0/T1OUT/ADC10/TCH7
PA0.7/BUZZ/SEG7/T2OUT/ADC8/TCH15/ECP0
8
9
F_RST
APT32F101
16-SOP
PA0.6/TCLK0/SEG6/TCAP1/ADC9/TCH8
Figure 2-5 管脚定义图(16SOP)
APT MICROELECTRONICS
2-5
管脚配置
APT32F101
2.3 管脚功能分配
Table 2-1 描述了管脚功能的详细分配。
•
UP: 上拉使能; DN: 下拉使能
•
IO: 双向; I: 输入; O: 输出; P: 电源; G: 地; Z: 高阻
Table 2-1 管脚功能分配,依照管脚号排序
管脚号
管脚名称
默认功能 上拉/下拉 复位状态
24
20
16
AF0
AF1
AF2
AF3
AF4
AF5
AF6
AF7
EXI
1
1
1
VDD
-
-
-
-
-
-
-
-
2
2
2
PA0.13
TXD0
SWCLK
T2OUT
SCL
-
-
VDD
-
P
ADC0 EXI13 SWCLK(4)
UP
I
(4)
UP
I
3
3
3
PA0.12
RXD0
SWDIO
TCAP0
SDA
SDA
-
4
4
4
PA0.11
T0OUT
COM3
ADC_ETR
-
SCL
TCH9
ADC2 EXI11
IO
-
Z
5
5
5
PA0.10
TCAP1
COM2
-
-
-
TCH10
ADC3 EXI10
IO
-
Z
6
6
6
PA0.9
T1OUT
COM1
TCLK2
-
-
TCH11
ADC4
EXI9
IO
-
Z
7
7
7
PA0.8
TCAP2
COM0
CLO
T1OUT
-
TCH12
ADC5
EXI8
IO
-
Z
8
8
-
PB0.3
T1OUT
TCLK2
-
T3OUT
-
TCH13
ADC6
EXI3
IO
-
Z
9
9
-
PB0.2
T3OUT
TCAP2
BUZZ
T0OUT
-
TCH14
ADC7
EXI2
IO
-
Z
10
10
8
PA0.7
BUZZ
SEG7
-
T2OUT
-
ADC8
EXI7
IO
-
Z
11
11
9
PA0.6
TCLK0
SEG6
TCAP1
-
-
TCH8
ADC9
EXI6
IO
-
Z
12
12
10
PA0.5
-
SEG5
SDA
RXD0
T1OUT
TCH7
ADC10 EXI5
IO
-
Z
13
13
11
PA0.4
ADC_ETR
SEG4
SCL
TXD0
T2OUT
TCH6
ADC11 EXI4
IO
-
Z
14
14
12
PA0.3
TCAP0
SEG3
T3OUT
BUZZ
-
TCH5
ADC12 EXI3
IO
-
Z
15
-
-
PC0.3
TXD1
T0OUT
-
-
-
-
ADC13 EXI3
IO
DN
Z
16
-
-
PC0.2
RXD1
T1OUT
-
-
-
-
ADC14 EXI2
IO
DN
Z
UP
Z
TCH15
(ECP0)
ADC1 EXI12 SWDIO
(1)
17
-
-
PC0.1
-
T2OUT
-
-
-
-
-
EXI1
18
-
-
PC0.0
-
T3OUT
-
-
-
-
-
EXI0
IO
UP
Z
19
15
-
PB0.1
T0OUT
RXD1
-
-
-
TCH4
-
EXI1
IO
-
Z
20
16
-
PB0.0
T2OUT
TXD1
TCAP3
-
-
TCH3
-
EXI0
IO
21
17
13
PA0.2
SDA
SEG2
XOUT
SWDIO
-
TCH2
-
EXI2
IO
-
Z
(4)
-
Z
(4)
IO
22
18
14
PA0.1
SCL
SEG1
XIN
SWCLK
-
TCH1
-
EXI1
IO
-
Z
23
19
15
PA0.0
T0OUT
SEG0
-
CLO
-
TCH0
-
EXI0
IO(1)
-
Z
24
20
16
VSS
-
-
-
-
-
-
-
-
VSS
-
P
注意:
1) 外部复位功能和PA0.0/PC0.1管脚复用,可以使用User Option功能选择配置
2) F_SCLK, F_SDAT为外部闪存烧录工具接口信号
3) 每个IO管脚只要配置成数字IO功能,都可以使用EXI功能来触发中断
4) 总共有两组可选SWD接口,默认的SWD接口复用管脚可以使用User Option功能配置
APT MICROELECTRONICS
2-6
管脚配置
APT32F101
2.4 管脚复用
下表归纳了各种功能的管脚复用,方便用户在各种不同应用下使用各种不同的功能。
Table 2-2 复用功能概要
功能模块
TIMER0
TIMER1
TIMER2
TIMER3
TIMER Common
CNTA
功能管脚
管脚分配
T0OUT(O)
PA0.0(AF1)
PA0.11(AF1)
PB0.1(AF1)
PC0.3(AF2)
PB0.2(AF4)
T1OUT(O)
PA0.9(AF1)
PB0.3(AF1)
PC0.2(AF2)
PA0.8(AF4)
PA0.5(AF5)
T2OUT(O)
PB0.0(AF1)
PC0.1(AF2)
PA0.13(AF3)
PA0.7(AF4)
PA0.4(AF5)
T3OUT(O)
PB0.2(AF1)
PC0.0(AF2)
PA0.3(AF3)
PB0.3(AF4)
TCAP0(I)
PA0.3(AF1)
PA0.12(AF3)
TCAP1(I)
PA0.10(AF1)
PA0.6(AF3)
TCAP2(I)
PA0.8(AF1)
PB0.2(AF2)
TCAP3(I)
PB0.0(AF3)
TCLK2(I)
PB0.3(AF2)
PA0.9(AF3)
BUZZ(O)
PA0.7(AF1)
PB0.2(AF3)
PA0.3(AF4)
SCL(B)
PA0.1(AF1)
PA0.4(AF3)
PA0.13(AF4)
SDA(B)
PA0.2(AF1)
PA0.5(AF3)
PA0.12(AF4)
I2C
APT MICROELECTRONICS
2-7
管脚配置
APT32F101
TXD0(O)
PA0.13(AF1)
PA0.4(AF4)
RXD0(I)
PA0.12(AF1)
PA0.5(AF4)
TXD1(O)
PC0.3(AF1)
PB0.0(AF2)
RXD1(I)
PC0.2(AF1)
PB0.1(AF2)
ADC_ETR(I)
PA0.4(AF1)
PA0.11(AF3)
ADCx (A)
PA0.3~PA0.13, PB0.2~PB0.3, PC0.2~PC0.3 (AF7)
TCHx (A)
PA0.0~PA0.11, PB0.0~PB0.3 (AF6)
COM (O)
PA0.8~PA0.11 (AF2)
SEG (O)
PA0.0~PA0.7 (AF2)
CLO(O)
PA0.8(AF3)
PA0.0(AF4)
UART0
UART1
ADC
TOUCH
LED
SYSTEM
注意:
1)
对于输出功能,如果多个管脚都被配置成同一个功能,那么所有这些管脚都会输出相同的信号。
2)
对于输入功能,如果多个管脚都被配置成同一个功能,那么AF编号小的管脚有更高的优先权呢。例如,当PA0.12和PA0.5
都被配置成RXD0时,只有PA0.12(AF1)是RXD0,而PA0.5(AF4)的RXD0配置无效。
3)
功能管脚括号中的 I : 输入, O: 输出, B: 双向, A: 模拟。
APT MICROELECTRONICS
2-8
管脚配置
APT32F101
2.5 管脚功能说明
本段落描述了以下管脚的功能:
•
电源管脚
•
系统功能管脚
•
普通模块功能管脚
•
调试接口管脚
•
闪存烧录工具管脚
注意:
1) D: 数字; A: 模拟
2) I/O: 双向; I: 输入; O: 输出
3) P: 电源; G: 地
4) Z: 高阻
2.5.1 电源管脚
Table 2-3 电源管脚说明
模块
管脚名称
I/O
VDD
-
芯片电源
-
VSS
-
芯片地
-
电源
管脚说明
D/A
2.5.2 系统功能管脚
Table 2-4 系统功能管脚说明
模块
系统
管脚名称
I/O
管脚说明
RSTB
I
硬件复位输入,当PA0.0/PC0.1选择RESETB时,内部没有上拉电
阻,所以外部需要一个典型值为250K欧姆的上拉电阻。
D
XIN
I
外部主晶振的输入
A
XOUT
O
外部主晶振的输出
A
CLO
O
内部系统时钟输出
D
D/A
2.5.3 普通模块功能管脚
Table 2-5 普通模块功能管脚说明
模块
GPIO
TIMER
管脚名称
I/O
PA0.x
I/O
通用IO A
D
PB0.x
I/O
通用IO B
D
TCLKx
I
定时器的外部时钟输入
D
APT MICROELECTRONICS
管脚说明
2-9
D/A
管脚配置
APT32F101
TCAPx
I
定时器的外部捕捉输入
D
TxOUT
O
定时器的翻转输出或者PWM输出
D
BUZZ
O
计数器A的载波频率输出
D
SCL
I
I2C串行时钟
D
SDA
I/O
I2C串行数据
D
RXD
I
UART串行数据接收
D
TXD
O
UART串行数据发送
D
ADCx
I
ADC模拟输入通道
A
ADC_ETR
I
ADC外部启动触发输入
D
TCHx
I/O
触摸按键扫描通道
A
ECP0
I/O
触摸按键在外部电容模式中的外接电容管脚
A
CNTA
I2C
UART
ADC
TOUCH
2.5.4 调试接口管脚
Table 2-6 调试接口管脚说明
模块
SWD
管脚名称
I/O
SWCLK
I
SWDIO
I/O
管脚说明
D/A
串行时钟,内部上拉
D
串行数据输入/输出,内部上拉
D
2.5.5 闪存烧录工具管脚
Table 2-7 闪存烧录工具管脚说明
模块
FLASH
管脚名称
I/O
F_SCLK
I
串行时钟
D
F_SDAT
I/O
串行数据
D
F_RST
I
复位
D
APT MICROELECTRONICS
管脚说明
2-10
D/A
系统内存管理
APT32F101
3
系统存储空间
3.1 概述
本章节介绍了 APT32F101 系统存储空间管理。
本章包含内容如下:
•
存储地址表
•
特殊功能寄存器表,包含内容如下:
o
CPU特殊功能寄存器表
o
外围设备特殊功能寄存器表
3.2 默认存储地址表
Table 3-1
存储地址
Address
Memory
Reserved
Reserved
0xE000_0000 to 0xE00F_FFFF
CPU内部寄存器
Reserved
Reserved
0x4000_0000 to 0x400F_FFFF
特殊功能寄存器 (SFR)
Reserved
Reserved
0x2000_0000 to 0x2001_FFFF
SRAM
Reserved
Reserved
0x1000_0000 to 0x1001_FFFF
数据闪存 (Data Flash)
Reserved
Reserved
0x0000_0000 to 0x0007_FFFF
程序闪存 (Program Flash)
APTCHIP MICROELECTRONICS
3-1
系统内存管理
APT32F101
3.3 特殊功能寄存器表
特殊功能寄存器表有如下两种形式
•
CPU特殊功能寄存器表
•
外围设备特殊功能寄存器表
3.3.1 CPU特殊功能寄存器表
Table 3-2
CPU SFR 表
Address
Function Description
0xE000_EFA0 to 0xE00F_FFFF
Reserved
0xE000_EF90 to 0xE000_EF9F
电源管理控制器
0xE000_ED00 to 0xE000_EF8F
Reserved
0xE000_E100 to 0xE000_ECFF
VIC控制器
0xE000_E010 to oxE000_E0FF
系统定时器
0xE000_0000 to ox E000_E00F
Reserved
3.3.2 外围设备特殊功能寄存器表
Table 3-3
Peripheral
外围设备SFR表
Base Address
Function Description
0x400A_0000
I2C串行接口 (I2C)
0x4008_1000
通用异步收发器1 (UART1)
0x4008_0000
通用异步收发器0 (UART0)
CNTA
0x4007_0000
计数器 A (COUNTERA)
LED
0x4006_0000
LED显示控制器 (LED)
0x4005_3000
通用定时器/计数器 模块-3 (TIMER3)
0x4005_2000
通用定时器/计数器 模块-2 (TIMER2)
0x4005_1000
通用定时器/计数器 模块-1 (TIMER1)
0x4005_0000
通用定时器/计数器 模块-0 (TIMER0)
0x4004_1000
通用IO端口-B (GPIO B)
0x4004_0000
通用IO端口-A (GPIO A)
ADC
0x4003_0000
模数转换器 (ADC)
TKEY
0x4002_0000
电容式触摸按键传感器 (TOUCH)
0x4001_2000
系统控制器 (SYSCON)
0x4001_1000
闪存控制器 (IFC)
0x4001_0000
设备信息寄存器 (Device ID)
I2C
UART
TC
GPIO
SYSTEM
APTCHIP MICROELECTRONICS
3-2
中断
APT32F101
4
中断向量控制器(INTC)
4.1 概述
中断控制器是用于收集来自于多个中断源的中断请求,依据中断优先级对中断请求进行仲裁并提交给CPU的接口逻
辑。CPU支持可嵌套的抢占式中断响应处理。在CPU处理当前中断的过程中,如果有更高优先级的中断请求,CPU
将挂起当前中断而转入处理更高优先级的中断请求。当高优先级的中断处理完成以后,CPU将恢复被挂起的中断继
续执行。中断控制器只允许高优先级的中断请求抢占低优先级的中断,但不允许同级别或者更低优先级的中断抢
占。
4.1.1 特性
•
最大支持32个通道的中断源(IRQ[31:0])
•
每个中断源具有独立的可编程的中断优先级设置和中断使能控制
•
在中断处理过程中,支持优先级的动态调整
•
独立的中断唤醒和中断使能配置(中断唤醒类似于Event事件)
•
每个中断源具有独立的中断向量号
APTCHIP MICROELECTRONICS
4-1
中断
APT32F101
4.2 中断向量表
Table 4-1
System Interrupt Vectors
Number
Address
Vector
Interrupt Sources
32
0x0000_0080
CORET
33
0x0000_0084
SYSCON
34
0x0000_0088
IFC
Program flash controller interrupt
35
0x0000_008C
ADC
ADC Interrupt
36
0x0000_0090
GTC0
General Timer/Counter 0 Interrupt
37
0x0000_0094
GTC1
General Timer/Counter 1 Interrupt
38
0x0000_0098
GTC2
General Timer/Counter 2 Interrupt
39
0x0000_009C
EXI0
External interrupt 0
40
0x0000_00A0
EXI1
External interrupt 1
41
0x0000_00A4
GTC3
General Timer/Counter 3 Interrupt
42
0x0000_00A8
-
Reserved
43
0x0000_00AC
-
Reserved
44
0x0000_00B0
-
Reserved
45
0x0000_00B4
UART0
UART 0 interrupt
46
0x0000_00B8
UART1
UART 1 interrupt
47
0x0000_00BC
-
Reserved
48
0x0000_00C0
-
Reserved
49
0x0000_00C4
I2C
50
0x0000_00C8
-
Reserved
51
0x0000_00CC
-
Reserved
52
0x0000_00D0
-
Reserved
53
0x0000_00D4
EXI2
External Interrupt 2 ~ 3
54
0x0000_00D8
EXI3
External Interrupt 4 ~ 8
55
0x0000_00DC
EXI4
External Interrupt 9 ~ 13
56
0x0000_00E0
CNTA
COUNTER A interrupt
57
0x0000_00E4
TKEY
Touch Key interrupt (APT32F101 系列)
58
0x0000_00E8
-
59
0x0000_00EC
LED
60
0x0000_00F0
-
Reserved
61
0x0000_00F4
-
Reserved
62
0x0000_00F8
-
Reserved
63
0x0000_00FC
-
Reserved
CK802 CPU Core Timer
System controller interrupt
I2C interrupt
Reserved
LED interrupt
中断向量号,是请求在异常表的位置编号。0~30号向量是用作处理器内部识别的向量;31号向量是留给软件的,
用作指向系统描述符指针;从32号开始的向量是留给外设请求的。
APTCHIP MICROELECTRONICS
4-2
中断
APT32F101
4.3 工作原理
4.3.1 中断处理
矢量中断控制器(NVIC)协同其外围逻辑,用于中断的高效处理。控制器最大可支持 32 个中断源,每个中断
源拥有独立的软件可编程优先级。矢量中断控制器支持中断嵌套。当处理器正在处理一个中断请求的同时来了一个
更高优先级的中断请求,处理器将中断当前中断服务程序的处理,响应该更高优先级的中断请求。在更高优先级的
中断请求处理结束时,CPU 返回被打断的中断服务程序继续执行。NVIC 支持独立的软件可编程唤醒设置和中断使
能设置。
进入中断服务程序中,需要软件清除外设的中断有效信号,否则当中断退出时会重新请求 CPU。另外,矢量中
断控制器支持软件中断,软件可以通过设置中断设置等待有效寄存器(VIC_ISPR)置高相应的中断等待状态位,
向 CPU 发送中断请求。
当处理器响应中断请求后,矢量中断控制器会自动清除等待状态位,软件也可以通过设置中断清除等待寄存器
(VIC_ICPR)清除正在等待中的中断。如果外设的中断请求持续有效,将无法通过 VIC_ICPR 的方式清除等待的
中断。
中断的处理过程可以分以下几个步骤进行:
外设产生中断请求信号,置高相应 IRQ 被 NVIC 捕捉到。
VIC 根据 IRQ 申请,设置相应的 Pending 状态位。
经过优先级仲裁后向 CPU 发起中断请求。
CPU 在当期指令执行完成同时响应中断,返回中断响应给 VIC,然后更新 EPSR 和 EPC,更新 PSR 中的
VEC 为当前请求的中断向量号,清除 PSR.EE,最后取得中断程序入口地址;VIC 根据 CPU 返回的中断
响应信号清除 Pending 状态位和设置 Active 状态位。
- 进行中断现场保存(保存中断控制寄存器器现场 EPSR 和 EPC,打开 PSR.EE 和 PSR.IE 使能中断嵌套,
然后保存中断通用寄存器现场)。
- CPU 开始处理中断程序,程序中需清除中断源有效信号,否则中断退出后会重入该中断。
- 中断现场恢复和中断退出(恢复中断通用寄存器,然后回复中断控制寄存器,退出 ISR。VIC 接收到 CPU
的退出信号,清除 Active 状态位)。
-
中断现场的保存可以通过在中断服务程序的开头执行 NIE 和 IPUSH 指令来完成;中断现场的恢复和退出可以
通过在中都服务程序结尾执行 IPOP 和 NIR 指令来完成。
4.3.2 中断优先级和中断抢占
中断的优先级可以通过VIC_IPR0 ~3这四个寄存器来设置。每个VIC_IPR寄存器对应四个中断源的优先级设
置。
中断的优先级共分为4级设置,通过VIC_IPR寄存器的PRI_x中的最高两位来设置。数值越小,代表的优先级越
高,所以设置为‘0’时代表最高优先级。如果优先级号相同,则根据中断源号来决定优先的顺序,号码越小,优先级
越高。例如,IRQ0 和 IRQ1的优先级号设置为相同,当IRQ0和IRQ1同时提交中断,由于IRQ0的中断源号小于
IRQ1,因此IRQ0先得到CPU的响应。
将所有中断的优先级设置为统一的优先级时,可以禁止中断的抢占响应。也可以通过设置VIC_IPTR寄存器来定
义可以发起中断抢占的优先级临界值。当设置了VIC_IPTR的THDEN,等待中断处理的中断请求优先级必须高于
VIC_IPTR的PRITHD中所设置的优先级阈值,才能发起中断抢占请求。
中断抢占的优先级条件可分为两种:
APTCHIP MICROELECTRONICS
4-3
中断
APT32F101
-
当中断优先级阈值未使能时,中断抢占的优先级必须高于当前 CPU 正在处理的中断的优先级;同级优先
级不能进行抢占。
当中断优先级阈值使能时,中断抢占的优先级不仅要高于当前 CPU 正在处理的中断优先级,而且要高于
中断优先级阈值寄存器设置的阈值。VIC 支持中断优先级的动态调整,当被嵌套的中断优先级需要调高或
者调低时,在设置中断优先级设置寄存器的同时设置中断优先级阈值寄存器。
下图给出了中断抢占的示例。中断优先级设置为:IRQ0IRQ3。CPU 首先响应了 IRQ0,在 IRQ0 中断服务程序执行的过程中,来了更高优先级的
IRQ1,因此 IRQ0 被抢占,CPU 开始执行 IRQ1 的中断服务程序。同样,IRQ2 对 IRQ1 进行了抢占,并设置了
中断优先级阈值寄存器(VIC_IPTR.VECTHD = IRQ0,IPTR.PRITHD = 0,IPTR.THDEN = 1)。当 IRQ3 到来
时,尽管优先级高于 IRQ2,但没有高于 IPTR,因此 IRQ3 无法抢占 IRQ2。IRQ3 在 IRQ0 的中断服务程序执行
结束,清除了 IPTR.THDEN 后,才得到 CPU 响应。
PRIORITY=3
PRIORITY=2
PRIORITY=1
PRIORITY=0
IRQ0 ISR
IRQ1 ISR
IRQ2 ISR
IRQ3 ISR
NIE
IPUSH
…
IPOP
NIR
NIE
IPUSH
…
IPOP
NIR
NIE
IPUSH
NIE
IPUSH
…
IPOP
NIR
main
routine
PRITHD=0
IPOP
NIR
由于设置了抢占阈值VECTHD=IRQ0,所
以当IRQ0返回以后,抢占阈值使能位将被
自动清除,IRQ3以最高优先级优先获得
CPU响应
由于设置了抢占阈值为‘0’,
所以IRQ3不能再抢占IRQ2
Figure 4-1
中断嵌套优先级示意图
4.3.3 中断响应时间和中断嵌套条件
一般中断在指令的边界上被确认,如下图所示。
CPU CLK
IRQ[31:0]
外设发起中断请求
VIC_INT
VIC_VEC[7:0]
仲 裁 后 , 输 出 相 应 中 断C号P U给
VIC
CPU
根 据VIC提 供 的 向 量 号 提 取 中 断 向 量 。
Current PC
734
9C
532
中断入口地址
0x532:
0x534:
在等待当前指令
0x734)
(
执行结束后,
534
Figure 4-2 中断响应过程
APTCHIP MICROELECTRONICS
536
中 断 程 序 的 第 一 条 指NIE
令:
中 断 程 序 的 第 二 条 指IPUSH
令:
4-4
中 断 服 务 程 序 中 , 软 件 清 除 外 pendi
设 中 ng位
断
650
中断
APT32F101
当中断请求信号被置高,经过CPU的时钟采样以后触发VIC中断处理。VIC经过仲裁处理以后,向CPU发送相应
的中断向量号,CPU内部收到中断后,根据向量号取得中断向量,进入中断服务程序。此过程需耗费时间为中断请
求信号的同步时间,VIC的处理时间,CPU等待当前指令的执行完成的时间,以及CPU获取中断向量的时间总和。
中断响应时间不是具体固定的,而是和当前执行的指令所消耗的时间相关,如果中断的响应因为等待长指令周
期的指令而延后,需要加速中断的响应时间,可以通过设置PSR.IC位,打断当前执行的指令。LDM、STM、
PUSH、POP、IPUSH、IPOP等多周期指令可以被中断而不等它们完成,从而缩短中断响应延时。多周期指令NIE
不可响应中断,NIR只在指令执行的末尾响应中断,不能被PSR(IC)位打断。
中断抢占在满足优先级的条件下,还需要判断当前中断响应的阶段。和中断嵌套相关的主要分为以下几个阶
段:1)EPSR、EPC、PSR的更新和中断入口地址的读取;2)NIE指令;3)IPUSH指令;4)中断服务;5)
IPOP指令;6)NIR指令。
为保证中断嵌套现场的保护和恢复,CPU在以下阶段不能被中断打断:
-
中断响应之后更新 EPSR、EPC、PSR 和获取中断入口地址的过程中。
NIE 指令执行过程中。
PSR.IC 位被关闭,IPUSH 和 IPOP 指令执行过程中。
NIR 指令执行过程中。
CPU在以下阶段可以安全的响应新的中断:
-
正常程序的执行过程中,在中断响应之前。
IPUSH、IPOP 指令执行完成。
PSR.IC 位被打开,IPUSH、IPOP 指令执行过程中。
NIR 指令执行完成。
中断服务处理过程中。
下图给出了IRQ0/IRQ1/IRQ2/IRQ3中断的嵌套过程。
Figure 4-3 中断嵌套条件示例
APTCHIP MICROELECTRONICS
4-5
中断
APT32F101
在IRQ0被CPU响应后,产生了更高优先级的IRQ1,当PSR.IC打开时,在执行到IPUSH指令时响应IRQ1。
IRQ2在IRQ1处理中断事务时产生,因此可立即被CPU响应。IRQ3在IRQ2执行NIR指令时产生,在NIR指令完成时
响应IRQ3。当IRQ3处理完,退出中断服务程序时,直接返回到IRQ1被IRQ2打断的点。当IRQ1 返回IRQ0时,需要
重新执行IPUSH指令。
4.3.4 中断唤醒
当CPU处于低功耗模式(DOZE、STOP)时,外设产生的中断可以将CPU从低功耗模式唤醒。如果一个中断的
低功耗唤醒功能已经使能,而且该中断处于等待状态,VIC将产生低功耗唤醒请求。如果一个中断的低功耗唤醒功
能未使能,即使该中断处于等待状态,VIC也不会产生低功耗唤醒请求。
需要注意,中断的使能(VIC_ISER)和中断的唤醒使能(VIC_IWER)分别控制中断的事务处理和唤醒功能。
当两者都设置时,一个等待的中断请求既会产生中断事务处理请求,又会产生低功耗唤醒请求;当只有其中一个使
能时,只激活对应设置的功能;两者都没有使能时,即使中断处于等待状态,VIC也不会产生任何请求。
.
4.3.5 中断操作步骤
中断的配置基本分为两个级别,一个处于外设内部的配置,另外一个处于VIC内部的配置。要使能某个特定外设
的中断,首先需要配置该外设内部的中断控制寄存器,使能外设的特定中断;再配置VIC内部的中断控制,首先设
置VIC_IPR0~7,设置中断优先级,然后设置IVC_ISER,使能该外设所对应的中断号。CPU具有全局中断使能控
制,在CPU响应VIC中断请求之前,必须使能PSR.IE/EE,否则CPU无法响应中断。当某个特定外设的中断发生以
后,外设内部的中断pending位首先会置位,随之触发VIC内部相对应的中断源pending位置位。外设内部的中断
pending位需要程序在软件中清除,而VIC中的pending位在处理器响应中断请求后,会自动清除。也可以通过设置
中断清除等待寄存器(VIC_ICPR)强制清除还没有被处理器响应的中断请求。
VIC可以通过VIC_ISPR,软件触发相应的中断源。VIC为每个中断源提供两种状态查询,分别为:
-
Pending:查询是否存在等待 CPU 处理的中断请求。
0:表示该中断源没有等待的中断请求;
1:表示该中断源有等待的中断请求。
-
Active:查询 CPU 是否响应该中断源但是还没有处理完成该中断请求。
0:表示该中断源没有被CPU响应;
1:表示该中断源已经被CPU响应,但是还没有处理完成。
VIC_ISPR
VIC_ICPR
外设
CPU
VIC
VIC_ISER
中断请求
中断请求
中断请求
IE1
DFF
VIC_IRR
DFF
IE2
VIC_IRTR
DFF
PSR.IE
PSR.EE
DFF
CPU
CORE
IE3
DFF
VIC
Arbiter
DFF
pending
Figure 4-4 中断配置结构示意图
APTCHIP MICROELECTRONICS
4-6
请求中断号
中断
APT32F101
启动
中断请求标志首先在外设内部的Pending
寄存器(RISR)中置位
否
中断请求标志=1?
是
否
中断屏蔽位(IMCR)打开,使能中断
中断屏蔽标志=1?
是
中断请求被挂起
否
中断源使能(IESR)打开,使能中断
VIC中断源使能=1?
是
VIC_IPR/VIC_IPTH设置,
如果有高优先级请求正在处理,
则挂起当前请求,否则可以抢占
正在处理的请求(根据VIC_IPTH)
是否有高优先级
请求正在处理?
中断请求被挂起
是
否
如果有更高优先级请求同时发生,
则当前请求可能被抢占
更高优先级
请求同时发生?
中断请求被挂起
是
否
PSR.IE/EE=1?
中断请求被挂起
否
是
中断服务
Figure 4-5 中断请求处理流程
APTCHIP MICROELECTRONICS
4-7
中断请求被挂起
中断
APT32F101
4.4 寄存器说明
4.4.1 寄存器表
•
Base Address: 0xE000_E000
Register
Offset
Description
Reset Value
VIC_ISER
0x100
Interrupt Set Enable Register
RSVD
0x104
0x13F
Reserved
VIC_IWER
0x140
Interrupt Wakeup Enable Register
0x0000_0000
RSVD
0x144
0x17F
Reserved
0x0000_0000
VIC_ICER
0x180
Interrupt Clear Enable Register
0x0000_0000
RSVD
0x184
0x1BF
Reserved
0x0000_0000
VIC_IWDR
0x1C0
Interrupt Wakeup Disable Register
0x0000_0000
RSVD
0x1C4
0x1FF
Reserved
VIC_ISPR
0x200
Interrupt Set Pending Register
RSVD
0x204
0x27F
Reserved
0x0000_0000
VIC_ICPR
0x280
Interrupt Clear Pending Register
0x0000_0000
RSVD
0x284
0x2FF
Reserved
0x0000_0000
VIC_IABR
0x300
Interrupt Active Status Register
0x0000_0000
RSVD
0x304
0x3FF
Reserved
VIC_IPR0
0x400
Interrupt Priority Register 0
VIC_IPR1
0x404
Interrupt Priority Register 1
VIC_IPR2
0x408
Interrupt Priority Register 2
VIC_IPR3
0x40C
Interrupt Priority Register 3
VIC_IPR4
0x410
Interrupt Priority Register 4
VIC_IPR5
0x414
Interrupt Priority Register 5
VIC_IPR6
0x418
Interrupt Priority Register 6
APTCHIP MICROELECTRONICS
-
4-8
中断
APT32F101
VIC_IPR7
0x41C
Interrupt Priority Register 7
RSVD
0x420
0xBFF
Reserved
VIC_ISR
0xC00
Interrupt Status Register
VIC_IPTR
0xC04
Interrupt Priority Threshold Register
RSVD
0xC08
0xCFF
Reserved
NOTE:
APTCHIP MICROELECTRONICS
4-9
中断
APT32F101
4.4.2 VIC_ISER (中断设置使能寄存器)
•
Address = Base Address + 0x0100, Reset Value = 0x0000_0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
SETENA0
1
SETENA1
2
SETENA2
3
SETENA3
4
SETENA4
5
SETENA5
6
SETENA6
7
SETENA7
8
SETENA8
9
SETENA9
10
SETENA10
11
SETENA11
12
SETENA12
13
SETENA13
14
SETENA14
15
SETENA15
16
SETENA16
17
SETENA17
18
SETENA18
19
SETENA19
20
SETENA20
21
SETENA21
22
SETENA22
23
SETENA23
24
SETENA24
25
SETENA25
26
SETENA26
27
SETENA27
28
SETENA28
29
SETENA29
30
SETENA30
SETENA31
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
RW
Description
Reset Value
中断向量号使能
SETENAx
[31:0]
RW
读操作:
0: 对应中断未使能
1: 对应中断已使能
写操作:
0: 无效
1: 使能对应中断
APTCHIP MICROELECTRONICS
4-10
0x0
中断
APT32F101
4.4.3 VIC_IWER (中断低功耗唤醒使能寄存器)
•
Address = Base Address + 0x0140, Reset Value = 0x0000_0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
SETENA0
1
SETENA1
2
SETENA2
3
SETENA3
4
SETENA4
5
SETENA5
6
SETENA6
7
SETENA7
8
SETENA8
9
SETENA9
10
SETENA10
11
SETENA11
12
SETENA12
13
SETENA13
14
SETENA14
15
SETENA15
16
SETENA16
17
SETENA17
18
SETENA18
19
SETENA19
20
SETENA20
21
SETENA21
22
SETENA22
23
SETENA23
24
SETENA24
25
SETENA25
26
SETENA26
27
SETENA27
28
SETENA28
29
SETENA29
30
SETENA30
SETENA31
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
RW
Description
Reset Value
设置中断低功耗唤醒功能
SETENAx
[31:0]
RW
读操作:
0: 对应中断的低功耗唤醒未使能
1: 对应中断的低功耗唤醒已使能
写操作:
0: 无效
1: 使能对应中断的低功耗唤醒功能
APTCHIP MICROELECTRONICS
4-11
0x0
中断
APT32F101
4.4.4 VIC_ICER (中断使能清除寄存器)
•
Address = Base Address + 0x0180, Reset Value = 0x0000_0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CLRENA0
1
CLRENA1
2
CLRENA2
3
CLRENA3
4
CLRENA4
5
CLRENA5
6
CLRENA6
7
CLRENA7
8
CLRENA8
9
CLRENA9
10
CLRENA10
11
CLRENA11
12
CLRENA12
13
CLRENA13
14
CLRENA14
15
CLRENA15
16
CLRENA16
17
CLRENA17
18
CLRENA18
19
CLRENA19
20
CLRENA20
21
CLRENA21
22
CLRENA22
23
CLRENA23
24
CLRENA24
25
CLRENA25
26
CLRENA26
27
CLRENA27
28
CLRENA28
29
CLRENA29
30
CLRENA30
CLRENA31
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
RW
Description
Reset Value
清除中断使能
CLRENAx
[31:0]
RW
读操作:
0: 对应中断未使能
1: 对应中断已使能
写操作:
0: 无效
1: 清除对应中断的使能
APTCHIP MICROELECTRONICS
4-12
0x0
中断
APT32F101
4.4.5 VIC_IWDR (中断低功耗唤醒清除寄存器)
•
Address = Base Address + 0x01C0, Reset Value = 0x0000_0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CLRENA0
1
CLRENA1
2
CLRENA2
3
CLRENA3
4
CLRENA4
5
CLRENA5
6
CLRENA6
7
CLRENA7
8
CLRENA8
9
CLRENA9
10
CLRENA10
11
CLRENA11
12
CLRENA12
13
CLRENA13
14
CLRENA14
15
CLRENA15
16
CLRENA16
17
CLRENA17
18
CLRENA18
19
CLRENA19
20
CLRENA20
21
CLRENA21
22
CLRENA22
23
CLRENA23
24
CLRENA24
25
CLRENA25
26
CLRENA26
27
CLRENA27
28
CLRENA28
29
CLRENA29
30
CLRENA30
CLRENA31
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
RW
Description
Reset Value
清除中断低功耗唤醒功能
CLRENAx
[31:0]
RW
读操作:
0: 对应中断的低功耗唤醒未使能
1: 对应中断的低功耗唤醒已使能
写操作:
0: 无效
1: 清除对应中断的低功耗唤醒功能
APTCHIP MICROELECTRONICS
4-13
0x0
中断
APT32F101
4.4.6 VIC_ISPR (中断等待设置寄存器)
•
Address = Base Address + 0x0200, Reset Value = 0x0000_0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
SETPEND0
1
SETPEND1
2
SETPEND2
3
SETPEND3
4
SETPEND4
5
SETPEND5
6
SETPEND6
7
SETPEND7
8
SETPEND8
9
SETPEND9
10
SETPEND10
11
SETPEND11
12
SETPEND12
13
SETPEND13
14
SETPEND14
15
SETPEND15
16
SETPEND16
17
SETPEND17
18
SETPEND18
19
SETPEND19
20
SETPEND20
21
SETPEND21
22
SETPEND22
23
SETPEND23
24
SETPEND24
25
SETPEND25
26
SETPEND26
27
SETPEND27
28
SETPEND28
29
SETPEND29
30
SETPEND30
SETPEND31
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
RW
Description
Reset Value
更改中断的等待状态
SETPENDx
[31:0]
RW
读操作:
0: 对应中断未处于等待状态
1: 对应中断已处于等待状态
写操作:
0: 无效
1: 改变对应中断为等待状态
APTCHIP MICROELECTRONICS
4-14
0x0
中断
APT32F101
4.4.7 VIC_ICPR (中断等待设置寄存器)
•
Address = Base Address + 0x0280, Reset Value = 0x0000_0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CLRPEND0
1
CLRPEND1
2
CLRPEND2
3
CLRPEND3
4
CLRPEND4
5
CLRPEND5
6
CLRPEND6
7
CLRPEND7
8
CLRPEND8
9
CLRPEND9
10
CLRPEND10
11
CLRPEND11
12
CLRPEND12
13
CLRPEND13
14
CLRPEND14
15
CLRPEND15
16
CLRPEND16
17
CLRPEND17
18
CLRPEND18
19
CLRPEND19
20
CLRPEND20
21
CLRPEND21
22
CLRPEND22
23
CLRPEND23
24
CLRPEND24
25
CLRPEND25
26
CLRPEND26
27
CLRPEND27
28
CLRPEND28
29
CLRPEND29
30
CLRPEND30
CLRPEND31
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
RW
Description
Reset Value
清除中断的等待状态
CLRPENDx
[31:0]
RW
读操作:
0: 对应中断未处于等待状态
1: 对应中断已处于等待状态
写操作:
0: 无效
1: 清除对应中断的等待状态
APTCHIP MICROELECTRONICS
4-15
0x0
中断
APT32F101
4.4.8 VIC_IABR (中断响应状态寄存器)
•
Address = Base Address + 0x0300, Reset Value = 0x0000_0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
ACTIVE0
1
ACTIVE1
2
ACTIVE2
3
ACTIVE3
4
ACTIVE4
5
ACTIVE5
6
ACTIVE6
7
ACTIVE7
8
ACTIVE8
9
ACTIVE9
10
ACTIVE10
11
ACTIVE11
12
ACTIVE12
13
ACTIVE13
14
ACTIVE14
15
ACTIVE15
16
ACTIVE16
17
ACTIVE17
18
ACTIVE18
19
ACTIVE19
20
ACTIVE20
21
ACTIVE21
22
ACTIVE22
23
ACTIVE23
24
ACTIVE24
25
ACTIVE25
26
ACTIVE26
27
ACTIVE27
28
ACTIVE28
29
ACTIVE29
30
ACTIVE30
ACTIVE31
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
RW
Description
Reset Value
指示对应的中断源是否已经被CPU响应但还没有处理完
成。
ACTIVEx
[31:0]
RW
读操作:
0: 没有被CPU响应
1: 已经被CPU响应,但还没有处理完
写操作:
0: 清除当前Active状态
1: 不允许(软件写1可能导致不可预期的错误)
APTCHIP MICROELECTRONICS
4-16
0x0
中断
APT32F101
4.4.9 VIC_IPR0 (中断优先级设置寄存器0)
•
Address = Base Address + 0x0400, Reset Value = 0x0000_0000
0
0
0
24
23
0
0
0
0
21
20
19
0
0
0
PRI_2
22
0
18
17
16
15
0
0
0
14
13
12
11
0
0
0
0
0
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
2
1
0
0
0
RSVD
0
25
PRI_0
0
26
RSVD
27
PRI_1
28
RSVD
29
RSVD
30
PRI_3
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
PRI_x
[7:6]
[15:14]
[23:22]
[31:30]
RW
Description
Reset Value
设置对应中断号的优先级,数值越小,优先级越高
APTCHIP MICROELECTRONICS
RW
PRI_0:
PRI_1:
PRI_2:
PRI_3:
中断号0的优先级设置
中断号1的优先级设置
中断号2的优先级设置
中断号3的优先级设置
4-17
0x0
中断
APT32F101
4.4.10 VIC_IPR1 (中断优先级设置寄存器1)
•
Address = Base Address + 0x0404, Reset Value = 0x0000_0000
0
0
0
24
23
0
0
0
0
21
20
19
0
0
0
PRI_6
22
0
18
17
16
15
0
0
0
14
13
12
11
0
0
0
0
0
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
2
1
0
0
0
RSVD
0
25
PRI_4
0
26
RSVD
27
PRI_5
28
RSVD
29
RSVD
30
PRI_7
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
PRI_x
[7:6]
[15:14]
[23:22]
[31:30]
RW
Description
Reset Value
设置对应中断号的优先级,数值越小,优先级越高
APTCHIP MICROELECTRONICS
RW
PRI_4:
PRI_5:
PRI_6:
PRI_7:
中断号4的优先级设置
中断号5的优先级设置
中断号6的优先级设置
中断号7的优先级设置
4-18
0x0
中断
APT32F101
4.4.11 VIC_IPR2 (中断优先级设置寄存器2)
•
Address = Base Address + 0x0408, Reset Value = 0x0000_0000
0
0
0
24
23
0
0
0
RSVD
0
22
21
20
19
0
0
0
0
18
17
16
15
0
0
0
0
14
13
12
11
0
0
0
0
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
2
1
0
0
0
RSVD
0
25
PRI_8
0
26
RSVD
27
PRI_9
28
RSVD
29
PRI_10
30
PRI_11
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
PRI_x
[7:6]
[15:14]
[23:22]
[31:30]
RW
Description
Reset Value
设置对应中断号的优先级,数值越小,优先级越高
APTCHIP MICROELECTRONICS
RW
PRI_8: 中断号8的优先级设置
PRI_9: 中断号9的优先级设置
PRI_10: 中断号10的优先级设置
PRI_11: 中断号11的优先级设置
4-19
0x0
中断
APT32F101
4.4.12 VIC_IPR3 (中断优先级设置寄存器3)
•
Address = Base Address + 0x040C, Reset Value = 0x0000_0000
0
0
0
24
23
0
0
0
RSVD
0
22
21
20
19
0
0
0
0
18
17
16
15
0
0
0
0
14
13
12
11
0
0
0
0
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
2
1
0
0
0
RSVD
0
25
PRI_12
0
26
RSVD
27
PRI_13
28
RSVD
29
PRI_14
30
PRI_15
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
PRI_x
[7:6]
[15:14]
[23:22]
[31:30]
RW
Description
Reset Value
设置对应中断号的优先级,数值越小,优先级越高
APTCHIP MICROELECTRONICS
RW
PRI_12:
PRI_13:
PRI_14:
PRI_15:
中断号12的优先级设置
中断号13的优先级设置
中断号14的优先级设置
中断号15的优先级设置
4-20
0x0
中断
APT32F101
4.4.13 VIC_IPR4 (中断优先级设置寄存器4)
•
Address = Base Address + 0x0410, Reset Value = 0x0000_0000
0
0
0
24
23
0
0
0
RSVD
0
22
21
20
19
0
0
0
0
18
17
16
15
0
0
0
0
14
13
12
11
0
0
0
0
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
2
1
0
0
0
RSVD
0
25
PRI_16
0
26
RSVD
27
PRI_17
28
RSVD
29
PRI_18
30
PRI_19
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
PRI_x
[7:6]
[15:14]
[23:22]
[31:30]
RW
Description
Reset Value
设置对应中断号的优先级,数值越小,优先级越高
APTCHIP MICROELECTRONICS
RW
PRI_16:
PRI_17:
PRI_18:
PRI_19:
中断号16的优先级设置
中断号17的优先级设置
中断号18的优先级设置
中断号19的优先级设置
4-21
0x0
中断
APT32F101
4.4.14 VIC_IPR5 (中断优先级设置寄存器5)
•
Address = Base Address + 0x0414, Reset Value = 0x0000_0000
0
0
0
24
23
0
0
0
RSVD
0
22
21
20
19
0
0
0
0
18
17
16
15
0
0
0
0
14
13
12
11
0
0
0
0
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
2
1
0
0
0
RSVD
0
25
PRI_20
0
26
RSVD
27
PRI_21
28
RSVD
29
PRI_22
30
PRI_23
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
PRI_x
[7:6]
[15:14]
[23:22]
[31:30]
RW
Description
Reset Value
设置对应中断号的优先级,数值越小,优先级越高
APTCHIP MICROELECTRONICS
RW
PRI_20:
PRI_21:
PRI_22:
PRI_23:
中断号20的优先级设置
中断号21的优先级设置
中断号22的优先级设置
中断号23的优先级设置
4-22
0x0
中断
APT32F101
4.4.15 VIC_IPR6 (中断优先级设置寄存器6)
•
Address = Base Address + 0x0418, Reset Value = 0x0000_0000
0
0
0
24
23
0
0
0
RSVD
0
22
21
20
19
0
0
0
0
18
17
16
15
0
0
0
0
14
13
12
11
0
0
0
0
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
2
1
0
0
0
RSVD
0
25
PRI_24
0
26
RSVD
27
PRI_25
28
RSVD
29
PRI_26
30
PRI_27
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
PRI_x
[7:6]
[15:14]
[23:22]
[31:30]
RW
Description
Reset Value
设置对应中断号的优先级,数值越小,优先级越高
APTCHIP MICROELECTRONICS
RW
PRI_24:
PRI_25:
PRI_26:
PRI_27:
中断号24的优先级设置
中断号25的优先级设置
中断号26的优先级设置
中断号27的优先级设置
4-23
0x0
中断
APT32F101
4.4.16 VIC_IPR7 (中断优先级设置寄存器7)
•
Address = Base Address + 0x041C, Reset Value = 0x0000_0000
0
0
0
24
23
0
0
0
RSVD
0
22
21
20
19
0
0
0
0
18
17
16
15
0
0
0
0
14
13
12
11
0
0
0
0
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
2
1
0
0
0
RSVD
0
25
PRI_28
0
26
RSVD
27
PRI_29
28
RSVD
29
PRI_30
30
PRI_31
31
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Name
Bit
PRI_x
[7:6]
[15:14]
[23:22]
[31:30]
RW
Description
Reset Value
设置对应中断号的优先级,数值越小,优先级越高
APTCHIP MICROELECTRONICS
RW
PRI_28:
PRI_29:
PRI_30:
PRI_31:
中断号28的优先级设置
中断号29的优先级设置
中断号30的优先级设置
中断号31的优先级设置
4-24
0x0
中断
APT32F101
4.4.17 VIC_ISR (中断状态寄存器)
•
Address = Base Address + 0x0C00, Reset Value = 0x0000_0000
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
15
14
13
12
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
R
R
3
2
1
0
0
0
0
0
VECACTIVE
28
RSVD
29
VECPENDING
30
RSVD
31
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
Name
Bit
RW
Description
Reset Value
VECACTIVE
[8:0]
RW
指示当前CPU正在处理的中断向量号
0x0
VECPENDING
[29:12]
RW
指示当前等待的最高优先级中断向量号
0x0
APTCHIP MICROELECTRONICS
4-25
中断
APT32F101
4.4.18 VIC_IPTR (中断优先级阈值寄存器)
•
Address = Base Address + 0x0C04, Reset Value = 0x0000_0000
28
27
26
25
24
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
RSVD
23
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
W
Name
Bit
RW
PRITHD
[7:0]
RW
VECTHD
[16:8]
RW
THDEN
[31]
RW
3
0
1
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
Description
Reset Value
中断抢占的优先级阈值设置
仅最高两位[7:6]有效,剩下[5:0]保留。
优先级阈值对应的中断向量号。当VIC发现CPU从
VECTHD所设置的中断服务程序退出时,会硬件清除中
断优先级阈值有效位(THDEN)
0x0
0x0
中断优先级阈值有效位
APTCHIP MICROELECTRONICS
2
PRITHD
29
VECTHD
30
THDEN
31
0: 中断抢占不需要高于优先级阈值
1: 中断抢占需要优先级高于阈值
4-26
0x0
系统定时器
APT32F101
5
系统定时器 (CORET)
5.1 概述
系统定时器是 CK802 CPU一个内部模块,它主要用于计时。系统定时器提供了一个简单易用的 24 位循环递减的
计数器,当系统计时器使能时,计数器开始工作。当计数器递减到 0 时,会向中断控制器发起中断请求。
APT MICROELECTRONICS
5-1
系统定时器
APT32F101
5.2 功能描述
5.2.1 模块框图
STCLK CPUCLK
Core Timer
CLKSOURCE
(CORET.CSR[2])
CVR
(mapped from cnt)
cnt
CSR
Counter
Bus
Bus
Interface
RVR
Interrupt
Generator
CALIB
CoreT Registers
Figure 5-1 CORET模块框图
APT MICROELECTRONICS
5-2
CORET Int
系统定时器
APT32F101
5.2.2 功能说明
5.2.2.1 定时器的时钟源
CORET 定时器有两个可选时钟源:
- CPU 时钟 (CORECLK)
- 系统时钟的 8 分频 STCLK
时钟源的选择通过 CSR 寄存器的第 2 位 CLKSOURCE 来实现。
时钟的使能/禁止和各种配置请参考 SYSCON 章节。
5.2.2.2 定时器的工作原理
CORET定时器是CK802 CPU提供的一个简单易用的24位循环递减的计数器,包含在CPU Core内部,产生的中断
具有最高的优先级。CORET定时器可以用作任何简单的计时,或者可以作为操作系统的SYSTICK定时器。
当系统定时器使能 (CSR[0]=1) 时,计数器开始工作。计数器从预设的值 (RVR寄存器) 开始递减,当计数器递减
到0时,如果使能了CORET中断 (CSR[1]=1) ,计数器会向中断控制器发起中断请求。
APT MICROELECTRONICS
5-3
系统定时器
APT32F101
5.3 寄存器说明
5.3.1 寄存器表
Base Address: 0xE000_E000
Offset Address
Name
Description
R/W
Reset State
0x010
CORET_CSR
控制寄存器
R/W
0x00000000
0x014
CORET_RVR
回填值寄存器
R/W
0x00000000
0x018
CORET_CVR
当前值寄存器
R/W
0x00000000
APT MICROELECTRONICS
5-4
系统定时器
APT32F101
5.3.1.1 CORET_CSR (控制寄存器)
•
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Name
Bit
8
7
6
5
4
3
2
ENABLE
27
TICKINT
28
15
14
13
12
11
10
9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
R
W
R
W
RSVD
29
COUNTFLAG
30
RSVD
31
CLKSOURCE
Address = Base Address + 0x0010
Type
Description
[16]
R
1 : 计数器已经计数到0
在计数器的值由1变到0时,COUNTFLAG会被置位。
0
读CSR寄存器以及任何写CVR寄存器会使COUNTFLAG
清零。
CLKSOURCE
[2]
RW
系统定时器的时钟源选择:
0 : 时钟源为STCLK (SYSCLK/8)
1
1 : 时钟源为CORECLK
中断使能:
0 : 禁止计数到0的中断
TICKINT
[1]
ENABLE
[0]
RW
1 : 使能计数到0的中断
写CVR寄存器会使计数器清零,但不会导致系统计时器的
中断状态位发生改变。
0
定时器的使能控制:
RW
0 : 禁止定时器
0
1 : 使能定时器
APT MICROELECTRONICS
5-5
0
Reset Value
表示在上一次读此寄存器后计数器是否计数到 0:
0 : 计数器还没有计数到0
COUNTFLAG
1
系统定时器
APT32F101
5.3.1.2 CORET_RVR (回填值寄存器)
•
Address = Base Address + 0x0014
29
28
0
0
0
0
R
R
R
R
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
Name
RELOAD
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
RELOAD
30
RSVD
31
Bit
[23:0]
Type
RW
Description
在计数器计数到0时,RELOAD值会被赋给CORET_CVR
寄存器。
向CORET_RVR寄存器写0会使计数器在下一次循环时停
止工作,此后计数器的值将一直保持为0。当使用外部参考
时钟使能计数器后,必须等到计数器正常计数开始后(即
CORET_CVR 变为非0值时),才可以将 CORET_RVR
置为0以让计数器在下一次循环时停止工作,否则计数器无
法开始第一次计数。
APT MICROELECTRONICS
5-6
Reset Value
0x0
系统定时器
APT32F101
5.3.1.3 CORET_CVR (当前值寄存器)
•
Address = Base Address + 0x0008
29
28
0
0
0
0
R
R
R
R
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
Name
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
CURRENT
30
RSVD
31
Bit
Type
Description
Reset
Value
计数器的当前值。
写CORET_CVR寄存器会同时使此寄存器和COUNTFLAG
CURRENT
[23:0]
APT MICROELECTRONICS
R/W
状态位清零,并且会导致下一个时钟周期开始时,系统计时
器取出寄存器CORET_RVR里的值并赋给CORET_CVR。
注意写CORET_CVR不会导致系统计时器的中断状态位发生
改变。
读 CORET_CVR 会返回访问寄存器时计数器的值。
5-7
0x0
闪存控制器 (IFC)
APT32F101
6
闪存控制器(IFC)
6.1 概述
本章节描述用来控制内部程序存储的闪存控制器。APT32F101 系列片上带有 32K/16K 字节的闪存(PROM),支持
通过 ISP 来更新闪存内容。有了 ISP (In System Programming)功能,用户可以在芯片被焊在 PCB 板上的情况下更
新程序。芯片上电后,CPU 从 PROM 取指令并且执行。APT32F101 系列还支持额外的数据闪存(DROM)存储空
间,让用户在掉电之前存储一些应用程序需要的数据。数据闪存(DROM)的大小可以通过 User Option 配置。
6.1.1 主要特性
•
程序闪存(PROM)大小: 32K/16K Bytes
•
数据闪存(DROM)大小: 4K/2K/1K Bytes
•
编程支持ISP模式和专用的工具模式
•
页大小: 1K Bytes
•
可擦除单元: 页
•
可靠性: PROM和DROM都为200,000次
•
可自定义的选项(称为User Option)支持iWDT使能和禁止,配置复位管脚
•
支持各种保护:调试接口保护,硬件保护和读保护
APT MICROELECTRONICS
6-1
闪存控制器 (IFC)
APT32F101
6.2 功能描述
6.2.1 模块框图
Serial wire debug
闪存控制器由 AHB 和 APB 接口模块,ISP 控制逻辑和时序控制逻辑组成。模块框图如下图所示:
0x1000_0FFF
Debug
Access
Port
AHB2APB
Bridge
CPU Core
User Option
Data Memory
0x1000_0000
Protection Option
AHB Lite
Customer
Information
AHB Bus
32KB
APB Bus
0x0000_7FFF
Program Memory
ISP Ctrl
SFRs
Config &
Map
0x0000_3FFF
Program Memory
0x0000_0000
16KB
Main Ctrl
Figure 6-1 IFC模块框图
6.2.2 模块结构
APT32F101 系列闪存由程序存储单元(PROM),数据存储单元(DROM),用户配置单元(User Option),保护选项和
客户信息区域构成。PROM 有 36/35/34/32/16 个页空间,每页有 1K 字节。最小的擦除单元为页空间,用户可以每
次指定一个页空间的单位地址进行页擦除操作,指定一个字(Word)的单位地址进行写操作。
区域
页名称
大小
起始地址
结束地址
PROM
Page 0
1KB
0x0000_0000
0x0000_03FF
Within
Page 1
1KB
0x0000_0400
0x0000_07FF
16KB
Page 2
1KB
0x0000_0800
0x0000_0BFF
Page 3
1KB
0x0000_0C00
0x0000_0FFF
Page 4
1KB
0x0000_1000
0x0000_13FF
Page 5
1KB
0x0000_1400
0x0000_17FF
Page 6
1KB
0x0000_1800
0x0000_1BFF
Page 7
1KB
0x0000_1C00
0x0000_1FFF
:
:
:
:
APT MICROELECTRONICS
6-2
闪存控制器 (IFC)
APT32F101
Page 14
1KB
0x0000_3800
0x0000_3BFF
Page 15
1KB
0x0000_3C00
0x0000_3FFF
PROM
Page 16
1KB
0x0000_4000
0x0000_43FF
Within
Page 17
1KB
0x0000_4400
0x0000_47FF
32KB
Page 18
1KB
0x0000_4800
0x0000_4BFF
Page 19
1KB
0x0000_4C00
0x0000_4FFF
:
:
:
Page 30
1KB
0x0000_7800
0x0000_7BFF
Page 31
1KB
0x0000_7C00
0x0000_7FFF
Page 32
1KB
0x0000_8000
0x0000_83FF
Page 33
1KB
0x0000_8400
0x0000_87FFF
35KB
Page 34
1KB
0x0000_8800
0x0000_8BFF
36KB
Page 35
1KB
0x0000_8C00
0x0000_8FFF
DROM
Page 0
1KB
0x1000_0000
0x1000_03FF
Page 1
1KB
0x1000_0400
0x1000_07FF
Page 2
1KB
0x1000_0800
0x1000_0BFF
Page 3
1KB
0x1000_0C00
0x1000_0FFF
:
34KB
Table 6-1 闪存地址映射
APT MICROELECTRONICS
6-3
闪存控制器 (IFC)
APT32F101
闪存结构如下图所示:
0x1000_0FFF
Data Memory
512MB
0x1000_0000
Reserved
for
Further Used
0x0000_007C
Customer Info.
Word 31
0x0000_000C
Customer Info.
Word 3
0x0000_0008
Customer Info.
Word 2
0x0000_0004
Customer Info.
Word 1
0x0000_0000
Customer Info.
Word 0
0x0000_7FFF
Program Memory
0x0000_0000
Customer Info.
Figure 6-2 闪存地址空间结构
6.2.3 数据闪存
APT32F101 系列支持数据闪存,给用户存储普通数据。数据闪存可以通过 ISP 编程进行读写。擦除的最小单位为
页。当需要改变某个字节时,该页中所有 256 个字节都需要提前复制到另一页里或者 SRAM 里暂存,或者使用特
殊的软件算法在多页中轮循,模拟 EEPROM 的操作。尽管 PROM 也支持 ISP 功能,但为了数据的安全性和程序代
码的完成性,我们强烈建议使用数据闪存空间来存放应用所需要存储的信息,而不是使用程序闪存。在进行全芯片
擦除操作时,数据闪存和程序闪存一样都会被擦除掉。
在 32KB 闪存的产品里,用户可以选择数据闪存的大小,支持的选项为 4KB/2KB/1KB 和没有数据闪存(0KB)。最大
位 4KB。如果不需要 4KB 数据闪存,可以选择 2KB/1KB/0KB,这样剩下的数据闪存空间则可以被用来当做程序闪
存空间。参考 User Option 选项里的 DSIZE 位。
APT MICROELECTRONICS
6-4
闪存控制器 (IFC)
APT32F101
6.2.4 自定义选项 (User Option, 保护选项,客户信息区域,工厂信息区域)
闪存中有一些可以自定义的空间,用来设置 User Option,使能各种保护功能和给客户存储一些自定义的信息。除
工厂信息区域,所有自定义空间的内容在 CHIP ERASE 时,都会被擦除。
自定义空间的内容在芯片上电后会被自动读取到相应的寄存器中。即使芯片以及被焊在 PCB 上,用户仍然可以根
据需要,使用 ISP 功能或者专用的烧录工具来设置这些选项。
User Option 用来配置各种不同应用所需的功能,这个选项是地址为 0x0000_0100 的一个字(4 个字节)。用户如果
需要配置 User Option,只需要保证在烧写进闪存的程序代码中,地址 0x0000_0100 的值为所需的 User Option 值
即可。(该功能需要配合专用的烧录器使用)
25
24
23
22
21
20
19
18
17
16
15
14
名称
13
12
11
10
位
9
8
7
6
5
描述
独立看门狗电路使能/禁止
IWDT
[31:16]
功能
IWDT[15:0]
0x5555
禁止
Other
使能
数据闪存大小控制
DSIZE
[9:8]
DSIZE[1:0]
数据闪存大小
程序闪存大小
11
4KB
32KB
10
2KB
34KB
01
1KB
35KB
00
0KB
36KB
外部复位管脚功能
功能
EXTRST[3:0]
EXTRST
[7:4]
0x5
PA0.0为外部复位管脚,IO功能被禁用
0xA
PC0.1为外部复位管脚,IO功能被禁用
其它值
PA0.0/PC0.1禁用外部复位功能,当作IO使用
SWD 复位管脚配置
SWDCFG
[3:2]
APT MICROELECTRONICS
SWDCFG[1:0]
功能
0x0
切换到管脚 PA0.1, PA0.2
Other
默认管脚 PA0.12, PA0.13
6-5
4
3
2
1
0
ISFREQ
26
SWDCFG
27
EXTRST
28
DSIZE
29
RSVD
30
IWDT
31
闪存控制器 (IFC)
APT32F101
ISOSC 输出频率选择
ISFREQ
[1:0]
ISFREQ[1:0]
功能
0x2
ISOSC 500KHz
其它值
ISOSC 3MHz
保护选项是为了保护代码的安全。闪存控制器支持三种不同的保护机制,可以通过操作相应的保护位来使能。
•
硬件(Hard-lock)保护
如果使能了硬件保护,用户不能在已经设置了保护的PROM区域中执行页擦除和写操作。用户可以通过软件的
HDPEN或者IFERASE功能锁住或者解锁PROM。使用烧写工具时,在执行了全芯片擦除后,硬件保护会被解
锁。DROM的ISP操作不会受硬件保护锁的影响。硬件保护锁可以增加闪存的可靠性和抗干扰能力,避免PROM
闪存数据由于代码错误造成丢失或改变。
硬件保护功能可以保护整个或者部分PROM,软件中可以在用户特权模式下通过软件使能,或者使用外部的烧
录工具使能。具体参考外部烧录工具的手册或者IFC指令寄存器(IFC_CMR),可用的选择如下所示。
IFC_FULL: 保护闪存全部PROM区域的内容
IFC_4K:
保护从0x0地址开始的4K字节 (0x0 ~ 0xFFF)
IFC_2K:
保护从0x0地址开始的2K字节 (0x0 ~ 0x7FF)
IFC_1K:
保护从0x0地址开始的1K字节 (0x0 ~ 0x3FF)
这个选项可以在固件更新功能中使用。例如,可以将用户启动代码(booting code)放在0x0 ~ 0x7FF区域内,然
后选择IFC_2K选项使能硬件保护锁。当固件需要更新时,启动代码可以擦除所有没有被保护的PROM区域并且
将新的固件烧写进去,同时启动代码本身不会被擦除,保持不变。
•
读保护
大多数用户都不希望闪存中的程序代码被其他人读出来。所以为了用户的代码安全,读保护功能可以禁止外部
烧录工具读取闪存中的数据。这个功能被使能后,只有自定义选项区域和客户自定义信息区域可以被正常读
取,其它所有闪存区域读出来都是0.
•
调试接口(SWD)保护
这个保护功能用来使能或禁止调试接口(SWD)的访问。在系统开发阶段,SWD 可以让开发者方便的查询系统状
态并且调试芯片的工作。但是当代码开发完成后,如果不禁用 SWD 的话,那么程序代码仍旧就可以通过 SWD
读取出来。
客户信息区域由 32 个字(128 字节)组成,可以根据客户所需存储应用 ID 或者序列号等等。这个区域不支持通过
ISP 编程,而且跟其它自定义选项一样在 CHIP ERASE 时会被擦除掉。这个区域必须通过外部烧录工具进行烧写。
工厂信息区域跟客户信息区域一样,也是由 32 个字(128 字节)组成,不同的是,这个区域客户不能自己通过 ISP 功
能或者烧录工具进行烧写,只能委托工厂在芯片出厂的时候一次性写入。工厂在写入后,该区域存储的内容不会被
ISP 或者烧录工具擦除。
所有自定义选项的闪存单元都不能直接通过总线被 CPU 读取出来,而是在 SYSCON 模块中有相应的镜像寄存器供
查询,具体请参考 SYSCON 中 OPT0 寄存器。客户信息区域中只有前 2 个字(8 字节)能通过 SYSCON 中
CINF0~CINF1 寄存器读取,剩下的字节都只能通过外部烧录工具读取。工厂信息区域中也只有前 2 个字(8 字节)能
通过 SYSCON 中 FINF0~FINF1 寄存器读取,剩下的字节都只能通过外部烧录工具读取。
APT MICROELECTRONICS
6-6
闪存控制器 (IFC)
APT32F101
6.2.5 读操作
闪存控制器支持最大 25MHz 系统频率下的 0-wait 读取。当频率超过 25MHz 时,读取闪存时需要增加额外的等待周
期。APT32F101 系列只支持最大 24MHz 的系统频率,所以 0-wait 不需要设置保持默认值 0 即可。
6.2.6 烧写方法
用户可以通过下面几种方法将数据或者代码(烧)写进闪存
•
用户编程模式 (AHB接口)
•
SWD接口
•
烧录工具 (专用串行接口)
Figure 6-3 通过调试接口的烧写
通过程序代码或者 SWD 接口来擦除和烧写闪存的方式,一般通常被叫做 ISP(In System Program)方式。它支持当
芯片在工作时,或者芯片已经被焊在 PCB 版上时,用户也能够修改闪存的内容。如果 SWD 接口被调试保护功能禁
止,那么 SWD 烧写的方式就不再可用,这时候最好的办法就是通过硬件烧录工具来烧录了。
APT 硬件烧录模式跟 ISP 模式类似,只用了两根线作为通讯信号,能减少量产阶段产品所需的上市时间。烧写所需
的信号如下表所示。
但是,如果在交付给终端客户后仍然有固件更新的需求,那么建议在代码中加入自定义的 ISP 功能用于固件更新。
信号
管脚名称
I/O
描述
VDD
VDD
P
芯片电源
VSS
VSS
G
芯片地
SDAT
PA0.12
I/O
串行双向数据管脚
SCLK
PA0.13
I
串行时钟输入管脚,内部默认上拉
Table 6-2 闪存烧写信号
6.2.7 ISP功能
闪存 ISP 功能通过 IFC 中的一些控制寄存器来实现。ISP 操作中会检查一些错误情况,如果遇到某些特定的错误,
那么 ISP 操作会失败。
APT MICROELECTRONICS
6-7
闪存控制器 (IFC)
APT32F101
6.2.7.1 写闪存操作
写(烧录)操作会在 FM_ADDR 寄存器所包含的地址中写入一个字(4 个字节)。也就是说一次写操作会写入 32 位 4 个
字节,所以 FM_ADDR 中的最低 2 位会被忽略并且自动进行字对齐。
为了成功写入数据,目标地址的闪存必须先进行页擦除或者全芯片擦除。在 ISP 操作前,用户必须将秘钥
0x5A5A_5A5A 写入 IFC_KEY 寄存器以禁止闪存模块的擦除/烧写保护。之后,用户需要将烧写的地址写入
IFC_FM_ADDR 寄存器,并将 IFC_CMR 里的指令 CMD[3:0]写为 0x1(写操作),最后将 IFC_CR 的 START 位置 1
启动该操作的执行。在 ISP 操作完成后,IFC_RISR 里的 END 位会置 1。用户同时也可以查询 IFC_CR 里的
START 位来判断 ISP 操作是否完成。
示例:
CSP_IFC_SET_KR(IFC, USER_KEY);
CSP_IFC_SET_CMR(IFC, PROGRAM);
CSP_IFC_SET_AR(IFC, 0x00007C00);
CSP_IFC_SET_DR(IFC, 0x87654321);
CSP_IFC_SET_CR(IFC, START);
while ( CSP_IFC_GET_CR(IFC) != 0x0 );
// Write Key
// Program
// Program address
// Program data
// Start Program
// Wait for operation done
6.2.7.2 页擦除操作
每页闪存中有 1K 字节。页擦除操作会擦除 IFC_FM_ADDR 中地址所在的那一页闪存。在 ISP 操作前,用户必须将
秘钥 0x5A5A_5A5A 写入 IFC_KEY 寄存器以禁止闪存模块的擦除/烧写保护。之后,用户需要将烧写的地址写入
IFC_FM_ADDR 寄存器,并将 IFC_CMR 里的指令 CMD[3:0]写为 0x2(页擦除操作),最后将 IFC_CR 的 START 位
置 1 启动该操作的执行。在 ISP 操作完成后,IFC_RISR 里的 END 位会置 1。用户同时也可以查询 IFC_CR 里的
START 位来判断 ISP 操作是否完成。
示例:
CSP_IFC_SET_KR(IFC, USER_KEY);
CSP_IFC_SET_CMR(IFC, PAGE_ERASE);
CSP_IFC_SET_AR(IFC, 0x00007C00);
CSP_IFC_SET_CR(IFC, START);
while ( CSP_IFC_GET_CR(IFC) != 0x0 );
// Write Key
// Page Erase
// Program address
// Start Page Erase
// Wait for operation done
6.2.7.3 片擦除操作
片擦除操作会擦除整个闪存的程序存储和数据存储区域,但不会擦除自定义选项的区域。片擦除操作只能在用户特
权模式下才能执行。在片擦除中,不需要指令 ISP 操作相关的地址和数据寄存器。在 ISP 操作前,用户必须将秘钥
0x5A5A_5A5A 写入 IFC_KEY 寄存器以禁止闪存模块的擦除/烧写保护。之后,将 IFC_CMR 里的指令 CMD[3:0]写
为 0x3(片擦除操作),HMODE[1:0]写为 0x1(用户特权模式),最后将 IFC_CR 的 START 位置 1 启动该操作的执
行。在 ISP 操作完成后,IFC_RISR 里的 END 位会置 1。用户同时也可以查询 IFC_CR 里的 START 位来判断 ISP
操作是否完成。
示例:
CSP_IFC_SET_KR(IFC, USER_KEY);
CSP_IFC_SET_CMR(IFC, HIDM1|CHIP_ERASE);
CSP_IFC_SET_CR(IFC, START);
while ( CSP_IFC_GET_CR(IFC) != 0x0 );
APT MICROELECTRONICS
6-8
// Write Key
// Chip Erase
// Start Erase
// Wait for operation done
闪存控制器 (IFC)
APT32F101
6.2.7.4 烧写自定义选项操作
共有 4 种自定义的选项支持通过 ISP 操作(HDP, RDP, DBP, EXTRST)。在 ISP 操作前,用户必须将秘钥
0x5A5A_5A5A 写入 IFC_KEY 寄存器以禁止闪存模块的擦除/烧写保护。之后,将 IFC_CMR 里的指令 CMD[3:0]写
为 0x09/0x0A/0x0B/0x0C/0x0D/0x0E/0x0F,HMODE[1:0]写为 0x1(用户特权模式),最后将 IFC_CR 的 START 位
置 1 启动该操作的执行。在 ISP 操作完成后,IFC_RISR 里的 END 位会置 1。用户同时也可以查询 IFC_CR 里的
START 位来判断 ISP 操作是否完成。在这个操作中,不需要设置 ISP 的地址和数据寄存器。由于在 SYSCON 中有
独立看门狗电路的控制位,所以这里没有控制 iWDT 的 ISP 操作,只有外部烧录工具支持单独修改 iWDT 设置。
示例:
CSP_IFC_SET_KR(IFC, USER_KEY);
CSP_IFC_SET_CMR(IFC, HIDM1|EXTRST_EN);
CSP_IFC_SET_CR(IFC, START);
while ( CSP_IFC_GET_CR(IFC) != 0x0 );
// Write Key
// External reset enable
// Start Program
// Wait for operation done
6.2.7.5 擦除自定义选项区域
这个自定义选项擦除操作会擦除所有的 User Option,保护选项和客户信息区域。在 ISP 操作前,用户必须将秘钥
0x5A5A_5A5A 写入 IFC_KEY 寄存器以禁止闪存模块的擦除/烧写保护。之后,将 IFC_CMR 里的指令 CMD[3:0]写
为 0x4(自定义选项擦除操作),HMODE[1:0]写为 0x1(用户特权模式),最后将 IFC_CR 的 START 位置 1 启动该操
作的执行。在 ISP 操作完成后,IFC_RISR 里的 END 位会置 1,。用户同时也可以查询 IFC_CR 里的 START 位来判
断 ISP 操作是否完成。
示例:
CSP_IFC_SET_KR(IFC, USER_KEY);
CSP_IFC_SET_CMR(IFC, HIDM1|IF0_ERASE);
CSP_IFC_SET_CR(IFC, START);
while ( CSP_IFC_GET_CR(IFC) != 0x0 );
// Write Key
// IF0 Erase
// Start Erase
// Wait for operation done
6.2.8 闪存控制器的中断
闪存操作有 5 个中断源,如下所示。
中断
描述
END
指令执行完成中断
PROT_ERR
保护错误;当硬件保护锁使能,仍然进行写操作或擦除操作
UDEF_ERR
未定义指令错误;CMD中定义的操作指令非法或者不允许在当前模式中执行
ADDR_ERR
地址错误;FM_ADDR中定义的地址超出了最大地址范围 (注意)
OVW_ERR
非法操作错误;当ISP操作正在进行时,尝试修改CMD,FM_ADDR,FM_DR,START寄存器
Table 6-3 中断源描述
当中断发生时,RISR 寄存器中的相应位会被置 1。RISR 的置 1 并不受 ICR 设置的影响。如果 ICR 中相应的中断
位被置 1,而且该中断发生了(RISR 相应位置 1),那么该中断会被送至 CPU 处理,进入中断子程序。用户可以在中
断子程序中用 ICLR 寄存器清除相应的中断状态位。
注意:ADDR_ERR 只提供在 RISR 中的查询功能,不提供 CPU 的中断功能。
APT MICROELECTRONICS
6-9
闪存控制器 (IFC)
APT32F101
6.2.9 闪存控制流程图
START
Loop Counter Initialization
(Number of word to be programmed)
KEY 0x5A5A_5A5A
CMR(CMD) Program (0x1)
Loop Counter Loop Counter -1
Clear ‘END’
FM_ADDR Memory Address
FM_DR
32bit Data
CR(START) 0x1
PROT_ERR
Yes
Target address is protected?
No
Yes
ADDR_ERR
Target address is within
space limitation?
No
END bit Set
Loop Counter = 0?
No
Yes
END
Figure 6-4 写操作流程图
APT MICROELECTRONICS
6-10
闪存控制器 (IFC)
APT32F101
START
Loop Counter Initialization
(Number of word to be programmed)
KEY 0x5A5A_5A5A
CMR(CMD) Page Erase (0x2)
Loop Counter Loop Counter -1
Clear ‘END’
FM_ADDR Memory Address
CR(START) 0x1
PROT_ERR
Yes
Target address is protected?
No
Yes
ADDR_ERR
Target address is within
space limitation?
No
END bit Set
Loop Counter = 0?
No
Yes
END
Figure 6-5 页擦除操作流程图
APT MICROELECTRONICS
6-11
闪存控制器 (IFC)
APT32F101
START
KEY 0x5A5A_5A5A
CMR(CMD) Chip Erase (0x3)
CMR(HMODE) 0x1
CR(START) 0x1
PROT_ERR
Yes
Hard-Lock ?
No
END bit Set
END
Figure 6-6 片擦除操作流程图
APT MICROELECTRONICS
6-12
闪存控制器 (IFC)
APT32F101
START
KEY 0x5A5A_5A5A
CMR(CMD) Option Set Cmd
CMR(HMODE) 0x1
CR(START) 0x1
END bit Set
END
Figure 6-7 自定义选项写操作流程图
APT MICROELECTRONICS
6-13
闪存控制器 (IFC)
APT32F101
START
KEY 0x5A5A_5A5A
CMR(CMD) Option Erase
CMR(HMODE) 0x1
CR(START) 0x1
END bit Set
END
Figure 6-8 自定义选项擦除操作流程图
APT MICROELECTRONICS
6-14
闪存控制器 (IFC)
APT32F101
6.3 寄存器说明
6.3.1 寄存器表
•
Base Address: 0x4001_1000
Register
IFC_IDR
IFC_CEDR
IFC_SRR
IFC_CMR
IFC_CR
IFC_MR
IFC_FM_ADDR
IFC_FM_DR
IFC_KR
IFC_ICR
IFC_RISR
IFC_MISR
IFC_ICLR
APT MICROELECTRONICS
Offset
0x00
0x04
0x08
0x0C
0x10
0x14
0x18
0x1C
0x20
0x24
0x28
0x2C
0x30
Description
闪存控制器 ID 寄存器
时钟使能/禁止寄存器
软件复位寄存器
指令寄存器
控制寄存器
工作模式寄存器
ISP 地址寄存器
ISP 数据寄存器
ISP 秘钥寄存器
中断控制寄存器
中断原始状态寄存器
中断状态寄存器
中断状态清楚寄存器
6-15
Reset Value
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
闪存控制器 (IFC)
APT32F101
6.3.2 IFC_IDR (ID寄存器)
•
Address = Base Address + 0x0000, Reset Value = 0x0000_0000
30
29
28
27
26
25
24
23
22
21
20
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
R
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Name
IDCODE
Bit
Type
[31:8]
R
APT MICROELECTRONICS
3
2
1
0
0
0
0 0
R
R
R
RSVD
IDCODE
31
Description
ID 代码
6-16
R
闪存控制器 (IFC)
APT32F101
6.3.3 IFC_CEDR (时钟使能/禁止寄存器)
•
Address = Base Address + 0x0004, Reset Value = 0x0000_0000
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Name
Bit
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Type
Description
时钟使能/禁止寄存器
0: 禁止闪存控制器的时钟
CLKEN
[0]
RW
1: 使能闪存控制器的时钟
软件复位 (IFC_SRR)不会影响 CLKEN 的状态
APT MICROELECTRONICS
0
CLKEN
30
RSVD
31
6-17
R
W
闪存控制器 (IFC)
APT32F101
6.3.4 IFC_SRR (软件复位寄存器)
•
Address = Base Address + 0x0008, Reset Value = 0x0000_0000
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Name
Bit
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Type
Description
软件复位
0: 无效
SWRST
[0]
RW
1: 执行软件复位操作
除 CEDR 外的所有寄存器都会恢复初始值
APT MICROELECTRONICS
0
SWRST
30
RSVD
31
6-18
R
W
闪存控制器 (IFC)
APT32F101
6.3.5 IFC_CMR (指令寄存器)
•
Address = Base Address + 0x000C, Reset Value = 0x0000_0000
27
26
25
24
23
22
21
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
20
19
18
17
16
15
14
13
12
11
10
9
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
R
W
Name
Bit
8
7
6
0
0
0
R
W
R
R
Type
5
4
3
2
1
0
0
0
0
0
0 0
R
R
R
W
R
W
R
W
CMD
28
RSVD
29
HMODE
30
RSVD
31
R
W
Description
写/擦除指令寄存器
CMD
[3:0]
CMD[3:0]
指令
0x1
写操作
0x2
页擦除
0x3
片擦除
0x4
自定义选项擦除
0x9
硬件保护1K(HDP_1K)使能
0xA
硬件保护2K(HDP_2K)使能
0xB
硬件保护4K(HDP_4K)使能
0xC
全范围硬件保护(HDP_FULL)使能
0xD
RDP读保护使能
0xE
DBP调试保护使能
0xF
PA0.0管脚的外部复位功能(EXTRST)使能
RW
注意:
1. 当执行 ISP 操作时,禁止读取闪存内容
2. 当操作完成后,IFC_CMR 寄存器会自动清零
3. 如果 IFC_KR 的秘钥值不对,那么指令不会被执行
4. PC0.1 管脚的外部复位功能只能由外部烧录工具调整 User Option 来使能
操作模式寄存器
HMODE
[9:8]
APT MICROELECTRONICS
RW
6-19
闪存控制器 (IFC)
APT32F101
00: 普通模式
01: 用户特权模式
10: 保留
11: 保留
在普通模式下,只有页擦除和写操作有效。其它指令都必须在用户特权模式
下执行。
APT MICROELECTRONICS
6-20
闪存控制器 (IFC)
APT32F101
6.3.6 IFC_CR (控制寄存器)
•
Address = Base Address + 0x0010, Reset Value = 0x0000_0000
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Name
Bit
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Type
Description
操作启动位
0: 无效
1: 根据 CMR 设置的值开始执行指令
START
[0]
RW
注意:
1. 当操作完成后,START 位会被自动清零
2. 指令的执行过程中,禁止对这位再进行写操作
APT MICROELECTRONICS
0
START
30
RSVD
31
6-21
R
W
闪存控制器 (IFC)
APT32F101
6.3.7 IFC_MR (工作模式寄存器)
•
Address = Base Address + 0x0014, Reset Value = 0x0000_0000
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
W
R
W
Name
Bit
Type
Description
闪存读等待周期
0: 闪存读取中等待 0 个周期
n: 闪存读取中等待 n 个周期
WAIT
[2:0]
RW
注意:
1. 工作频率在 0~25MHz 时,使用 0 等待周期 (APT32F101x 系列)
2. 工作频率在 25~48MHz 时,使用 1 个等待周期
APT MICROELECTRONICS
0
WAIT
RSVD
31
6-22
R
W
闪存控制器 (IFC)
APT32F101
6.3.8 IFC_FM_ADDR (ISP地址寄存器)
•
Address = Base Address + 0x0018, Reset Value = 0x0000_0000
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
FM_ADDR
31
Name
Bit
Type
Description
ISP 地址寄存器
写操作和页擦除操作中的目标闪存地址
FM_ADDR
[31:0]
RW
注意:
1. 操作完成后,这个寄存器会自动清零。
2. 除了写操作和页擦除操作,其它指令执行时都不需要设置该寄存器
APT MICROELECTRONICS
6-23
R
W
闪存控制器 (IFC)
APT32F101
6.3.9 IFC_FM_DR (ISP数据寄存器)
•
Address = Base Address + 0x001C, Reset Value = 0x0000_0000
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
R
W
FM_DATA
31
Name
Bit
Type
Description
ISP 数据寄存器
FM_DATA
[31:0]
RW
当执行写操作时,需要写进闪存的数据
APT MICROELECTRONICS
6-24
R
W
闪存控制器 (IFC)
APT32F101
6.3.10 IFC_KR (ISP秘钥寄存器)
•
Address = Base Address + 0x0020, Reset Value = 0x0000_0000
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
W
W
W
W
W
W
W
W
W
W
W
W
W
W
W
KEY
31
Name
Bit
Type
W
Description
ISP 安全秘钥寄存器
KEY
[31:0]
APT MICROELECTRONICS
W
秘钥寄存器用来保证 ISP 操作的安全,必须将该寄存器写 0x5A5A_5A5A,
所有闪存控制器的指令才会被执行。该寄存器在 ISP 操作完成后会被自动清
零。
6-25
闪存控制器 (IFC)
APT32F101
6.3.11 IFC_ICR (中断控制寄存器)
•
2
5
2
4
0
0
0
0
0
0
0
0
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
0
1
4
1
3
1
2
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
9
8
7
6
0
0
0
0
0
0
5
4
3
2
1 0
0
0
0
0
0 0
END
2
6
RSVD
2
7
PROT_ERR
2
8
UDEF_ERR
2
9
ADDR_ERR
3
0
RSVD
3
1
OVW_ERR
Address = Base Address + 0x0024, Reset Value = 0x0000_0000
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W W
W
Name
Bit
Type
Description
指令执行完成中断使能/禁止
ISP 操作完成
END
[0]
RW
0: 禁止中断
1: 使能中断
保护错误中断使能/禁止
当硬件保护锁使能,仍然进行写操作或擦除操作
PROT_ERR
[12]
RW
0: 禁止中断
1: 使能中断
未定义指令错误中断使能/禁止
CMD 中定义的操作指令非法或者不允许在当前模式中执行
UDEF_ERR
[13]
RW
0: 禁止中断
1: 使能中断
非法操作错误中断使能/禁止
OVW_ERR
[15]
APT MICROELECTRONICS
RW
当 ISP 操作正在进行时,尝试修改 CMD,FM_ADDR,FM_DR,START
寄存器
6-26
闪存控制器 (IFC)
APT32F101
0: 禁止中断
1: 使能中断
APT MICROELECTRONICS
6-27
闪存控制器 (IFC)
APT32F101
6.3.12 IFC_RISR (中断原始状态寄存器)
•
25
24
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
23
22
21
20
19
18
17
16
15
Name
Bit
14
13
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
11
10
9
8
7
6
0
0
0
0
0
0
0
R
R
R
R
R
R
Type
12
Description
指令执行完成中断的原始状态
END
[0]
R
0: 该状态没有发生
1: 该状态发生
保护错误中断的原始状态
PROT_ERR
[12]
R
0: 该状态没有发生
1: 该状态发生
未定义指令错误中断的原始状态
UDEF_ERR
[13]
R
0: 该状态没有发生
1: 该状态发生
地址错误中断的原始状态
ADDR_ERR
[14]
R
0: 该状态没有发生
1: 该状态发生
非法操作错误中断的原始状态
OVW_ERR
[15]
APT MICROELECTRONICS
R
6-28
5
4
3
2
1
0
0
0
0
0
0
0 0
R
R
R
R
R
R
END
26
RSVD
27
PROT_ERR
28
UDEF_ERR
29
ADDR_ERR
30
RSVD
31
OVW_ERR
Address = Base Address + 0x0028, Reset Value = 0x0000_0000
R
闪存控制器 (IFC)
APT32F101
0: 该状态没有发生
1: 该状态发生
APT MICROELECTRONICS
6-29
闪存控制器 (IFC)
APT32F101
6.3.13 IFC_MISR (中断状态寄存器)
•
25
24
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
23
22
21
20
19
18
17
16
15
Name
Bit
14
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
R
R
R
Type
[0]
R
0: 该中断没有发生
1: 该中断发生
保护错误中断的状态
PROT_ERR
[12]
R
0: 该中断没有发生
1: 该中断发生
未定义指令错误中断的状态
UDEF_ERR
[13]
R
0: 该中断没有发生
1: 该中断发生
非法操作错误中断的状态
OVW_ERR
[15]
R
0: 该中断没有发生
1: 该中断发生
APT MICROELECTRONICS
12
11
10
9
8
7
6
0
0
0
0
0
0
0
R
R
R
R
R
R
Description
指令执行完成中断的状态
END
13
6-30
5
4
3
2
1
0
0
0
0
0
0
0 0
R
R
R
R
R
R
END
26
RSVD
27
PROT_ERR
28
UDEF_ERR
29
ADDR_ERR
30
RSVD
31
OVW_ERR
Address = Base Address + 0x002C, Reset Value = 0x0000_0000
R
闪存控制器 (IFC)
APT32F101
6.3.14 IFC_ICLR (中断状态清除寄存器)
•
25
24
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
23
22
21
20
19
18
17
16
15
Name
Bit
14
13
0
0
0
0
0
0
0
0
0
0
R
R
R
R
R
R
R
R
W
W
W
11
10
9
8
7
6
0
0
0
0
0
0
0
W
R
R
R
R
R
Type
Description
指令执行完成中断状态清除
END
[0]
W
0: 无效
1: 清除中断
保护错误中断状态清除
PROT_ERR
[12]
W
0: 无效
1: 清除中断
未定义指令错误中断状态清除
UDEF_ERR
[13]
W
0: 无效
1: 清除中断
地址错误中断状态清除
ADDR_ERR
[14]
W
0: 无效
1: 清除中断
非法操作错误中断状态清除
OVW_ERR
[15]
APT MICROELECTRONICS
12
W
6-31
5
4
3
2
1
0
0
0
0
0
0
0 0
R
R
R
R
R
R
END
26
RSVD
27
PROT_ERR
28
UDEF_ERR
29
ADDR_ERR
30
RSVD
31
OVW_ERR
Address = Base Address + 0x0030, Reset Value = 0x0000_0000
W
闪存控制器 (IFC)
APT32F101
0: 无效
1: 清除中断
APT MICROELECTRONICS
6-32
系统控制器
APT32F101
7
系统控制器(SYSCON)
7.1 概述
系统控制器用于管理和配置整个芯片的时钟和系统相关的工作状态,包括不同工作模式下的具体时钟配置,功
耗优化控制,系统异常处理(RESET 源历史记录,外部晶振失效监测,低电压报警和复位,看门狗设置,以及外
部中断)。
系统运行的时钟可以从外部时钟(EMOSC),内部主时钟(IMOSC)和内部副时钟(ISOSC)三个时钟源中
选择任意一个作为系统时钟。
通过系统控制器还可以对系统的配置状态(看门狗使能状态,调试口使能状态,Flash 硬件写保护状态,Flash
读保护,用户信息数据)进行查询,并可以通过系统控制器实现对系统内部时钟频率的微调。
7.1.1 特性
•
系统时钟频率管理
- 可编程系统时钟(SYSCLK)和外设时钟(PCLK)
- 外部时钟失效监测(Clock Fail Monitor)
- 可选择的系统内部时钟源输出(COP)
•
可配置的系统运行时钟源
- EMCLK:外部主时钟,通过外部直接加载或者晶振工作
- IMCLK:内部主时钟,内部20MHz 的 RC 振荡器
- ISCLK:内部副时钟,内部500KHz 或者3MHz 可选的 RC 振荡器
•
分立的基础时钟控制区域
- SYSCLK:支持系统工作的时钟(例如,CPU 时钟,AHB 总线时钟)
- PCLK:外设工作的基础时钟
- IWDTCLK:看门狗的工作时钟(只能由 ISOSC 提供)
- TKEYCLK:触控检测模拟部分的工作时钟(只能由 ISOSC 提供)
•
支持多种复位源
- POR 上电复位
- EXTRSTB:外部按键复位
- LVDRST:低电压复位
- SWRST:软件复位
- CMRST:外部时钟异常复位
- IWDRST:独立看门狗复位
APTCHIP MICROELECTRONICS
7-1
系统控制器
APT32F101
- SYSRST:CPU 申请的复位
•
功耗控制和工作模式
- RUN 模式:CPU 和所有的外设均处于工作状态
- SLEEP 模式:CPU 处于挂起状态
- DEEP-SLEEP 模式:所有的时钟停止(除了 ISOSC,ISOSC 可以配置为在此工作模式下仍旧工作)
•
•
从 DEEP-SLEEP 模式唤醒
-
灵活选择唤醒源,包括周期的 IWDT 中断,或者任意的外部中断
-
CPU 支持两种唤醒方式:中断唤醒或者事件唤醒
-
外部中断源的触发方式可配置为:上升沿、下降沿、上升下降两个沿
独立看门狗
-
异步工作的(ISOSC 时钟)高可靠性独立看门狗
-
可以在程序中配置使能或者通过 User Option 配置缺省使能
APTCHIP MICROELECTRONICS
7-2
系统控制器
APT32F101
7.2 功能描述
7.2.1 时钟管理和控制
系统控制器最重要的一个功能之一是对芯片的工作时钟进行管理。芯片的工作时钟结构如下图所示。
SYSCLK_SEL[2:0]
SLEEP
CORECLK
IMOSC
EMOSC
ISOSC
20MHz
4-24MHz
500K/3M
000
001
CPU
IDLE_HCLK
HCLK
DEEP SLEEP
SYSCLK_DIV[3:0]
PCLK_DIV[3:0]
1/(N+1)
1/(N+1)
SYSCLK
IFC, SRAM
IDLE_PCLK
PCLK
Periperhals
CPU NVIC
FCLK
100
SYS_TICK
1/8
STCLK
CPU CORET
Adaptive divider choose the Divider Coefficient automatically,
to ensure watchdog clock at a constant frequency, regardless of ISOSC
frequency configuration
Adaptive Divider
IWDT
TOUCH
Figure 7-1
时钟结构示意图
NOTE:
1)
在 POR 完成以后,IMOSC 为系统的缺省时钟源。
2)
外部时钟(EMOSC)可以由软件使能、关闭。
3)
在系统时钟切换时,IMOSC 必须使能,切换完成后可以关闭 IMOSC。
4)
IWDT 和 TOUCH 模块的时钟源始终为 ISOSC。
外部时钟源(EMOSC)可以通过芯片内置的晶体振荡器,为系统提供稳定和精准的时钟。外部时钟精度高,但
是相比于内部振荡器(IMOSC),它的功耗更高。内部振荡器可以提供较好精度的系统工作时钟,相比于外部晶
振,它的功耗更低,而且稳定时间更短。系统在缺省时选择内部时钟作为系统时钟,保证了芯片在上电后短时间内
可以开始工作。当系统工作时,对计时和时间控制精度要求不是非常高时,推荐使用 IMOSC 作为系统时钟,这样
既节省了外部 IO 和晶振的开销,也节省了系统整体的功耗。
芯片内所有的时钟,除了 IWDT 和 TOUCH 的模拟部分时钟,都由系统时钟供给(SYSCLK)。SYSCLK 在芯
片处于 DEEP-SLEEP 模式时,将自动断开。CPU 的时钟(CORECLK),AHB 总线的时钟(HCLK),Flash 控
制器和 SRAM 控制器的时钟(HCLK)由系统时钟(SYSCLK)派生。所有外设的时钟统称为 PCLK,PCLK 也由
系统时钟派生。在 SLEEP 模式下,CPU 的时钟和 HCLK 将会被断开,而 PCLK 的状态,可以通过 GCER/GCDR
寄存器的 IDLE_PCLK 位来配置(缺省状态下,PCLK 会在 SLEEP 模式下继续工作)。
STCLK 是 CPU 内部的 CORET 计数器的时钟(CORET 可以作为产生间隔时序中断的简单计数器使用),
STCLK 的频率为系统时钟的 1/8,STCLK 的使能和断开,可以通过 GCER/GCDR 寄存器的 SYSTICK 位来配置。
ISOSC 是芯片内部的低速振荡器,用于给 IWDT 和 TOUCH 的模式部分提供时钟。ISOSC 在 IWDT 使能时,
会自动打开。
APTCHIP MICROELECTRONICS
7-3
系统控制器
APT32F101
7.2.2 工作时钟切换
RESET
RESET
FAIL
EM_CMFAIL=1
SW: GCER/SCLK_CR
HW: Wakeup & Restore
IMCLK
EMCLK
SW: GCER/SCLK_CR
HW: Deep Sleep Mode
SW: GCER/SCLK_CR
HW: Wakeup & Restore
SW: GCER/SCLK_CR
HW: Deep Sleep Mode
ISCLK
Figure 7-2
时钟切换状态机
系统时钟在不同条件下,可以通过硬件控制或软件切换不同的时钟源。内部高速时钟(IMOSC 的输出为
IMCLK,定义为内部高速时钟)在芯片上电初始化或芯片复位以后,作为芯片的缺省系统时钟工作。在软件中可以
通过使能 GCER 寄存器中的相应位,使能需要切换到的时钟源,然后通过设置 SCLKCR 寄存器,软件切换需要的
系统工作时钟。当系统时钟进行切换时,目标时钟源必须满足稳定条件(即 STABLE 已经被检测到),否则切换不
能成功。目标时钟源的稳定标志可以通过查询 RISR 寄存器得到。
当芯片执行到 STOP 指令(工作模式切换到 DEEP-SLEEP 模式)时,当前的时钟配置将会被自动保存,然后
系统硬件自动切换系统时钟到 IMCLK,由 IMCLK 作为系统时钟,控制 DEEP-SLEEP 的初始化过程(包括系统时
钟设置的备份,EMOSC,ISOSC 的停止,功耗模式的切换),在完成所有初始化后,IMOSC 会自动停止。芯片
自此进入 DEEP-SLEEP 模式。DEEP-SLEEP 的初始化过程根据系统时钟设置的不同会有差异,如果 IMOSC 在
DEEP-SLEEP 进入前没有被关闭,则初始化的时间为35个系统时钟周期(在 IMCLK 为20MHz 的情况下,大约为
1.8us),IMOSC 在 DEEP-SLEEP 进入前是被关闭的,则初始化过程将加入 IMOSC 的使能和稳定时间(初始化
总共消耗的时间大约为4.6us)。一旦芯片被唤醒,IMOSC 将作为缺省时钟首先工作,然后再 IMCLK 的控制下,
系统会自动恢复 DEEP-SLEEP 前保存的时钟配置。整个唤醒的过程包括了8000个 IMCLK Cycle(380us 左右)的内
部电源稳定时间和 IMOSC 稳定时间,以及4.6us 的系统时钟配置恢复时间。所有的这些 DEEP-SLEEP 前后的时钟
切换都由硬件自动完成,对用户程序是完全透明的。
通过设置 GCER 寄存器的 EM_CM 位,可以使能 EMOSC(外部晶振)失效监测功能。在 EMOSC 失效时,
系统会自动复位,并置位相应的 RESET ID 标志位。系统的初始化程序,可以通过检查 RESET ID 标志位,判断
EMOSC 的失效,并且选择合适的系统时钟源进行工作。
APTCHIP MICROELECTRONICS
7-4
系统控制器
APT32F101
7.2.3 外部主时钟(EMOSC,EMCLK)
外部主时钟振荡器(EMOSC)可以通过外接晶振,或者直接在 XIN 管脚输入 CLOCK 信号来实现时钟引入。
外部晶振和负载电容需要尽可能靠近芯片以保证时钟的稳定,和减少起振时间。对于不同类型的晶振,需要调整振
荡器的增益控制 CYOSC_GM 位,以满足不同起振条件。
Table 7-1
CYOSC_GM 设置说明
EMOSC 频率
CYO_GM[2:0]
16MHz
111
10MHz
8MHz
4MHz
1MHz
500KHz
32.768KHz
000
如果当前系统工作时钟选择 EMOSC 作为系统时钟源,那么在芯片 SLEEP 模式下,EMOSC 不会改变工作状态。
在芯片进入 DEEP-SLEEP 模式后,EMOSC 会自动停止工作,并在系统被唤醒以后,被硬件自动使能。在芯片上
电或者复位后,EMOSC 缺省处于关闭状态。
EMOSC 的使能时通过对 GCER 的 EMOSC 位置高来实现的。当使能 EMOSC 以后,内部的一个时钟稳定计数器
将自动开始计数,该计数器为一个递减计数器,计数器初始值可以通过 OSTR 寄存器中 EM_CNT 来设置。一旦计
数器的计数值变为‘0’,则表示 EMOSC 稳定的振荡已经建立,相应的,RISR 寄存器中 EMOSC_ST 位将被置
高。当对 GCDR 的 EMOSC 位置高,则 EMOSC 会被关闭,并且相应的 GCSR 寄存器中的 EMOSC 使能状态位会
被清除。
Set EM_CNT in OSTR if needed
GCER.EMOSC = 1
Waiting RISR.EMOSC = 1
Set SYSCLK_SEL as EMOSC
Figure 7-3
EMOSC 使能和系统时钟选择设置流程
当外部时钟稳定被检测到以后,RISR 寄存器中相应的 EMOSC_ST 位会被置起。如果相应的 IMSR 寄存器中
的 EMOSC 位处于使能状态,则系统会产生外部时钟稳定中断。在中断服务程序中,可以通过检测 ISR 寄存器中的
EMOSC_ST 标志位来判断该中断的产生。RISR 中的标志位,无论中断是否使能,在外部时钟稳定后都会置位。
APTCHIP MICROELECTRONICS
7-5
系统控制器
APT32F101
7.2.4 内部主时钟振荡器(IMOSC,IMCLK)
芯片内部有一个高速的 RC 振荡器,可以作为系统工作的主要时钟源。当 IMOSC 使能时,GCSR 寄存器的
IMOSC 状态标志位将始终为‘1’。在芯片上电后复位以后,IMOSC 是芯片的缺省工作时钟。由于 IMOSC 的稳定
时间非常短(相比较于外部晶振),所以系统从 DEEP-SLEEP 或者 POR 以后进入正常工作模式的时间可以大幅的
缩短,有效的提升系统响应时间。
如果当前系统工作时钟选择 IMOSC 作为系统时钟源,那么在芯片 SLEEP 模式下,IMOSC 不会改变工作状
态。在芯片进入 DEEP-SLEEP 模式后,IMOSC 会自动停止工作,并在系统被唤醒以后,被硬件自动使能。
7.2.5 内部副时钟振荡器(ISOSC,ISCLK)
芯片内部有一个低速的 RC 振荡器,这个振荡器可以作为系统的工作时钟。在不需要非常精准的计时应用时,
选择低速振荡器以减少系统的整体功耗。同时 ISOSC 也是内部独立看门狗电路的唯一时钟源,和内部 TOUCH 模
块模拟电路的时钟源。当 IWDT 或者 TOUCH 被使能时,ISOSC 在 DEEP-SLEEP 模式下将不会被硬件自动停止。
ISOSC 同时也作为 EMOSC 失效监测时的参考时钟,所以当使能 EMOSC 失效监测时,ISOSC 必须是使能
的。
7.2.6 外部时钟可靠性监测
外部时钟可靠性监测是对外部振荡器(EMOSC)可用性的一种监测。当外部时钟监测被使能时,内部副时钟振
荡器(ISOSC)作为参考时钟源,必须同时使能。一个内部的8位递减计数器在 EMOSC 的时钟控制下进行计数,
每一个 ISOSC 的时钟周期,硬件都会自动比较上一次的计数值和当前的计数值,如果连续三次的比较值都保持一
致,则认为外部时钟可能失效(芯片保证 ISOSC 和 EMOSC 的频率不是整数倍,避免监测错误)。
外部时钟失效监测通过设置 GCER 寄存器中的 EM_CM 位来使能。当失效被检测到,可以通过设置 CMRST 位
来使能自动产生系统的复位。外部时钟失效监测的结果可以表现为以下两种情况:
- 芯片复位 (当 CMRST 位置位时)
- 标志位置位 (在 RISR 寄存器中的 EM_CMFAIL 位置位)
1
2
3
4
5
6
EMCLK
EMOSC is disabled
EMOSC_PD
IMCLK
VALID CLK
IMOSC_PD
Reset is asserted, if EM_CMRST is enabled)
EM_CMRST
EM_CMFAIL
SYSCLK switching to IMCLK
SYSCLK
IMCLK
Figure 7-4
APTCHIP MICROELECTRONICS
7-6
EMOSC 失效监测
7
系统控制器
APT32F101
外部时钟失效监测需要在 EMOSC 稳定以后才可以使能,EM_CMRCV 中断表示 EMOSC 的时钟失效已经恢复。由
于外部时钟失效而引发的系统复位,不会清除 EM_CMFAIL 标志(此标志位为异常事件,所以必须软件强制清除,
但是断电后上电复位,外部复位,低电压复位和看门狗复位可以清除这个标志)。在系统复位以后,如果
EM_CMRCV 标志已经置位,软件可以继续尝试恢复到 EMOSC 作为系统时钟工作。恢复的工作可以参考如下顺序
进行:
- 清除 RISR 寄存器中 EM_CMFAIL 标志位和 SYSCLK_ST 标志位。
- 配置 SCLKCR 寄存器,选择 EMOSC 作为系统时钟。
1
2
3
4
5
6
7
8
9
10
EMCLK
IMCLK
SYSCLK
EMOSC
EMCLK
Stabilized
Disabled
Enabled
EM_CMFAIL
EM_CMRCV
Recovery Interrupt
Figure 7-5
EMOSC 从 CM Fail 恢复以后重新使能
在使用 EMOSC 的监测功能时,当系统进入 DEEP-SLEEP 模式时,EM 功能会被自动关闭,当系统被唤醒
后,EM 将被自动重新使能。
7.2.7 功耗管理
芯片支持三种不同的工作模式:普通(RUN)、睡眠(SLEEP)、深睡眠(DEEP-SLEEP)。针对不同的工
作模式,可以设置不同的功耗调整策略。
7.2.7.1 RUN 模式
RUN 模式,通常也被称作普通模式,是芯片工作的最基本模式。在上电复位以后,芯片即进入此模式工作。所
有的逻辑模块在 PCLK 使能的前提下,都可以正常工作。CPU 在该模式下全速工作。缺省时,除了 IFC 和
SYSCON 模块,其他模块的 PCLK 都处于 DISABLE 状态,可以通过设置寄存器 PCER0 和 PCER1 来使能相应
功能模块的 PCLK。所有功能模块的寄存器都必须在 PCLK 使能以后才可以修改。
7.2.7.2 SLEEP 模式
在 SLEEP 模式下,系统控制器将挂起 CORE 模块的时钟(CPU 将不会工作)。缺省模式下,所有的逻辑外设
仍旧可以工作,但是可以通过设置 IDLE_PCLK 位来修改 SLEEP 模式下,PCLK 是否挂起。所有振荡器的工作状
态在该模式下不会做任何改变。
任何外设事件或者中断都可以触发系统从该模式退出。如果 PCLK 被配置为在 SLEEP 模式下挂起
(IDLE_PCLK 使能),则不能产生任何外设的事件或者中断。
SLEEP 模式可以在系统应用需要快速唤醒,并对功耗有一定要求的应用中采用。
APTCHIP MICROELECTRONICS
7-7
系统控制器
APT32F101
7.2.7.3 DEEP-SLEEP 模式
在 DEEP-SLEEP 模式下,系统控制器将挂起所有的时钟源,但是内部逻辑电源仍将保持不变。在 IWDT 或
TOUCH 模块使能前提下,ISOSC 可以在该模式下继续工作。IMOSC 和 EMOSC 在进入 DEEP-SLEEP 模式以
后,会被自动关闭。当处理器从 DEEP-SLEEP 模式退出时,系统工作时钟(SYSCLK)将会自动恢复到之前的状
态。外部 IO,IWDT,TOUCH 等外部中断或事件可以唤醒处理器,并从该模式退出。具体可以参考中断章节的说
明。
7.2.8 外部供电监测 (LVD)
LVD 提供外部电源的监测功能。该模块可以根据设置,在外部供电电压低于设置值时,产生系统中断或者芯片
复位信号。
LVD 在芯片上电后默认为打开状态,如果需要关闭 LVD 功能,可以置高 LVDCR 的 LVD 控制位 LVD_OFF 关
闭 LVD 控制模块。当 LVD 模块使能以后,处理器将在外部供电电压低于 RSTDET_LVL 的设置值时,产生硬件复
位信号。当中断使能时(通过 LVD_INT 控制位设置),处理器会在外部供电电压低于 INTDET_LVL 设置值时,产
生中断请求(IER、IDR 寄存器中的 LVD_INT 位可以设置或者清除中断标志)。当前外部供电电压的状态,可以通
过 LVDCR 的 LVDFLAG 位检测到。当外部供电电压低于检测 level 时,该标志位为‘1’,当高于检测 level 时,
该标志位为‘0’。
系统复位后,缺省的 LVD 状态为关闭状态。由 LVD 产生的系统复位信号,不会清除 LVD 的使能状态。为保证
LVD 的精度,LVD 模块在使能时会消耗额外的功耗。
Vth_lvdf
Vth_lvdr
Vhyst
Vth_lvrf
VDD PWR
LVD Status
LVD Reset
LVD INT
Figure 7-6 LVD 工作时序图
APTCHIP MICROELECTRONICS
Vth_lvdf
7-8
Vth_lvdr
Vhyst
Vth_lvrr
系统控制器
APT32F101
7.2.9 复位管理 (RESET ID)
处理器内嵌一个复位历史纪录控制器,专门用于记录引起系统复位的 RESET 源。下表中描述了处理器的所有
可能的复位信号源。
处理器复位信号源表
Table 7-2
信号名
描述
EXTRST
外部输入的硬件 RESET 信号(低电平有效)。在外部复位脚有效时可用。
CMRST
由内部产生的 EMOSC 时钟异常复位信号。可以通过软件使能或关闭该功能。
LVDRST
由低电压监测模块(LVD)产生的系统复位信号。可以通过软件势能或者关闭该功能。
IWDTRST
SWRST
SYSRSTREQ
POR
由内部看门狗电路产生的复位信号。
由系统控制器产生的软件复位信号。(IDCCR 寄存器中的 SWRST 控制位)
由 CPU 产生的系统复位请求(通过 MTCR 指令对 CPU 中的 SRCR 寄存器写入
0xABCD1234)。
上电复位
每一个复位信号都对应 RSR 寄存器中的一个状态位。可以通过软件读取该寄存器鉴别处理器的复位信号源。
该寄存器中的所有位信息在电源上电复位(POR)以后,会自动清除。有效的复位可以在复位成功后清除上次的历
史记录,并记录当前复位的触发源。
7.2.10 外部中断管理 (EXI)
处理器的所有 GPIO 都可以设置为外部中断输入。在该芯片中,最多有14个外部中断信号线。同一个组的管脚
可以被配置为该组中断信号线的触发源。外部中断管脚分组的定义如下图所示。详细的管脚设置和分组设置可以参
考 GPIO 章节。系统控制器内部,负责对外部中断信号线的中断使能控制。通过 EXIER/EXIDR 寄存器可以使能或
者关闭指定的外部中断信号线。外部中断的触发边沿选择,可以通过 EXIRT 和 EXIFT 寄存器进行设置。
Table 7-3
EXI 中断信号线
外部中断源分组
中断源
EXI0
PA0.0 or PB0.0 or PC0.0
EXI1
PA0.1 or PB0.1 or PC0.1
EXI2
PA0.2 or PB0.2 or PC0.2
EXI3
PA0.3 or PB0.3 or PC0.3
EXI4
PA0.4
EXI5
PA0.5
EXI6
PA0.6
EXI7
PA0.7
EXI8
PA0.8
EXI9
PA0.9
EXI10
PA0.10
EXI11
PA0.11
APTCHIP MICROELECTRONICS
7-9
系统控制器
APT32F101
EXI12
PA0.12
EXI13
PA0.13
7.2.11 独立的看门狗定时器 (IWDT)
看门狗定时器的作用是在系统运行中,由于程序干扰或者错误运行,导致处理器运行到一个未知的状态中时,
产生一个系统复位请求,把处理器重新置位到初始化状态。他可以保证系统不会因为程序运行错误导致永久挂起。
除外,看门狗定时器中断还可以作为处理器在 DEEP-SLEEP 模式下定时唤醒的中断源,间隔唤醒系统工作,大幅
降低系统的整体功耗。IWDT 是一个独立工作的看门狗模块,和系统的工作状态无关。它内部通过一个18位的 Free
Running 递减计数器控制定时时间。
IWDT 的缺省状态可以通过 Flash 内部的 User Option 设置。在软件中,可以通过设置 IWDEDR 寄存器中的
IWDT_EDC 位来打开或者关闭 IWDT。当清除 IWDT 操作时,IWDT 中计数器的预置数会被重新置位。清除 IWDT
通过对 IWDCNT 寄存器的 IWDT_CLR 位写入0x5A 实现。
IWDT 在 ISOSC 控制下,会一直从预置数递减计数值。当计数器值变为零时,会自动产生系统复位信号。预置
值通过 IWDCR 寄存器的 IWDT_TIME 位设置。IWDT_TIME 一共为3位,对应8种定时时间设置。最小定时时间为
128ms。
IWDT
Alarm
Interrupt
Tintw
WDT
Reset
IWDT_TIME
(256ms ~ 8s)
Tintw is
set by IWDT_INTW, and the exact time is based on the setup of IWDT_TIME.
For example, when IWDT_TIME set as 0x6h, which means 4second overflow time, and
IWDT_INTW is set as 0x6h, the real Tintw is 4s x 1/8 = 0.5s.
Figure 7-7
IWDT 溢出和中断间隔
IWDT 还支持报警功能。在计数器计数过程中,当计数值达到 IWDT_INTW 设置值时,会产生一个中断信号。
IWDT_INTW 的设置值表示中断发生的时间点在整个计数周期的百分比位置。例如,当 IWDT_TIME 设置看门狗定
时溢出时间为4秒,如果 IWDT_INTW 设置为3’b101,则表示在计数器计时到 4 x 2/8 = 1秒时,系统会产生一个报
警中断。
7.2.12 错误命令处理
系统控制器提供了一种自动检测由于错误设置寄存器,而导致系统挂起或者功能错误的机制。当发现当前寄存
器操作会导致系统挂起或者错误风险时,系统控制器会忽略当前操作,并产生错误中断。当有错误中断发生时,可
以通过检查 SYSCON_ERRINF 寄存器获得详细错误信息。
例如,当程序试图通过设置 SCLKCR 寄存器,将系统时钟切换到 EMOSC,而此时 EMOSC 未被使能,或者
已经使能,但是振荡未达到稳定时,控制器将会忽略这次切换操作,并给出命令错误中断。
APTCHIP MICROELECTRONICS
7-10
系统控制器
APT32F101
7.3 寄存器说明
7.3.1 寄存器表
•
Base Address: 0x4001_2000
Table 7-4
寄存器表
Register
Offset
Description
Reset Value
SYSCON_IDCCR
0x000
ID 和控制器模块时钟控制寄存器
0x0000_0001
SYSCON_GCER
0x004
通用使能控制寄存器
0x0000_0000
SYSCON_GCDR
0x008
通用禁止控制寄存器
0x0000_0000
SYSCON_GCSR
0x00C
通用状态寄存器
0x0000_0003
RSVD
0x010
保留
0x0000_0000
RSVD
0x014
保留
0x0000_0000
RSVD
0x018
保留
0x0000_0000
SYSCON_SCLKCR
0x01C
系统时钟控制寄存器
0x0000_0800
SYSCON_PCLKCR
0x020
外设时钟控制寄存器
0x0000_0100
RSVD
0x024
保留
0x0000_0000
SYSCON_PCER0
0x028
外设时钟使能寄存器0
0x0000_0000
SYSCON_PCDR0
0x02C
外设时钟禁止寄存器0
0x0000_0000
SYSCON_PCSR0
0x030
外设时钟状态寄存器0
0x0000_0001
SYSCON_PCER1
0x034
外设时钟使能寄存器1
0x0000_0000
SYSCON_PCDR1
0x038
外设时钟禁止寄存器1
0x0000_0000
SYSCON_PCSR1
0x03C
外设时钟状态寄存器1
0x0000_0000
SYSCON_OSTR
0x040
外部振荡器稳定时间配置寄存器
0x00FF_03FF
RSVD
0x044
保留
0x0000_03FF
RSVD
0x048
保留
0x0000_0000
SYSCON_LVDCR
0x04C
低电压检测控制寄存器
0x0000_0000
SYSCON_IMFT
0x050
内部主振荡器(IMOSC)精调寄存器
0x0000_01FF
SYSCON_PWRCR
0x054
功耗控制寄存器
SYSCON_OPT1
0x058
系统配置寄存器1 (TRIM value for OSC)
SYSCON_OPT0
0x05C
系统配置寄存器0 [2]
-
RSVD
0x060
保留
-
RSVD
0x064
保留
-
SYSCON_IECR
0x068
中断使能控制寄存器
0x0000_0000
SYSCON_IDCR
0x06C
中断禁止控制寄存器
0x0000_0000
SYSCON_IMSR
0x070
中断使能/禁止状态寄存器
0x0000_0000
SYSCON_IAR
0x074
中断软件触发寄存器
0x0000_0000
APTCHIP MICROELECTRONICS
7-11
0x0000_1F09
[1]
0x0000_XXXX
系统控制器
APT32F101
Register
Offset
Description
Reset Value
SYSCON_ICR
0x078
中断清除寄存器
0x0000_0000
SYSCON_RISR
0x07C
原始中断标志状态寄存器
0x0000_0000
SYSCON_ISR
0x080
中断标志状态寄存器
0x0000_0000
SYSCON_RSR
0x084
复位记录状态寄存器
-
SYSCON_EXIRT
0x088
外部中断上升沿选择寄存器
0x0000_0000
SYSCON_EXIFT
0x08C
外部中断下降沿选择寄存器
0x0000_0000
SYSCON_EXIER
0x090
外部中断使能寄存器
0x0000_0000
SYSCON_EXIDR
0x094
外部中断禁止寄存器
0x0000_0000
SYSCON_EXIMR
0x098
外部中断使能/禁止状态寄存器
0x0000_0000
SYSCON_EXIAR
0x09C
外部中断软件触发寄存器
0x0000_0000
SYSCON_EXICR
0x0A0
外部中断清除寄存器
0x0000_0000
SYSCON_EXIRS
0x0A4
外部中断原始标志状态寄存器
0x0000_0000
SYSCON_IWDCR
0x0A8
看门狗控制寄存器
0x0000_070C
SYSCON_IWDCNT
0x0AC
看门狗控制计数器值
0x0003_FFFF
SYSCON_IWDEDR
0x0B0
看门狗使能寄存器
0x0000_XXXX
SYSCON_CINF0
0x0B4
客户信息区0[3]
-
SYSCON_CINF1
0x0B8
客户信息区1
-
SYSCON_FINF0
0x0BC
工程信息区0[4]
-
SYSCON_FINF1
0x0C0
工程信息区1
-
SYSCON_ERRINF
0x0E0
错误命令信息查询寄存器
0x0000_0000
SYSCON_SFCR
0x200
特殊功能寄存器
0x0000_0078
NOTE:
1. 内部主振荡器的频率在出厂时已经经过校准,但可以在软件中通过寄存器再次调整。
2. 存储于 Flash 内部的保护状态信息,可以通过这个寄存器查看。
3. 存储于 Flash 中的客户信息区的第一个 Word(32bit)的内容被自动映射到客户信息区0,
第二个 Word 的内容被映射到客户信息区1。
4.存储于 Flash 中的工程信息区的第一个 Word(32bit)的内容被自动映射到工程信息区0,
第二个 Word 的内容被映射到工程信息区1。
APTCHIP MICROELECTRONICS
7-12
系统控制器
APT32F101
7.3.2 SYSCON_IDCCR (ID 和控制器模块时钟控制寄存器)
Address = Base Address + 0x0000, Reset Value = 0x0000_0001
31
30
29
28
27
26
25
24
23
22
21
20
0
0
0
0
0
0
0
0
0
0
0
0
18
17
16
15
14
13
12
11
10
9
8
7
0
0
0
0
0
0
0
0
0
0
0
0
0
6
5
4
0
0
0
3
2
1
0
0
0
1
RSVD
SWRST
IDCODE
19
CLKEN
•
0
R R R R R R R R R R R R R R R R R R R R R R R R W R R R R R R R
W W W W W W W W W W W W W W W W
W
Name
CLKEN
Bit
Type
[0]
R/W
Description
使能 SYSCON 模块的 APB 时钟。
软件复位。
SWRST
IDCODE/ID_KEY
[7]
W
[31:8]
R
[31:16]
W
APTCHIP MICROELECTRONICS
0:没有效果
1:执行软件复位操作
ID Code 寄存器。
这个区域保存了相应 IP 的 IDCODE。
对本寄存器进行写操作时,需要填入对应的 KEY 值。
只有在 ID_KEY 等于0xE11E 时,对本寄存器的写入才有效。
7-13
系统控制器
APT32F101
28
27
26
0
0
0
0
0
0
21
20
19
0
18
0
0
0
0
0
0
0
17
16
15
0
0
0
14
13
12
11
0
0
0
0
10
9
RSVD
22
SYSTICK
23
RSVD
24
RSVD
25
0
0
8
7
6
0
0
0
5
4
3
ISOSC
29
IMOSC
30
RSVD
31
0
0
0
0
0
RSVD
GCDR:Address = Base Address + 0x0008, Reset Value = 0x0000_0000
IDLE_PCLK
•
EM_CM
GCER:Address = Base Address + 0x0004, Reset Value = 0x0000_0000
EM_CMRST
•
EMOSC
7.3.3 SYSCON_GCER/GCDR (通用使能/禁止控制寄存器)
0
2
1
0
R R R R R R R R R R R R W W R R R R R R W R R W R R R R W W W W
Name
Bit
Type
Description
ISOSC
[0]
W
使能/禁止 ISOSC 振荡器。
IMOSC
[1]
W
使能/禁止 IMOSC 振荡器。
EMOSC
[3]
W
使能/禁止 EMOSC 振荡器。
IDLE_PCLK
[8]
W
使能/禁止在 SLEEP 模式下的 PCLK。
SYSTICK
[11]
W
使能/禁止 STCLK(CPU 内部 CORET 计时器时钟)。
EM_CM
[18]
W
使能/禁止外部晶振监测功能。
EM_CMRST
[19]
W
使能/禁止外部晶振失效时产生系统复位。
当 SYSCLK=EMCLK 时,一旦使能 EM_CM 功能,EM_CMRST
就会强制使能。
NOTE:
GCER 和 GCDR 寄存器只有对写入的‘1’敏感,写入‘0’时无效。
APTCHIP MICROELECTRONICS
7-14
系统控制器
APT32F101
26
0
0
0
0
0
0
21
20
19
0
18
0
0
0
0
0
0
0
17
16
15
0
0
0
14
13
12
11
0
0
0
0
10
9
RSVD
22
SYSTICK
23
RSVD
24
RSVD
25
0
0
8
7
6
0
0
0
5
4
3
ISOSC
27
IMOSC
28
RSVD
29
0
0
0
1
1
RSVD
30
IDLE_PCLK
31
EM_CM
Address = Base Address + 0x000C, Reset Value = 0x0000_0003
EM_CMRST
•
EMOSC
7.3.4 SYSCON_GCSR (通用状态寄存器)
0
2
1
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
Name
Bit
Type
Description
ISOSC 振荡器使能状态。
ISOSC
[0]
R
0:ISOSC 振荡器被禁止。
1:ISOSC 振荡器被使能。
IMOSC 振荡器使能状态。
IMOSC
[1]
R
0:IMOSC 振荡器被禁止。
1:IMOSC 振荡器被使能。
EMOSC 振荡器使能状态。
EMOSC
[3]
R
0:EMOSC 振荡器被禁止。
1:EMOSC 振荡器被使能。
SLEEP 模式下的 PCLK 使能/禁止状态。
IDLE_PCLK
[8]
R
0:在 SLEEP 模式下,PCLK 被禁止。
1:在 SLEEP 模式下,PCLK 被使能。
如果在 SLEEP 模式下,禁止了 PCLK,外设将不能产生中断。
STCLK 时钟使能状态。
SYSTICK
[11]
R
0:STCLK 被禁止。
1:STCLK 被使能。
外部时钟监测功能使能状态。
EM_CM
[18]
R
0:外部时钟监测被禁止。
1:外部时钟监测被使能。
使能/禁止外部时钟失效时的系统复位。
EM_CMRST
[19]
R
0:时钟失效时,复位禁止。
1:时钟失效时,复位使能。
APTCHIP MICROELECTRONICS
7-15
系统控制器
APT32F101
7.3.5 SYSCON_SCLKCR (系统时钟控制寄存器)
Address = Base Address + 0x001C, Reset Value = 0x0000_0800
31
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
20
19
18
17
16
15
14
0
0
0
0
0
0
0
0
0
12
11
10
0
1
0
RSVD
13
0
0
9
8
7
6
5
0
0
0
0
0
4
3
2
1
0
0
0
0
RSVD
21
SYSCLK_DIV
22
SYSCLK_KEY
23
0
SYSCLK_SEL
•
0
W W W W W W W W W W W W W W W W R R R R R R R R R R R R R R R R
W W W W
W W W
Name
Bit
Type
Description
系统时钟选择控制位。
SYSCLK_SEL
[2:0]
R/W
000:选择 IMOSC 作为系统时钟。
001:选择 EMOSC 作为系统时钟。
100:选择 ISOSC 作为系统时钟。
CPU 时钟分频设置。
0000(0):不分频,等于系统时钟。
0001(1):不分频,等于系统时钟。
0010(2):2分频。
0011(3):3分频。
0100(4):4分频。
0101(5):5分频。
0110(6):6分频。
SYSCLK_DIV
[11:8]
R/W
0111(7):7分频。
1000(8):8分频。
1001(9):12分频。
1010(10):16分频。
1011(11):24分频。
1100(12):32分频。
1101(13):64分频。
1110(14):128分频。
1111(15):256分频。
SYSCLK_KEY
[31:16]
APTCHIP MICROELECTRONICS
W
对本寄存器进行写操作时,需要填入对应的 KEY 值。
只有在 KEY 等于0xD22D 时,对本寄存器的写入才有效。
7-16
系统控制器
APT32F101
7.3.6 SYSCON_PCLKCR (外设时钟控制寄存器)
•
Address = Base Address + 0x0020, Reset Value = 0x0000_0100
31
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
20
19
18
17
16
15
14
0
0
0
0
0
0
0
0
0
12
11
10
0
0
0
RSVD
13
0
0
9
8
7
6
5
4
0
1
0
0
0
0
3
2
1
0
0
0
0
RSVD
21
PCLK_DIV
22
PCLK_KEY
23
0
W W W W W W W W W W W W W W W W R R R R R R R R R R R R R R R R
W W W W
Name
Bit
Type
Description
PCLK 时钟分频设置。
0000:不分频,等于系统时钟。
PCLK_DIV
[11:8]
R/W
0001:2分频。
001x:4分频。
01xx:8分频。
1xxx:16分频。
PCLK_KEY
[31:16]
APTCHIP MICROELECTRONICS
W
对本寄存器进行写操作时,需要填入对应的 KEY 值。
只有在 KEY 等于0xC33C 时,对本寄存器的写入才有效。
7-17
系统控制器
APT32F101
7.3.7 SYSCON_PCER0/PCDR0 (外设时钟使能/禁止寄存器0)
27
0
0
0
0
0
25
24
23
22
0
0
0
0
0
21
20
19
18
17
16
15
14
13
12
11
10
9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
I2C
RSVD
26
8
7
6
5
4
3
2
0
0
1
0
0
0
IFC
28
RSVD
29
ADC
30
RSVD
31
TKEY
PCDR0:Address = Base Address + 0x002C, Reset Value = 0x0000_0000
RSVD
•
UART0
PCER0:Address = Base Address + 0x0028, Reset Value = 0x0000_0000
UART1
•
R R R R R R R R R W R R R R R R R R R R R R W W R W R W R R R W
Name
IFC
ADC
TKEY
UART0
UART1
I2C
Bit
Type
Description
使能/禁止相应外设模块的 PCLK 时钟。
[-]
APTCHIP MICROELECTRONICS
W
只有对相应位写‘1’时才有效,写‘0’时无效
PCER 相应位写‘1’时,使能相应模块 PCLK 时钟,
PCDR 相应位写‘1’时,禁止相应模块 PCLK 时钟。
7-18
系统控制器
APT32F101
7.3.8 SYSCON_PCSR0 (外设时钟状态寄存器0)
0
0
0
0
24
23
22
0
0
0
0
0
21
20
19
18
17
16
15
14
13
12
11
10
9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
I2C
RSVD
25
8
7
6
5
4
3
2
0
0
1
0
0
1
IFC
0
26
RSVD
27
ADC
28
RSVD
29
TKEY
30
RSVD
31
UART0
Address = Base Address + 0x0030, Reset Value = 0x0000_0001
UART1
•
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
Name
IFC
ADC
TKEY
UART0
UART1
I2C
Bit
Type
Description
相应外设模块的 PCLK 时钟的使能/禁止状态。
[-]
APTCHIP MICROELECTRONICS
R
0:该对应模块的时钟被禁止。
1:该对应模块的时钟被使能。
7-19
系统控制器
APT32F101
7.3.9 SYSCON_PCER1/PCDR1 (外设时钟使能/禁止寄存器1)
31
30
29
0
0
0
0
0
0
0
18
17
16
0
0
0
0
15
14
0
0
13
12
11
10
9
8
GTC0
0
19
GTC1
0
20
GTC2
0
21
GTC3
0
22
RSVD
0
23
CNTA
24
RSVD
25
LED
26
RSVD
27
RSVD
28
0
0
0
0
0
0
7
6
5
4
0
0
0
0
3
2
1
0
0
0
0
RSVD
PCDR0:Address = Base Address + 0x0038, Reset Value = 0x0000_0000
GPIOA0
•
GPIOB0
PCER0:Address = Base Address + 0x0034, Reset Value = 0x0000_0000
GPIOC0
•
0
R R R R R W W W R R R R R R R W R R W R W W W W R R R R R R R R
Name
GTC0
GTC1
GTC2
GTC3
CNTA
LED
GPIOA0
GPIOB0
GPIOC0
Bit
[-]
APTCHIP MICROELECTRONICS
Type
W
Description
使能/禁止相应外设模块的 PCLK 时钟。
只有对相应位写‘1’时才有效,写‘0’时无效
PCER 相应位写‘1’时,使能相应模块 PCLK 时钟,
PCDR 相应位写‘1’时,禁止相应模块 PCLK 时钟。
7-20
系统控制器
APT32F101
7.3.10 SYSCON_PCSR1 (外设时钟状态寄存器1)
29
0
0
0
0
0
0
0
18
17
16
0
0
0
0
15
14
0
0
13
12
11
10
9
8
GTC0
0
19
GTC1
0
20
GTC2
0
21
GTC3
0
22
RSVD
0
23
CNTA
24
RSVD
25
LED
26
RSVD
27
RSVD
28
0
0
0
0
0
0
7
6
5
4
0
0
0
0
3
2
1
0
0
0
0
RSVD
30
GPIOA0
31
GPIOB0
Address = Base Address + 0x003C, Reset Value = 0x0000_0000
GPIOC0
•
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
Name
GTC0
GTC1
GTC2
GTC3
CNTA
LED
GPIOA0
GPIOB0
GPIOC0
Bit
Type
Description
相应外设模块的 PCLK 时钟的使能/禁止状态。
[-]
APTCHIP MICROELECTRONICS
R
0:该对应模块的时钟被禁止。
1:该对应模块的时钟被使能。
7-21
系统控制器
APT32F101
7.3.11 SYSCON_OSTR (外部振荡器稳定时间配置寄存器)
•
Address = Base Address + 0x0040, Reset Value = 0x00FF_03FF
31
30
29
28
27
26
25
24
23
22
21
0
0
0
0
0
0
0
0
1
1
1
18
17
16
15
14
13
12
11
10
9
8
7
6
5
1
1
1
1
1
0
0
0
0
0
0
1
1
1
1
1
4
3
2
1
1
1
1
0
EM_CNT
19
RSVD
20
1
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W W W W W W W W
Name
Bit
Type
Description
外部晶振的时钟稳定计数器。
EM_CNT
[9:0]
R/W
该计数器值可以在 EMOSC 禁止时进行修改。EMOSC 使能时,
时钟稳定计数器开始递减计数,当计数值达到零,RISR 状态寄
存器中的 EMOSC_ST 位被置位。
时钟稳定计数器的计数时钟为外部时钟的256分频,所以在缺省
状态下,当外部晶振为8MHz 时,稳定计数时间为:
0x3FF x 256 x 125ns = 32.7ms
APTCHIP MICROELECTRONICS
7-22
系统控制器
APT32F101
7.3.12 SYSCON_LVDCR (低电压检测控制寄存器)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
20
19
18
17
16
15
0
0
0
0
0
0
0
0
14
13
LVD_KEY
0
0
0
12
11
0
0
10
9
0
0
LVD_INT
21
RSTDET_LVL
22
LVDFLAG
23
8
7
6
5
4
0
0
0
0
0
3
2
1
0
0
0
0
0
LVD_OFF
31
RSVD
Address = Base Address + 0x004C, Reset Value = 0x0000_0000
INTDET_LVL
•
W W W W W W W W W W W W W W W W R R R R R R R R R R R R R R R R
W W W W W W W W
W
Name
Bit
Type
Description
使能/禁止 LVD 模块。
LVD_OFF
[0]
R/W
0:使能 LVD 模块。
1:禁止 LVD 模块。
LVD 中断触发检测电平
INTDET_LVL
[10:8]
R/W
INTDET_LVL[2:0]
VDD(v)
x00
2.5
x01
3.0
x10
3.9
x11
4.1
使能/禁止 LVD 中断功能。
LVD_INT
[11]
R/W
0:LVD 中断禁止。
1:LVD 中断使能。
在需要产生 LVD 中断时,还必须使能中断使能寄存器 IECR 中的
LVD_INT 位。
LVD 复位触发检测电平
RSTDET_LVL
[14:12]
R/W
RSTDET_LVL[2:0]
VDD(v)
x00
2.2
x01
2.7
x10
3.3
x11
3.6
LVD 的检测状态。
LVDFLAG
[15]
APTCHIP MICROELECTRONICS
R/W
7-23
系统控制器
APT32F101
0:VDD 的当前电压高于 INTDET_LVL 设置的检测阈值。
1:VDD 的当前电压低于 INTDET_LVL 设置的检测阈值。
LVD_KEY
[31:16]
R/W
对本寄存器进行写操作时,需要填入对应的 KEY 值。
只有在 ID_KEY 等于0xB44B 时,对本寄存器的写入才有效。
NOTE:
1. 由 LVD 模块产生的处理器复位,不会复位 LVD 控制寄存器。
2. 从芯片 E 版本开始,芯片上电后 LVD 默认为打开状态,将 LVD_OFF 位写1会禁止 LVD 模块。
APTCHIP MICROELECTRONICS
7-24
系统控制器
APT32F101
7.3.13 SYSCON_IMFT (内部主振荡器(IMOSC)精调寄存器)
•
Address = Base Address + 0x0050, Reset Value = 0x0000_01FF
31
30
29
28
27
26
0
0
0
0
0
0
22
21
20
19
18
0
0
0
0
0
0
0
0
17
16
15
14
13
12
0
0
0
0
0
0
11
10
9
8
7
6
5
4
0
0
0
1
1
1
1
1
3
2
1
0
1
1
1
1
RSVD
IMO_TUNE
23
CLOMX
24
RSVD
25
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W W
W W W W W W W W W
Name
Bit
Type
Description
IMOSC 频率的微调设置。
通过 IMO_TUNE 控制位,可以精细调整 IMOSC 的输出频率。
调整的步进大约为12KHz。
IMO_TUNE
[8:0]
R/W
0x1FF:标准输出频率(工程校准后的输出值)。
0x1FE:标准输出频率-12KHz。
0x1FD:标准输出频率-24KHz。
0x1FC:标准输出频率-36KHz。
……
CLO 输出选择。
CLOMX
[19:16]
APTCHIP MICROELECTRONICS
R/W
CLOMX[3:0]
CLOCK
0x0
ISCLK
0x1
IMCLK
0x2
RSVD
0x3
EMCLK
0x4
TKEYCLK
0x5
TKEYCLK_DV
0x6
IWDTCLK
0x7
SYSCLK
0x8
FRNCLK
0x9
DAPCLK
0xA
CPUCLK
0xB
AHBCLK
0xC
APBCLK
Others
RSVD
7-25
系统控制器
APT32F101
7.3.14 SYSCON_PWRCR (功耗控制寄存器)
29
28
27
26
25
24
23
22
21
20
19
18
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
RSVD
17
STOP_CFG
30
IDLE_CFG
31
SIDLE_CFG
Address = Base Address + 0x0054, Reset Value = 0x0000_1F09
SUBOPT
•
0
2
1
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W W
Name
Bit
Type
Description
在 DEEP-SLEEP 模式下功耗控制。
STOP_CFG
[0]
R/W
0:驱动负载能力较强,功耗较大。
1:驱动负载能力较弱,功耗小。
在 SLEEP 模式下功耗控制
IDLE_CFG
[1]
R/W
0:驱动负载能力较强,功耗较大。
1:驱动负载能力较弱,功耗小。
在低速 SLEEP 模式下功耗控制
SIDLE_CFG
[2]
R/W
0:驱动负载能力较强,功耗较大。
1:驱动负载能力较弱,功耗小。
低速模式选项。
SUBOPT
[3]
R/W
0:普通模式
1:低速模式(当 ISOSC 作为系统工作时钟时)
APTCHIP MICROELECTRONICS
7-26
系统控制器
APT32F101
7.3.15 SYSCON_OPT1 (系统配置寄存器1)
•
Address = Base Address + 0x0058, Reset Value = 0x0000_XXXX
31
30
29
28
27
26
25
24
23
0
0
0
0
0
0
0
0
0
21
20
19
18
17
16
15
14
13
12
11
0
0
0
0
0
0
0
0
0
0
0
0
10
9
8
7
6
5
4
0
0
0
0
0
0
0
3
2
1
0
0
0
0
RSVD
RSVD
IMOSC_TRM
22
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W W W W W
W W W
Name
Bit
Type
Description
IMOSC 的输出频率调整。
IMOSC_TRM
[14:8]
APTCHIP MICROELECTRONICS
R/W
在上电时,FLASH 内的工厂校准值会被自动加载到此寄存器中。
通过调整此寄存器,程序可以再次校准 IMOSC 的输出。
7-27
系统控制器
APT32F101
0
0
23
0
0
0
0
RDP
0
22
21
20
19
18
17
16
0
0
0
0
0
0
0
15
14
13
12
0
0
0
0
11
10
9
8
0
0
0
0
7
6
5
0
0
0
4
3
2
1
0
0
0
0
RSVD
24
SWDP
0
25
RSVD
0
26
RSVD
27
RSVD
28
IWDT_EN
29
HDP_ALL
30
HDP_1K
31
HDP_2K
Address = Base Address + 0x005C, Reset Value = 0xXXXX_XXXX
HDP_4K
•
EXTRST
7.3.16 SYSCON_OPT0 (系统配置寄存器0)
0
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
Name
Bit
Type
Description
看门狗模块缺省状态。
IWDT_EN
[0]
R
0:缺省关闭看门狗。
1:缺省使能看门狗。
外部复位管脚使能状态。
EXTRST
[1]
R
0:外部复位管脚禁用。
1:外部复位管脚使能。
SWD 调试接口保护状态。
SWDP
[8]
R
0:保护未使能(可以通过 SWD 连接)
1:保护使能(不能通过 SWD 连接)
Hardware Protection(Flash Erase/Write)。
HDP_ALL
[16]
R
0:未设置保护。
1:启动全区域保护(禁止对 Flash 程序区的页擦除和写操作)。
Hardware Protection(Flash Erase/Write)。
HDP_1K
[17]
R
0:未设置保护。
1:启动 Flash 程序区起始1K 地址区间保护。
Hardware Protection(Flash Erase/Write)。
HDP_2K
[18]
R
0:未设置保护。
1:启动 Flash 程序区起始2K 地址区间保护。
Hardware Protection(Flash Erase/Write)。
HDP_4K
[19]
R
0:未设置保护。
1:启动 Flash 程序区起始4K 地址区间保护。
Flash 读保护状态。
RDP
[27]
APTCHIP MICROELECTRONICS
R
0:未设置保护。
1:Flash 内容不能通过外部烧写器读取。
7-28
系统控制器
APT32F101
29
0
0
24
0
0
0
0
0
0
22
21
20
19
0
0
0
0
0
0
RSVD
23
18
17
16
15
0
0
0
14
13
12
11
0
0
0
0
10
9
RSVD
25
LVD_INT
26
RSVD
27
CMD_ERR
28
0
0
8
7
0
0
6
5
0
0
4
3
ISOSC_ST
30
IMOSC_ST
ICR:Address = Base Address + 0x0078, Reset Value = 0x0000_0000
RSVD
•
0
0
0
0
0
RSVD
IAR:Address = Base Address + 0x0074, Reset Value = 0x0000_0000
SYSCLK_ST
•
IWDT_INT
IEDR:Address = Base Address + 0x006C, Reset Value = 0x0000_0000
EM_CMFAIL
•
EM_CMRCV
IECR:Address = Base Address + 0x0068, Reset Value = 0x0000_0000
RSVD
31
•
EMOSC_ST
7.3.17 SYSCON_IECR/IEDR/IAR/ICR (中断使能/禁止/软件触发/清除寄存器)
2
1
0
R R W R R R R R R R R R W W R R R R R R W R R W W R R R W R W W
Name
Bit
Type
Description
ISOSC_ST
[0]
W
ISOSC 时钟稳定中断。
IMOSC_ST
[1]
W
IMOSC 时钟稳定中断。
EMOSC_ST
[3]
W
EMOSC 时钟稳定中断。
SYSCLK_ST
[7]
W
系统工作时钟稳定中断。
IWDT_INT
[8]
W
看门狗报警中断。
LVD_INT
[11]
W
低电压检测中断。
EM_CMFAIL
[18]
W
外部时钟失效中断。
EM_CMRCV
[19]
W
外部时钟失效恢复中断。
CMD_ERR
[29]
W
命令错误中断。
NOTE:
1) 寄存器只有在写入‘1’时有效,写入‘0’时无效。
2) IECR 在对应位写入‘1’时,对应中断使能;IEDR 在对应位写入‘1’时,对应中断禁止。
3) IAR 在对应位写入‘1’时,对应中断被触发。
4) ICR 在对应位写入‘1’时,对应中断状态标示被清除。
APTCHIP MICROELECTRONICS
7-29
系统控制器
APT32F101
0
0
0
0
0
0
0
22
21
20
19
0
0
0
0
0
0
RSVD
23
18
17
16
15
0
0
0
14
13
12
11
0
0
0
0
10
9
RSVD
24
LVD_INT
25
RSVD
26
CMD_ERR
27
0
0
8
7
0
0
6
5
0
0
4
3
ISOSC_ST
0
28
IMOSC_ST
29
RSVD
30
0
0
0
0
0
RSVD
ISR:Address = Base Address + 0x0080, Reset Value = 0x0000_0000
SYSCLK_ST
•
IWDT_INT
RISR:Address = Base Address + 0x007C, Reset Value = 0x0000_0000
EM_CMFAIL
•
EM_CMRCV
IMSR:Address = Base Address + 0x0070, Reset Value = 0x0000_0000
RSVD
31
•
EMOSC_ST
7.3.18 SYSCON_IMSR/RISR/ISR (中断使能/禁止状态/原始标志状态/标志状态寄存器)
2
1
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
Name
Bit
Type
Description
ISOSC_ST
[0]
R
ISOSC 时钟稳定中断。
IMOSC_ST
[1]
R
IMOSC 时钟稳定中断。
EMOSC_ST
[3]
R
EMOSC 时钟稳定中断。
SYSCLK_ST
[7]
R
系统工作时钟稳定中断。
IWDT_INT
[8]
R
看门狗报警中断。
LVD_INT
[11]
R
低电压检测中断。
EM_CMFAIL
[18]
R
外部时钟失效中断。
EM_CMRCV
[19]
R
外部时钟失效恢复中断。
CMD_ERR
[29]
R
命令错误中断。
标志状态说明:
0:中断禁止,或者中断未发生。
1:中断使能,或者中断请求发生。
NOTE:
1) IMSR 寄存器表示中断的使能或者禁止状态,可以通过 IECR 和 IDCR 来设置。
2) RISR 是原始中断标志位,一旦有中断发生,无论该是否在 IECR 中使能,RISR 中相应位都会置位。通过 ICR 清除。
3) ISR 是中断标志位,逻辑上只有在 IECR 中使能的中断,在 RISR 相应位置位时,对应 ISR 中的相应位才会置位。
APTCHIP MICROELECTRONICS
7-30
系统控制器
APT32F101
•
Address = Base Address + 0x0084, Reset Value = 0xXXXX_XXXX
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
SWRST
CPURST
EM_CMRST
RSVD
IWDTRST
RSVD
EXTRST
LVRST
POR
7.3.19 SYSCON_RSR (复位记录状态寄存器)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W
W
W W W
Name
Bit
Type
Description
POR
[0]
R/W
处理器上电复位
LVRST
[1]
R/W
低电压检测复位
EXTRST
[2]
R/W
外部管脚复位
IWDTRST
[4]
R/W
看门狗复位
EM_CMRST
[6]
R/W
外部时钟失效复位
CPURST
[7]
R/W
CPU 复位请求
SWRST
[8]
R/W
软件复位(通过系统控制器的 IDCCR)
NOTE:
对相应位写‘1’来清除。
APTCHIP MICROELECTRONICS
7-31
系统控制器
APT32F101
•
EXIRT:Address = Base Address + 0x0088, Reset Value = 0x0000_0000
•
EXIFT:Address = Base Address + 0x008C, Reset Value = 0x0000_0000
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
EXI13
EXI12
EXI11
EXI10
EXI9
EXI8
EXI7
EXI6
EXI5
EXI4
EXI3
EXI2
EXI1
EXI0
7.3.20 SYSCON_EXIRT/EXIFT(外部中断上升沿/下降沿选择寄存器)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W W W W W W W W W W W W
Name
Bit
Type
Description
外部中断上升沿/下降沿使能。
EXI0 ~ EXI13
[13:0]
R/W
0:上升沿(EXIRT)/ 下降沿(EXIFT)未使能。
1:上升沿(EXIRT)/ 下降沿(EXIFT)使能。
NOTE:
1) EXIRT 是上升沿选择寄存器。
2) EXIFT 是下降沿选择寄存器。
3) 当 EXIRT 或者 EXIFT 中对应位选择使能时,对应外部中断线由上升沿,或者下降沿触发;当 EXIRT 和 EXIFT 中对应
位都使能时,对应外部中断线为双边沿触发。
APTCHIP MICROELECTRONICS
7-32
系统控制器
APT32F101
•
EXIER:Address = Base Address + 0x0090, Reset Value = 0x0000_0000
•
EXIDR:Address = Base Address + 0x0094, Reset Value = 0x0000_0000
•
EXIAR:Address = Base Address + 0x009C, Reset Value = 0x0000_0000
•
EXICR:Address = Base Address + 0x00A0, Reset Value = 0x0000_0000
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
EXI13
EXI12
EXI11
EXI10
EXI9
EXI8
EXI7
EXI6
EXI5
EXI4
EXI3
EXI2
EXI1
EXI0
7.3.21 SYSCON_EXIER/EXIDR/EXIAR/EXICR(外部中断使能/禁止/软件触发/清除寄存器)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W W W W W W W W W W W W
Name
EXI0 ~ EXI13
Bit
Type
[13:0]
R/W
Description
IER/IDR:使能/禁止外部中断
IAR/ICR:软件触发/清除外部中断
NOTE:
1) 寄存器只有在写入‘1’时有效,写入‘0’时无效。
2) EXIER 在对应位写入‘1’时,对应外部中断使能;EXIDR 在对应位写入‘1’时,对应外部中断禁止。
3) EXIAR 在对应位写入‘1’时,对应外部中断被触发。
4) EXICR 在对应位写入‘1’时,对应外部中断状态标示被清除。
APTCHIP MICROELECTRONICS
7-33
系统控制器
APT32F101
•
EXIMR:Address = Base Address + 0x0098, Reset Value = 0x0000_0000
•
EXIRS:Address = Base Address + 0x00A4, Reset Value = 0x0000_0000
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
EXI13
EXI12
EXI11
EXI10
EXI9
EXI8
EXI7
EXI6
EXI5
EXI4
EXI3
EXI2
EXI1
EXI0
7.3.22 SYSCON_EXIMR/EXIRS(外部中断使能/禁止状态/原始状态寄存器)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
Name
Bit
Type
Description
EXIMR:外部中断使能、禁止状态寄存器。
0:该外部中断被禁止。
1:该外部中断被使能。
EXI0 ~ EXI13
[13:0]
R/W
EXIRS:外部中断原始标志位
0:该中断未发生。
1:该中断发生。
APTCHIP MICROELECTRONICS
7-34
系统控制器
APT32F101
28
27
26
25
24
0
0
0
0
0
0
0
0
22
21
20
19
18
17
16
15
14
0
0
0
0
0
0
0
0
0
13
12
0
0
0
RSVD
IWDT_KEY
23
0
11
10
9
1
1
8
7
6
5
1
0
0
0
4
3
2
1
IWDT_SHT
29
1
1
0
0
IWDT_INTW
30
IWDT_TIME
31
RSVD
Address = Base Address + 0x00A8, Reset Value = 0x0000_070C
IWDT_BUSY
•
RSVD
7.3.23 SYSCON_IWDCR(看门狗控制寄存器)
0
0
W W W W W W W W W W W W W W W W R R R R R R R R R R R R R R R R
W W W W W W W W W
W
Name
Bit
Type
Description
IWDT 的 SHORT 模式,在 debug 时使用。
IWDT_SHT
[0]
R/W
0:禁止 SHORT 模式。
1:使能 SHORT 模式。
看门狗的报警中断窗口时间。当看门狗计时到总溢出时间一定比
例时,发生报警中断。
IWDT_INTW
[7:2]
R/W
IWDT_INTW
比例
0x0
IWDT溢出时间的1/8
0x1
IWDT溢出时间的2/8
0x2
IWDT溢出时间的3/8
0x3
IWDT溢出时间的4/8
0x4
IWDT溢出时间的5/8
0x5
IWDT溢出时间的6/8
0x6
IWDT溢出时间的7/8
Others
IWDT溢出时间的7/8
例如:当看门狗溢出时间设置为8S 时(IWDT_TIME=7),若设
置 IWDT_INTW 为0,则中断时间为1S
看门狗的总溢出时间。
IWDT_TIME
[10:8]
APTCHIP MICROELECTRONICS
R/W
IWDT_TIME
溢出时间
0x0
0.128 秒
0x1
0.256 秒
0x2
0.5 秒
0x3
1 秒
0x4
2 秒
7-35
系统控制器
APT32F101
0x5
3 秒
0x6
4 秒
0x7
8 秒
看门狗的工作状态。
IWDT_BUSY
[12]
R
0:看门狗未工作。
1:看门狗工作。
IWDT_KEY
[31:16]
W
对本寄存器进行写操作时,需要填入对应的 KEY 值。
只有在 IWDT_KEY 等于0x8778时,对本寄存器的写入才有效。
NOTE:
在看门狗工作时,任何尝试关闭 ISOSC 的操作将导致命令错误中断发生。
APTCHIP MICROELECTRONICS
7-36
系统控制器
APT32F101
7.3.24 SYSCON_IWDCNT(看门狗控制计数器值)
Address = Base Address + 0x00AC, Reset Value = 0x0003_FFFF
30
29
28
27
0
0
0
0
0
25
24
23
22
21
0
0
0
0
0
0
20
19
18
17
16
15
14
13
12
11
10
9
0
0
1
1
1
1
1
1
1
1
1
8
7
6
5
4
3
2
1
0
1
1
1
1
1
1
1
1
RSVD
IWDT_CNT
26
IWDT_CLR
CLR_BUSY
31
•
0
1
R W W W W W W W R R R R R R R R R R R R R R R R R R R R R R R R
Name
Bit
Type
Description
IWDT_CNT
[17:0]
R
IWDT 的当前计数值。
IWDT_CLR
[30:24]
W
看门狗计时器清除请求。当写入‘0x5A’时有效。
清除请求状态位。
CLR_BUSY
[31]
R
0:没有挂起的清除请求。
1:正在清除中。
APTCHIP MICROELECTRONICS
7-37
系统控制器
APT32F101
7.3.25 SYSCON_IWDEDR(看门狗使能寄存器)
•
Address = Base Address + 0x00B0, Reset Value = 0x0000_XXXX
31
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
IWDT_EDC
IWDTE_KEY
23
0
0
W W W W W W W W W W W W W W W W R R R R R R R R R R R R R R R R
W W W W W W W W W W W W W W W W
Name
Bit
Type
Description
IWDT 的使能控制。
IWDT_EDC
[15:0]
R/W
0x5555:关闭看门狗。
Others: 启动看门狗。
这个寄存器在处理器复位以后,只能写一次。
对本寄存器进行写操作时,需要填入对应的 KEY 值。
IWDTE_KEY
[31:16]
APTCHIP MICROELECTRONICS
W
只有在 IWDTE_KEY 等于0x7887时,对本寄存器的写入才有
效。
7-38
系统控制器
APT32F101
7.3.26 SYSCON_CINF0/CINF1/FINF0/FINF1(客户信息区、工程信息区)
•
CINF0:Address = Base Address + 0x00B4, Reset Value = 0xXXXX_XXXX
•
CINF1:Address = Base Address + 0x00B8, Reset Value = 0xXXXX_XXXX
•
FINF0:Address = Base Address + 0x00BC, Reset Value = 0xXXXX_XXXX
•
FINF1:Address = Base Address + 0x00C0, Reset Value = 0xXXXX_XXXX
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CINF0
CINF1
FINF0
FINF1
16
0
0
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
Name
CINF0
CINF1
FINF0
FINF1
Bit
Type
[31:0]
R
APTCHIP MICROELECTRONICS
Description
通过烧写器写入客户信息区的第一和第二个 word 内容,在上电
时,自动映射到 CINF 寄存器中。
工程信息区的信息由芯片制造商在出厂前写入。不能修改。
7-39
系统控制器
APT32F101
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
ER_CMEN
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
13
12
11
0
0
0
10
9
8
0
0
0
7
6
5
0
0
0
0
ER_EMDIS
ER_CMDIS
14
ER_AHBCLK
Address = Base Address + 0x00E0, Reset Value = 0x0000_0000
ER_ISODIS
•
ER_IWDCNT
7.3.27 SYSCON_ERRINF(错误命令信息查询寄存器)
4
3
2
1
0
0
0
0
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
Name
Bit
Type
ER_AHBCLK
[4]
R
尝试切换系统时钟到一个未稳定的时钟源
ER_ISODIS
[5]
R
IWDT 使能时,尝试关闭 ISOSC
ER_EMDIS
[8]
R
当外部时钟监测使能时,尝试关闭 EMOSC
ER_CMDIS
[11]
R
当外部时钟未稳定,或者未使能时,尝试关闭外部时钟监测。
ER_CMEN
[14]
R
当外部时钟未稳定,或者未使能时,尝试启动外部时钟监测。
ER_IWDCNT
[15]
R
ISOSC 未使能或者未稳定,尝试修改 IWDT 的计数器(清除操
作)
APTCHIP MICROELECTRONICS
Description
7-40
系统控制器
APT32F101
29
28
27
26
25
24
0
0
0
0
0
0
0
0
22
21
20
19
18
17
16
15
14
13
12
11
0
0
0
0
0
0
0
0
0
0
0
0
10
9
8
7
6
0
0
0
0
1
RSVD
SFCR_KEY
23
0
5
4
1
1
3
2
RSVD
30
RSVD
31
1
0
0
0
CYO_GM
Address = Base Address + 0x0200, Reset Value = 0x0000_0078
TCHREF
•
CYO_CD
7.3.28 SYSCON_SFCR(特殊功能寄存器)
1
0
R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R
W W W W W W W W W W W W W W W W
W W W W W
Name
Bit
Type
CYO_CD
[2]
R/W
外部晶振驱动调整。
CYO_GM
[5:3]
R/W
外部晶振增益调整。
TCHREF
[6]
R/W
电容检测模块充电模式以及检测阈值设置。
[31:16]
W
SFCR_KEY
APTCHIP MICROELECTRONICS
Description
对本寄存器进行写操作时,需要填入对应的 KEY 值。
只有在 SFCR_KEY 等于0x5AA5时,对本寄存器的写入才有效。
7-41
模数转换器(ADC)
APT32F101
8
模数转换器 (ADC)
8.1 概述
本章节描述ADC控制器的功能,从用户的角度详细说明如何操作ADC。
8.1.1 主要特性
12位模数转换器(ADC)模块使用一个逐次逼近电路将模拟电平转换为一个12位的数字值。输入的模拟电平值必须在
AVREF和AVSS的值之间。
•
带逐次逼近逻辑的模拟比较器
•
支持多路输入AIN[14:0]
•
12位转换结果寄存器(ADC_DR)
•
最大转换速度: 12位500KSPS,10位1MSPS
•
模拟输入范围:AVSS 到 AVREF (VDD)
•
可配置采样时间,并且可以配置成10位的ADC以加快转换速度
8.1.2 管脚描述
Table 8-1 ADC管脚描述
管脚名称
功能
I/O类型
有效电平
说明
AVREF
模拟参考电压
模拟
-
-
AIN0 to AIN14
模拟信号输入
模拟
-
-
APTCHIP MICROELECTRONICS
8-1
模数转换器(ADC)
APT32F101
8.1.3 模块框图
VREF
12/10-Bit
Successive
Approximation
ADC
AIN
ADC_EN
ADC_DR[9:0]
EOC
Clocks & SAR
Control Logic
Clock
ADC_MR[4:0] (PRLVAL)
Figure 8-1
ADC模块框图
VDD
VDD
VREF
100nF
10nF
VDD
AINx
AINx
100pF
Figure 8-2 参考电路
APTCHIP MICROELECTRONICS
8-2
VSS
模数转换器(ADC)
APT32F101
8.1.4 输入和输出
ADC的功能是将通过AIN输入的模拟信号转换成数字值。有效的输入信号如下。电压范围从0V到电源电压。
Input Voltage Range: 0.0 V ~ 5.0 V
Reference Bottom Voltage: 0.0 V
Reference Top Voltage: 5.0 V
Dout =
b
b
b
VIN
= N −1 + N2−2 + ... + N0
VFS
2
2
2
Reference Top − Reference Bottom
5.0V − 0.0V
5.0V
≈ 1.22mV
4096
2
2
Reference Top − Reference Bottom 5.0V − 0.0V
5.0V
=
=
≈ 4.88mV
1 LSB =
1024
2 Resolution
210
1 LSB =
Resolution
=
12
=
(12-bit)
(10-bit)
Table 8-2 12位模式的输入和输出范围 (VREF = 5V)
Index
AINx Input Voltage (V)
Digital Output (Binary)
Digital Output (Hex)
0
0.00000 to 0.00122
0000 0000 0000
0x000
1
0.00122 to 0.00244
0000 0000 0001
0x001
…
…
…
…
2047
2.49878 to 2.50000
0111 1111 1111
0x7FF
2048
2.50000 to 2.50122
1000 0000 0000
0x800
…
…
…
…
4094
4.99756 to 4.99878
1111 1111 1110
0xFFE
4095
4.99878 to 5.00000
1111 1111 1111
0xFFF
Table 8-3 10位模式的输入和输出范围 (VREF = 5V)
Index
AINx Input Voltage (V)
Digital Output (Binary)
Digital Output (Hex)
0
0.00000 to 0.00488
00 0000 0000
0x000
1
0.00488 to 0.00976
00 0000 0001
0x001
…
…
…
…
511
2.49512 to 2.50000
01 1111 1111
0x1FF
512
2.50000 to 2.50488
10 0000 0000
0x200
…
…
…
…
1022
4.99023 to 4.99512
11 1111 1110
0x3FE
1023
4.99512 to 5.00000
11 1111 1111
0x3FF
APTCHIP MICROELECTRONICS
8-3
模数转换器(ADC)
APT32F101
SW Trigger
ADC
DISABLE
ADC
READY
ADCEN
ADC
BUSY
EOC = 1
Figure 8-3
ADC状态机
8.1.5 时钟频率和转换时间
ADC 工作的时钟是从 PCLK 获得的。AD 转换的过程需要总共(setup+12/10)个时钟周期。setup 时间可以通过
ADC_CR 寄存器里的“SAMPLE”位(ADC_CR[6:5])设置。ADC 模块提供一个时钟分频器,该分频器是一个 6 位计数
器,由模式寄存器里的 PRLVAL 控制。 下面的表达式给出了系统频率和 ADC 模拟模块时钟频率之间的关系。
如果 PRLVAL 是 0,那么 F_ANA = PCLK
否则 PRLVAL 是其它任何值的话,F_ANA = PCLK / (2*PRLVAL)
PRLVAL 的值必须保证采样速度不超过手册规定的最大值(12 位 500KSPS,10 位 1MSPS)。如果 PCLK/2 被选择
位转换时钟,并且 PCLK 频率是 21MHz,那么一个时钟周期就是 95.2ns。转换速度计算如下(假设 setup 时间为默
认值 6 个周期):
12 位 – (6 个 setup 时钟周期) + (每位 1 个时钟转换周期 x 12 位) + (3 个同步和结果处理时钟周期) = 21 个周期
21 x 95.2ns = 2us (500ksps)
10 位 – (6 个 setup 时钟周期) + (每位 1 个时钟转换周期 x 10 位) + (3 个同步和结果处理时钟周期) = 19 个周期
19 x 95.2ns = 1.7us (588ksps)
ADC_CR[3]=1
Setup time + 12 ADC clock
Conversion
Start
EOC
Access
ADC_DR
11
DATA
Previous
Value
10
9
8
7
6
5
4
3
1
0
Valid
Data
setup time
Figure 8-4
APTCHIP MICROELECTRONICS
2
ADC工作时序图
8-4
模数转换器(ADC)
APT32F101
8.1.6 转换序列定义
转换序列是指若干个需要转换的模拟输入的组合。用户可以设置ADC模块以任意顺序转换15个通道中的某几个选择
好的输入信号。序列的长度(或者说转换的次数)可以由ADC_MR(ADC模式寄存器)中的NBRCH位定义。下表列出
了NBRCH和转换次数的关系:
Table 8-4 NBRCH[5:0]的值和转换次数
NBRCH[5:0]
转换次数
00_0000
1
00_0001
2
00_0010
3
00_0011
4
00_0100
5
00_0101
6
00_0110
7
00_0111
8
00_1000
9
00_1001
10
00_1010
11
00_1011
12
要注意的是,即使是在单次转换(one shot)模式下,ADC 也会在启动后转换设置好的转换次数。转换结果寄存器会
更新成序列中最后一次转换的结果值。
序列中转换通道的组合由 ADC_CMRx 寄存器设定。CV1 定义转换序列中的第一个通道,CV2 为第二个通道,以此
类推。下表列出了 CVx 值和输入通道选择的关系:
Table 8-5 CVx值和输入选择通道
CVx值
选择的输入通道
选择的管脚
00_0000
Input 0
AIN0
00_0001
Input 1
AIN1
00_0010
Input 2
AIN2
00_0011
Input 3
AIN3
00_0100
Input 4
AIN4
00_0101
Input 5
AIN5
00_0110
Input 6
AIN6
00_0111
Input 7
AIN7
00_1000
Input 8
AIN8
00_1001
Input 9
AIN9
00_1010
Input 10
AIN10
00_1011
Input 11
AIN11
APTCHIP MICROELECTRONICS
8-5
模数转换器(ADC)
APT32F101
00_1100
Input 12
AIN12
00_1101
Input 13
AIN13
00_1110
Input 14
AIN14
例如,假设:
NBRCH = 0x2,
CV1 = 0x5, CV2 = 0x2 and CV3 = 0x0
在转换开始后,ADC 先转换输入通道 5(AIN5),然后转换通道 2(AIN2),最后再以转换通道 0(AIN0)结束。
8.1.7 单次转换或者连续转换模式
ADC 可以配置成两种模式:单次转换模式和连续转换模式。
将模式寄存器中的 CONTCV 位设 0 为单次转换模式。这个模式下,转换开始后,ADC 只进行一次完整的(序列)转
换,之后就停止并且等待下一个开始转换的请求。
在序列转换完成前,ADC 不可以被停止。
将模式寄存器中的 CONTCV 位设 1 则为连续转换模式。这个模式下,转换开始后,ADC 不停的循环转换(序列),
直到被停止。要停止转换,CPU 必须将控制寄存器中的 STOP 位写 1。
当收到停止的请求后,ADC 会完成当前的转换,并且将转换结果寄存器更新为最后一次转换的结果。即使序列中其
它转换没有完成,ADC 也会立即停止不会再进行其它转换。
用户必须注意,因为在连续转换模式中的停止命令不会让 ADC 立即停止,而是要完成当前进行中的转换,所以可
能看起来像是多转换了一次。
8.1.8 ADC的比较功能
ADC 的比较功能可以让 ADC 在转换结果达到某个设定的值时触发一个中断。将 ADC_CMPx 设定为想要的阈值,
一旦转换完成后,ADC 就会将转换结果和这个阈值比较,如果转换结果比 ADC_CMPx 寄存器的值大(电压高),那
么 CMPxH 状态位会被置 1,并且出发相应的中断;如果转换结果比 ADC_CMPx 寄存器的值小(电压低),那么
CMPxL 状态位会被置 1,并且出发相应的中断。
在连续转换模式下,需要比较的转换可以通过 ADC_MR 寄存器中的 NBRCMPx 位设置。
在 APT32F101 系列中,可以用来比较的阈值寄存器有两个:ADC_CMP0 和 ADC_CMP1。在连续转换模式下,也
有两个相应的 NBRCMP0(ADC_MR[21:16])和 NBRCMP1(ADC_MR[27:22])寄存器。
Table 8-6 NBRCMPx[5:0]的值和需要比较的转换次数
NBRCMPx[5:0]
需要比较的转换次数
00_0000
1
00_0001
2
00_0010
3
00_0011
4
00_0100
5
00_0101
6
00_0110
7
APTCHIP MICROELECTRONICS
8-6
模数转换器(ADC)
APT32F101
00_0111
8
00_1000
9
00_1001
10
00_1010
11
00_1011
12
例如,假设:
NBRCH = 0x4,
CV1 = 0x5, CV2 = 0x2, CV3 = 0x0, CV4 = 0x5, CV5 = 0x2
NBRCMP0 = 0x1, NBRCMP1 = 0x3
ADC_CMP0 = 0x200, ADC_CMP1 = 0x700
(ADC_IER) CMP0H = 1, CMP1L = 1
那么 ADC 会进行 5 次转换。
1. ADC 将 CV2 (AIN2)的转换结果和 0x200 (ADC_CMP0)比较,如果结果大于 0x200, 那么 CMP0H 中断产生。
2. ADC 将 CV4 (AIN5)的转换结果和 0x700 (ADC_CMP1)比较,如果结果小于 0x700, 那么 CMP1L 中断产生。
8.1.9 ADC转换启动的触发源
ADC转换启动可以由3种事件触发:软件启动,定时器1脉冲匹配中断,外部管脚输入。
1. 由CPU软件启动(ADC_MR寄存器中的IES位为0,ADC_CR寄存器中START位写1)。
2. 在ADC_MR寄存器的IES为1的情况下,定时器1的脉冲匹配中断发生后,ADC会开始转换。
3. 在ADC_MR寄存器的IES为1的情况下,外部ADC_ETR管脚的电平发生变化时,ADC会开始转换。ADC_ETR管
脚的上升沿或者下降沿或者上升下降沿同时触发,由ADC_MR寄存器中的ETRG位控制。
8.1.10 功耗管理
ADC 模块含有功耗管理功能,用以减少模块的功耗。功耗可以从两方面减少:模拟和数字。
减少模拟功耗:为了降低模拟功耗,CPU 需要禁用 ADC 模块(写 ADC_CR 中的 ADCDIS 位),让 ADC 处
于待机模式。
减少数字功耗:为了降低数字功耗,CPU 需要关闭 ADC 时钟(写 ADC_DCR 中的 ADC 位),让 ADC 的数
字模块没有输入时钟,这样数字功耗就降到几乎为 0 了。注意当时钟被关闭时,除了“时钟使能寄存器”以外的
所有寄存器的写操作都无效,但是读操作仍然可以。
所以,为了让 ADC 模块处于最低功耗状态,必须先关闭 ADC 模拟模块(写 ADC_CR 中的 ADCDIS 位),然后再关
闭时钟(写 ADC_DCR 中的 ADC 位)。另一方面,为了让 ADC 退出最低功耗状态,必须先打开时钟(写 ADC_ECR
中的 ADC 位),然后再打开 ADC 模拟模块(写 ADC_CR 中的 ADCEN 位)。
下表列出了功耗管理的各种状态:
Table 8-7 功耗管理的状态位
寄存器中的状态位
状态位为1时
状态位为0时
ADC_PMSR中的ADC位
时钟被使能
时钟被禁止,降低数字功耗
ADC_SR中的ADCENS位
模拟模块处于工作状态
模拟模块处于待机状态,降低模拟功耗
APTCHIP MICROELECTRONICS
8-7
模数转换器(ADC)
APT32F101
8.1.11 EOC标志 (End of Conversion)
状态寄存器中的 EOC 位表示转换结果寄存器中有新的值。
如果 EOC 是 0,表示自从这位清零后,或者上一个转换的结果被 CPU 读取后,还没有完成过任何转换。
如果 EOC 是 1,表示有 AD 转换完成,并且转换结果寄存器中的新数据还没有被读取。
注意:每次读转换结果寄存器(ADC_DR)都会将 EOC 标志位清零。
8.1.12 Ready标志
状态寄存器中的 READY 位表示 ADC 已经做好准备,可以开始进行转换。当 ADC 正在进行转换的时候,读取这位
会返回 0。
8.1.13 OVR标志 (转换溢出)
这个标志表示某个转换完成的数据还没有被读取,就被新的数据覆盖了。
OVR 标志可以被 CPU 清除(在状态清除寄存器里写 OVR 位)。
8.1.14 CMPxH/L标志
这个标志表示某个选择的通道的转换结果比预设的值(ADC_CMPx)高或者低。
CMPxH/L 标志可以被 CPU 清除(在状态清除寄存器里写 CMPxH/L 位)。
8.1.15 工作流程
当 ADC 转换被启动后,ADC 转换开始。当转换结束时,EOC 位(ADC_SR[0])会自动被置 1,并且转换的结果被存
入到 ADC_DR 寄存器中以供读取。然后 ADC 进入等待状态。在开始另一个转换前,记住要先读取 ADC_DR 寄存
器的内容,否则下个转换结果将会覆盖前一个结果。
APTCHIP MICROELECTRONICS
8-8
模数转换器(ADC)
APT32F101
CONFIGURATION for ADC
- Clock Configuration
- Conversion Channel Selection
NO
READY
YES
START
ADC Conversion
Operation
NO
EOC=1 ?
YES
ADC_DR