3.6 时钟和启动
系统时钟的选择在启动时执行,然而在复位后,内部 8MHz RC 振荡器被选为默认的 CPU 时钟。可 以选择 4-32 MHz 的外部时钟,可以用来监测故障。如果检测到故障时,系统会自动切换回内部 RC 振荡
器。如果使能的话,就会产生一个软件中断。同样,必要时对 PLL 时钟的进入也有完整的中断管理(例如
一个间接使用外部晶振,谐振器或振荡器故障)。允许应用程序通过几个分频器来配置 AHB 和 APB 的频
率。AHB 和 APB 的最高频率为 48MHz。
FLITFLCLK to Flash programming interface HSI SYSCLK to I2C1 HSI RC 8 MHz HSI LSE /244 /2 HCLK to AHB bus, core, memory and DMA /8 to cortex system timer AHB AHB PLLSRC PLLMUL HSI SW FHCLK Cortex free running clock PLL prescaler PLLCLK prescaler PCLK to APB peripherals ×2,× 3,... /1,/2,…/512 /1,2,4,8,16 x16HSE /1,/2, CSS SYSCLK If(APB1 prescaler =1)x1,else x2 ADC prescaler /2,4 to TIM1,3,6, …/16 14,15,16,17 OSC_OUT OSC_IN 4-32 MHz HSI14 RC HSE OSC LSE OSC 32.768 KHz HSI14 PCLK HSI to ADC 14MHz max SYSCLK to USART1 OSC32_IN /32 LSE RTCCLK LSE OSC32_OUT to RTC RTCSEL[1:0] LSI RC LSI to IWDG 40 kHz Main clock PLLCLK /2 MCO output
HSI HSI14 SYSCLK LSI(1) LSE(1) MCO HSE 图 2 时钟树
1. CKS32F030x8 上 MCO 没有 LSI/LSE 输出。
11
3.7 通用输入/输出端口(GPIO)
每个 GPIO 引脚都可以通过软件配置为输出(推挽或漏极开路),输入(带或不带上拉或下拉)或复用
的外设功能。多数 GPIO 引脚同时具有有数字或模拟的复用功能。
如有必要,I/O 的配置可以被锁住通过一个特定操作序列,以避免对 I/O 寄存器的意外的写入。
3.8 直接储存器访问控制器(DMA)
5 通道通用 DMA 可以管理储存器到储存器,外设到储存器和储存器到外设的传输。DMA 支持环形缓 冲区的管理,在控制器达到缓冲区的末尾时不再需要用户代码的干预。
每个通道连接到专用硬件 DMA 请求,支持软件对每个通道的触发。由软件完成 DMA 的配置,源和
目标之间传输的数据量都是独立的。DMA 可以用于主要的外设:SPI,I2C,USART,所有 TIMx 的定时
器(除了 TIM14)和 ADC。
3.9 中断和事件
3.9.1 向量嵌套中断控制器(NVIC)
CKS32F030xx 家族嵌入了向量嵌套的中断控制器,能处理多达 32 个可屏蔽中断通道(不包括 Cortex ? -M0 的 16 线中断)和 4 个优先级。
? ?? ?? ?? ?? ?? ?? ? ?
?
紧密耦合的 NVIC 能够快速中断处理中断向量入口地址直接传递到内核紧密耦合的 NVIC 内核接口允许中断的早期处理
?
?
?
?
?
优先处理晚到的更高优先级的中断支持末尾连锁
?
?
?
?
12
自动保存处理器状态
异常返回机制不会产生指令开销
这个硬件模块以最小的中断延迟提供灵活的中断管理功能。
3.9.2 扩展中断/事件控制器(EXTI)
外部中断/事件控制器包含 24 条沿检测线,用于产生中断/事件请求和唤醒系统。每一路可以独立配置 选择触发事件(上升沿,下降沿,两者),也可独立屏蔽。挂起寄存器维持中断请求的状态。EXTI 可以在
外部线路上检测到比内部时钟周期短的窄脉冲。可以连接到 16 个外部中断线路多达 39 个 GPIO。
3.10 模数转换器(ADC)
12 位模拟数字转换器有多达 16 个外部和 2 个内部(温度传感器,参考电压测量)通道,可执行单次 或扫描模式的转换。 在扫描模式下,自动转换会按照选定的一组模拟输入来执行。ADC 接口可接受 DMA 控制器的服务。
模拟看门狗功能允许非常精确的监测一个、几个或全部的选择通道的转换电压。转换结果超出设定的阈值电压时,会产生一个中断。
3.10.1 温度传感器
温度传感器(TS)产生一个随温度线性变化的电压 VSENSE。
温度传感器内部连接到 ADC_IN16 的输入通道,用于将传感器的输出电压转换成数字值。
该传感器具有良好的线性度,但必须进行校准才能获得良好的温度测量精度。由于工艺过程中温度传感器的偏移量因芯片而异,因此未校准的内部温度传感器适用于仅检测温度变化的应用。
表 2 校准值名称 温度传感器校准值 描述 内存地址 TS_CAL1 TS ADC 原始数据在温度 30°C 得到, VDDA=3.3V TS ADC 原始数据在温度 110°C 得到, VDDA=3.3V 0x1FFF F7B8 – 0x1FFF F7B9 0x1FFF F7C2 – 0x1FFF F7C3 TS_CAL2
3.10.2 内部参考电压(VREFINT)
内部参考电压(VREFINT)提供了一个稳定的(带隙)电压输出对于 ADC。VREFINT 是内部连接到 ADC_IN17
的输入通道。
13
CKS32F030xx 数据手册
表 3 内部参考电压校准值 校准值名称 描述 内存地址 0x1FFF F7BA – 0x1FFF F7BB VREFINT_CAL
C 得到,VDDA=3.3V 原始数据在温度 30°3.11 定时器和看门狗
CKS32F030xx 系列器件包括多达 6 个通用定时器和一个高级控制定时器。表 4 比较了高级控制定时器
和通用定时器的特征。
表 4 定时器功能比较 定时 器类 定时器 型
计数器的 分辨率 计数器类 型 预分频因子 DMA 请求产 生 是 捕获/比 较通道 互补 输出 高级控
制 TIM1 16 位 上,下,上/下 1 和 65536 之间的 任何整数 1 和 65536 之间的 任何整数 4 是
TIM3 16 位 上,下,上/ 下 上 是 4 否 TIM14 通用 16 位 1 和 65536 之间的 任何整数 1 和 65536 之间的 任何整数 否 1 否
TIM15 (1)16 位 上 是 2 是 TIM16 TIM17 16 位 上 1 和 65536 之间的 任何整数 1 和 65536 之间的 任何整数 是 1 是
基础 TIM6 (1)16 位 上 是 0 否 1. 仅在 CKS32F030x8 中使用。
3.11.1 高级控制定时器(TIM1)
高级控制定时器(TIM1)可以被看作是 6 通道三相 PWM 发生器。它具有互补的 PWM 输出,可编程 死区时间插入。它也可以被看作是一个完整的通用定时器。4 个独立的通道,可用于:
? ?? ?? ?
?
输入捕捉输出比较
??
?
PWM 生成(边缘或中心对齐模式)单脉冲模式输出
?
14
CKS32F030xx 数据手册
如果作为一个标准的 16 位定时器配置,和 TIMx 定时器具有相同的功能。如果配置为 16 位 PWM 发生器,它具有全调制能力(0-100%)。
在调试模式下,计数器可以被冻结。
很多功能与那些有相同的架构的标准计时器相同。高级的控制定时器还可以通过定时器链接功能和其他定时器协同工作。
3.11.2 通用定时器(TIM3,14…17)
在 CKS32F030xx 设备中有五个同步的通用定时器(差异见表 4)。每个通用定时器可以用来产生 PWM
输出,或作为简单的时基。
TIM3
CKS32F030xx 器件具有一个同步的 4 通道通用定时器。TIM3 基于一个 16 位的自动加载的递加/递减计
数器和一个 16 位的预分频器。TIM3 设有 4 个独立的输入捕捉/输出比较,PWM 或单脉冲模式输出的通道。
可提供最多 12 个输入捕捉/输出比较/ PWM 通道上的最大化的组合。
TIM3 通用定时器可以与 TIM1 的高级控制定时器通过定时器链接功能,同步或事件链接在一起,协同
工作。TIM3 提供独立的 DMA 请求产生。这些定时器能够处理正交(增量)的编码器信号和数字输出从 1
到 3 个霍尔效应传感器。在调试模式下,计数器可以被冻结。
TIM14
基于一个 16 位的自动加载的递加计数器和一个 16 位的预分频器。TIM14 设有一个单一通道输入捕/
输出比较,PWM 或单脉冲模式输出。在调试模式下,计数器可以被冻结。
TIM15,TIM16 和 TIM17
这些定时器是基于一个 16 位的自动加载的递加计数器和一个 16 位的预分频器。TIM15 有两个独立的
通道而 TIM16 和 TIM17 只有单通道输入捕捉/输出比较,PWM 和单脉冲模式输出。TIM15,TIM16 和 TIM17
可以一起工作,其中 TIM15 还可以与 TIM1 的高级控制定时器通过定时器链接功能,同步或事件链接在一
起。TIM15 也可以与 TIM16 和 TIM17 同步。TIM15,TIM16,TIM17 有互补输出死区时间生成和独立的
DMA 请求产生。在调试模式下,计数器可以被冻结。
15
3.11.3 基本定时器 TIM6
此定时器主要用于产生 DAC 触发。 它也可以被用来作为一种通用的 16 位时基。