0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
APT32F101H6S6

APT32F101H6S6

  • 厂商:

    APTCHIP(爱普特微)

  • 封装:

    SSOP-24

  • 描述:

    APT32F101H6S6

  • 数据手册
  • 价格&库存
APT32F101H6S6 数据手册
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
APT32F101H6S6 价格&库存

很抱歉,暂时无法提供与“APT32F101H6S6”相匹配的价格&库存,您可以联系我们找货

免费人工找货