该系列的 Holtek 单片机是基于Arm® Cortex®-M0+ 处理器内核的 32-bit 高性能低功耗单片机。Cortex®-M0+ 是把嵌套向量中断控制器 (NVIC)、系统节拍定时器 (SysTick Timer) 和先进的调试支持紧紧结合在一起的新一代处理器内核。
该系列单片机可工作在高达 60 MHz 的频率下,借助 Flash 加速器以获得较大的效能。它提供高达 128 KB 的嵌入式 Flash 存储器用作程序 / 数据存储,高达 8 KB 的嵌入式 SRAM 存储器用作系统操作和应用程序运用。此系列单片机具有多种外设,如硬件除法器 DIV、ADC、CMP、I2C、UART、SPI、MCTM、GPTM、SCTM、BFTM、CRC-16/32、RTC、WDT、PDMA、EBI、USB2.0 FS、SW-DP ( 串行线调试端口 ) 等。提供了几种省电模式,在唤醒延迟和功耗方面具有较优化的灵活性,这是低功耗应用方面的考虑要点。
以上这些特性使该系列单片机可以广泛地适用于各种应用,如白色家电应用控制、电源监控、报警系统、消费类产品、手持式设备、数据记录应用、马达控制器等。
内核
- 32-bit Arm® Cortex®-M0+ 处理器内核
- 高达 60 MHz 的工作频率
- 单周期乘法
- 集成嵌套向量中断控制器 (NVIC)
- 24-bit SysTick 定时器
Cortex®-M0+ 处理器是一种低门数,高效能的 32-bit 处理器内核,专为要求面积优化、低功耗处理器的单片机及深度嵌入式应用而设计。Cortex®-M0+ 处理器基于ARMv6-M 架构,支持 Thumb®指令集。该处理器还提供了许多功能,如单周期 I/O 端口,硬件乘法器和低延迟中断响应时间。
片上存储器
- 高达 128 KB 片上 Flash 存储器用于指令 / 数据和选项的存储
- 8 KB 片上 SRAM
- 支持多种启动模式
Arm® Cortex®-M0+ 处理器通过同一条外部接口对外部 AHB 外设进行访问及调试访问。处理器访问优先于调试访问。Cortex®-M0+ 的最大地址范围是 4 GB,因为它具有 32-bit 总线地址宽度。此外,预先定义的内存映射由 Cortex®-M0+ 处理器提供,以减少软件被不同的单片机供应商重复实施的复杂性。但有一些区域为 Arm® Cortex®-M0+ 系统外设所使用。更多信息请参考 Arm®Cortex®-M0+ 技术参考手册。概述章节中图 2 显示了该系列单片机的存储器映射,包括代码、SRAM、外设和其它预先定义的区域。
Flash 存储器控制器 – FMC
- 32-bit 字编程,支持在线系统编程 (ISP) 和在线应用编程 (IAP)
- Flash 保护功能,防止非法访问
Flash 存储器控制器 FMC 为嵌入式片上 Flash 存储器提供所有必要的功能和预抓取缓存器。由于 Flash 存储器访问速度比 CPU 慢,故提供一个带有预抓取缓存器的宽访问接口来减少 CPU 指令执行延迟的等待时间。Flash 存储器还提供字编程 / 页擦除功能。
复位控制单元 – RSTCU
- 电源监控:
上电复位 / 掉电复位 – POR / PDR
掉电检测器 – BOD
可编程低压检测 – LVD
复位控制单元 RSTCU 有三种复位方式,分别是上电复位、系统复位和 APB 单元复位。上电复位,被称为冷复位,在上电时复位了整个系统。系统会复位处理器内核和除 SW-DP 控制器以外的外设IP 元件。这些复位可以通过外部信号、内部事件和复位发生器触发。
时钟控制单元 – CKCU
- 外部 4 ~ 16 MHz 晶振
- 外部 32.768 kHz 晶振
- 在工作电压为 3.3V,工作温度为 25 °C 下,内部 8 MHz RC 振荡器精度可调整为 ±2%
- 内部 32 kHz RC 振荡器
- 集成时钟 PLL 和 USB PLL
- 用作外设时钟源的独立的时钟分频器与门控位
时钟控制单元 CKCU 提供了一系列振荡器和时钟功能,包括内部高速 RC 振荡器 (HSI)、外部高速晶振 (HSE)、内部低速 RC 振荡器 (LSI)、外部低速晶振 (LSE)、锁相环 (PLL)、HSE 时钟监控、时钟预分频器、时钟倍频和 APB 时钟分频器与门控电路。AHB、APB 和 Cortex®-M0+ 的时钟来源于系统时钟 (CK_SYS),而系统时钟可以来自 HSI、HSE、LSI、LSE 或者系统 PLL。看门狗定时器和实时时钟 (RTC) 使用 LSI 或 LSE 作为它们的时钟源。
电源控制单元 – PWRCU
- 单一电源 VDD 供电:1.65 V ~ 3.6 V
- 集成 1.5 V LDO 稳压器用作 CPU 内核、外设和存储器电源
- VDD 供电给 RTC
- 两个电源域:VDD,1.5 V
- 四种省电模式:休眠模式、深度休眠模式 1、深度休眠模式 2、暂停模式
功耗被视为许多嵌入式系统应用中较重要的问题之一。因此,在这些单片机中,电源控制单元PWRCU 提供多种省电模式如休眠模式、深度休眠模式 1、深度休眠模式 2 和暂停模式。这些工作模式可以降低功耗,并允许应用在 CPU 运行时间、速度和功耗相互冲突的需求中达到较佳平衡。
外部中断 / 事件控制器 – EXTI
- 高达 16 个可配置触发源和触发类型的 EXTI 输入线
- 所有 GPIO 引脚都可选作 EXTI 触发源
- 触发源类型包括:高电平、低电平、下降沿、上升沿或者双沿
- 每个 EXTI 输入线都可独立进行中断使能、唤醒使能和状态位设置
- 每个 EXTI 输入线都有软件中断触发模式
- 内建去干扰滤波器,用于封锁短脉冲
外部中断 / 事件控制器 EXTI 由 16 个可独立产生唤醒事件和中断请求的边沿检测器组成。每个EXTI 输入线也可被单独屏蔽。
模数转换器 – ADC
- 12-bit SAR A/D 转换器内核
- 高达 1 Msps 转换速率
- 高达 12 个外部模拟输入通道
此系列单片机包含一个多通道 12-bit A/D 转换器,其具有多路复用通道,包括 12 个提供模拟信号的外部通道和 2 个可测量的内部通道。如果输入电压必须保持在一个特定的阈值窗口,模拟看门狗功能将监控和检测这些信号。当输入电压高于或低于设定的阈值,将产生中断。有三种转换模式用来把模拟信号转换成数字数据。A/D 转换器可工作在单次转换、连续和非连续转换模式。内部参考电压VREF 为 A/D 转换器和比较器提供了稳定的输出参考电压。VREF 内接于A/D 转换器的 ADC_IN15 输入通道。VREF 的精确电压由 Holtek 公司在生产测试中对每个部件进行单独测量。
比较器 – CMP
- 两个轨到轨比较器
- 每个比较器都具有可配置的负端输入,用于灵活的电压选择
专用 I/O 引脚
8-bit 定标器用于提供内部参考电压
- 可编程迟滞
- 可编程速度与功耗
- 比较器输出可输出至 I/O 口或定时器,也可作为 A/D 转换器触发输入
- 8-bit 定标器可配置在专用 I/O 口以提供参考电压
- 比较器可通过 EXTI 控制器产生中断,将 MCU 从休眠或深度休眠模式中唤醒
该系列单片机具有两个通用比较器 (CMP)。模拟比较器可配置为独立的比较器或与各种不同外设 IP 结合。每个比较器都可以产生 NVIC 中断,或通过 EXTI 唤醒事件管理单元将 MCU 从深度休眠模式中唤醒。
输入 / 输出端口 – GPIO
- 多达 54 个通用输入 / 输出口 (GPIO)
- 端口 A、B、C、D 映射为 16 个外部中断 – EXTI
- 几乎所有 I/O 引脚都具有可编程输出驱动电流功能
单片机有多达 54 个通用 I/O 引脚,GPIO,即 PA0 ~ PA15 端口、PB0 ~ PB15 端口、PC0 ~ PC15 端口和 PD0 ~ PD5 端口,可以实现逻辑输入 / 输出功能。每个 GPIO 端口都有相关的控制和配置寄存器,提高了灵活性并满足特定的应用需求。
在封装上 GPIO 引脚与其它复用功能引脚共用,以获得较大的灵活性。通过配置相应的寄存器,GPIO 口可以被用作复用功能的引脚。对单片机 GPIO 引脚的外部中断在外部中断控制单元,EXTI,都有相关的控制和配置寄存器。
马达控制定时器 – MCTM
- 1 个 16-bit 向上、向下、向上 / 向下自动重载计数器
- 16-bit 可编程预分频器对计数器时钟频率进行分频,分频率为 1 ~ 65536
- 输入捕捉功能
- 比较匹配输出
- PWM 波形产生功能,具有边沿对齐和中心对齐两种计数模式
- 单脉冲输出模式
- 带可编程死区时间插入的互补输出
- 煞车信号输入将强制定时器输出复位或输出固定电平
马达控制定时器包括一个 16-bit 向上 / 向下计数器、四个 16-bit 捕捉 / 比较寄存器 (CCR)、一个16-bit 计数器重装载寄存器 (CRR)、一个 8-bit 重复计数器和几个控制 / 状态寄存器。它可用于多种用途,包括测量输入信号的脉冲宽度或产生输出波形,如比较器匹配输出、PWM 输出或带死区时间插入的互补 PWM 输出。MCTM 能够为马达控制、霍尔传感器接口和煞车信号输入提供全功能支持。
PWM 产生和捕捉定时器 – GPTM
- 1 个 16-bit 向上、向下、向上 / 向下自动重载计数器
- 每个定时器高达 4 个独立通道
- 16-bit 可编程预分频器对计数器时钟频率进行分频,分频率为 1 ~ 65536
- 输入捕捉功能
- 比较匹配输出
- PWM 波形产生功能,具有边沿对齐和中心对齐两种计数模式
- 单脉冲输出模式
- 内建可处理编码器接口信号的带两个输入口的正交解码器
通用定时器包括一个 16-bit 向上 / 向下计数器,四个 16-bit 捕捉 / 比较寄存器 (CCR),一个 16-bit计数器重载寄存器 (CRR) 和多个控制 / 状态寄存器。它们可用于多种用途,包括通用计时、输入信号脉冲宽度测量、输出波形产生,如单脉冲波形产生或 PWM 输出产生。GPTM 内建可处理编码器接口信号的带两个输入口的正交解码器。
单通道产生与捕捉定时器 – SCTM
- 1 个 16-bit 向上自动重载计数器
- 每个定时器具有单个通道
- 16-bit 可编程预分频器对计数器时钟频率进行分频,分频率为 1 ~ 65536
- 输入捕捉功能
- 比较匹配输出
- PWM 波形产生功能,具有边沿对齐计数模式
- 单脉冲输出模式
单通道定时器包括一个 16-bit 向上计数器,一个 16-bit 捕捉 / 比较寄存器 (CCR),一个 16-bit 计数器重装载寄存器 (CRR) 和多个控制 / 状态寄存器。它可用于多种用途,包括通用计时、输入信号脉冲宽度调制、输出波形产生,如单脉冲波形产生或 PWM 输出。
基本功能定时器 – BFTM
- 1 个 32-bit 比较 / 匹配向上计数器 – 无输入 / 输出控制特性
- 单次模式 – 比较匹配条件产生后停止计数
- 重复模式 – 比较匹配条件产生后重新开始计数
基本功能定时器是一个简单的 32-bit 向上计数器,可用于测量时间间隔并产生一个单次或者重复中断。BFTM 工作在两种功能模式下,即重复模式或单次模式。在重复模式下,当一个比较匹配事件发生时,BFTM 重新开始计数。BFTM 也包含一个单次模式,在此模式下,当一个比较匹配事件发生时,计数器停止计数。
看门狗定时器 – WDT
- 带有 3-bit 预分频器的 12-bit 向下计数器
- 可产生系统复位
- 可编程看门狗定时器窗口功能
- 寄存器写保护功能
看门狗定时器是一个硬件定时电路,可用于检测因软件陷入死锁导致的系统故障。它包括一个12-bit 向下计数器、预分频器、一个 WDT 增量值寄存器、WDT 操作控制电路和 WDT 保护机制。如果软件在看门狗定时器溢出前没有重载计数器的值,计数器溢出时将产生复位。此外,当计数器值大于 WDT 增量值时,如果软件重新加载计数器,也会产生复位。这意味着计数器必须在有限的时间窗口内用特定方法重新加载。当处理器处于调试模式,看门狗定时器计数器可停止计数。该寄存器写保护功能被使能,来防止看门狗定时器配置的突然改变。
实时时钟 – RTC
- 带可编程预分频器的 24-bit 向上计数器
- 报警功能
- 中断和唤醒事件
实时时钟,RTC 电路包括 APB 接口、24-bit 向上计数器、一个控制寄存器、一个预分频器、一个比较寄存器和一个状态寄存器。除了APB 接口外,RTC 电路大多位于 VDD 电源域。APB 接口位于VDD15 备份域。因此,当VDD15 区掉电即单片机进入暂停模式时隔离来自电源控制单元的 ISO 信号,是很有必要的。RTC 计数器被用作唤醒定时器当 MCU 在省电模式时,产生系统恢复或中断信号。
内部集成电路 – I2C
- 支持高达 1 MHz 频率的主从模式
- 提供仲裁功能和时钟同步功能
- 支持 7-bit 和 10-bit 寻址模式和广播呼叫寻址
- 可屏蔽地址功能支持多种从机寻址模式
I2C 模块是一个允许与外部 I2C 接口通信的内部电路,而外部 I2C 接口是一个符合工业标准并用于连接外部硬件的两线串行接口。这两个串行线被称为串行数据线 SDA 和串行时钟线 SCL。I2C 模块提供了三种数据传输速率:即标准模式下的 100 kHz、快速模式下的 400 kHz 和高速模式下的1 MHz。SCL 周期产生寄存器用于设置不同的占空比得到不同的 SCL 脉冲。SDA 线是一条双向数据线,它连接整个 I2C 总线,在主机和从机之间用于数据的传输和接收。I2C模块还具有仲裁检测功能和时钟同步,可防止多个主机试图同时传送数据到 I2C 总线的情况。
串行外设接口 – SPI
- 支持主从模式
- 主机模式频率高达 (fPCLK/2) MHz,从机模式频率高达 (fPCLK/3) MHz
- FIFO 深度:8 级
- 多个主机和多个从机工作模式
串行外设接口SPI 提供了一个 SPI 协议:主从模式下数据发送和接收功能。SPI 接口使用4 个引脚,其中有串行数据输入和输出线MISO和MOSI,时钟线SCK和从机选择线SEL。SPI作为主机使用,用 SEL 和 SCK 信号控制数据流来说明数据通信启动和数据采样率。要接收数据字节,数据流在特定的时钟边沿时被锁存且存储在数据寄存器或 RX FIFO。数据发送也是通过类似的方式,但以相反的顺序。模式故障检测功能使其适用于多主机应用。
通用异步收发器 – UART
- 异步串行通信工作频率高达 (fPCLK/16) MHz
- 全双工通信
- 完全可编程串行接口通信特性包括:
字长:7、8 或 9-bit 字符
校验位:奇、偶或无奇偶校验位的产生和检测
停止位:1 或 2 个停止位
位顺序:最低位优先或最高位优先传输
- 错误侦测:奇偶校验、溢出和帧错误
通用异步收发器 UART 提供了一个灵活的采用异步传输的全双工数据交换。UART 用来转换并行和串行接口之间的数据,通常也被用作 RS232 标准通信。UART 外设功能支持线路状态中断。通过读取线路状态寄存器 LSR,软件可以检测 UART 的错误状态。状态包括传输模式下的类型和状况以及因奇偶、溢出,帧和暂停事件造成的错误状况。
循环冗余校验 – CRC
- 支持 CRC16 多项式:0x8005,
X16 + X15 + X2 + 1
- 支持 CCITT CRC16 多项式:0x1021,
X16 + X12 + X5 + 1
- 支持 IEEE-802.3 CRC32 多项式:0x04C11DB7,
X32 + X26 + X23 + X22+X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
- 支持对数据和校验码进行 1 的补码、字节取反和位取反操作
- 支持字节、半字和字数据大小
- 可编程 CRC 初始种子值
- 对 8-bit 数据执行 CRC 计算需要 1 个 AHB 时钟周期,32-bit 数据需要 4 个 AHB 时钟周期
- 支持 PDMA 对一个存储器区块进行 CRC 计算
循环冗余校验 (CRC) 计算单元是一种错误检测技术测试算法,用于验证数据传输或存储数据的正确性。CRC 计算将数据流或数据块作为输入,并生成一个 16-bit 或 32-bit 输出余数。通常情况下,数据流带 CRC 后缀码,且当被发送或存储时用作校验码。因此,被接收或重新储存的数据流是通过上述相同的生成多项式计算的。如果新的 CRC 码结果与先前计算的不匹配,这意味着数据流出错了。
外设直接访问内存 – PDMA
- 带触发源分组的 6 个通道
- 8/16/32-bit 宽度数据发送
- 支持地址递增、递减或固定模式
- 4 层可编程通道优先级
- 自动重载模式
- 支持的触发源包括:
ADC、SPI、UART、I2C、MCTM、GPTM 和软件请求
外设直接访问内存控制器 PDMA 对 AHB 总线上的数据在外设与系统存储器之间进行转移。每一个 PDMA 通道都有一个源地址、目的地址、存储块长度和发送数量。PDMA可以排除 CPU 干扰,避免执行中断服务程序。由于软件无需参与每个数据的转移操作,此举提高了系统性能。
硬件除法器 – DIV
- 32-bit 有符号 / 无符号除法器
- 运算需 8 个时钟周期,加载需 1 个时钟周期
- 除数为零错误标志
该除法器采用舍尾除法,需通过 START 控制位来触发除法器开始计算。8 个时钟周期后当除法器计算结束,完成标志位将被置高,但若除数寄存器内数据为零,那么除数为零错误标志将被置位。
外部总线接口 – EBI
- 用于多种存储器类型的可编程接口
- 将 AHB 事务转换成相应的外部设备协议
- 为每一个存储区提供独立的片选控制
- 支持一系列单片机的可编程时序
- 当 AHB 事务宽度和外部存储器接口宽度不同时,可自动转换
- 写缓存器可减少因 AHB 写突发事件而停滞的状况
- 支持复用和非复用地址和数据线配置
高达 21 条地址线
高达 16-bit 数据总线宽度
外部总线接口能够访问外部并行总线设备,如 SRAM、Flash 和 LCD 模块。该接口存储映射于CPU 内部地址。为了减少外接单片机所需的引脚数,数据线与地址线可以复用。总线的读 / 写时序可以被调整以符合外部设备的时序规格。注意,该接口仅支持异步 8-bit 或 16-bit 总线接口。
通用串行总线设备控制器 – USB
- 符合 USB 2.0 全速 (12Mbps) 规范
- 片上 USB 全速收发器
- 1 个控制端点 (EP0) 可用于控制转移
- 3 个单缓冲端点可用于批量和中断传输
- 4 个双缓冲端点可用于批量、中断和同步传输
- 1024 字节 EP-SRAM 用于端点数据缓冲器
USB 设备控制器符合 USB 2.0 全速规范。有一个被称为端点 0 的控制端点和七个可配置端点。一个 1024 字节的 SRAM 被用作端点缓冲器。每个端点缓冲器大小可通过相应的寄存器编程来设置,这将为不同的应用提供了较大的灵活性。内置 USB 全速收发器有助于减少总的系统复杂度和成本。USB 功能块也包含恢复和暂停特性以满足低功耗的需求。
调试支持
- 串行线调试端口 – SW-DP
- 4 个用于硬件断点或代码 / 文字补丁的比较器
- 2 个用于硬件数据观察点的比较器
封装和工作温度
- 33/46-pin QFN 和 48/64-pin LQFP 封装
- 工作温度:-40 ˚C ~ +85 ˚C