1
复位和时钟控制
RCC
2
培训内容
?复位源
?系统复位
?电源复位
?备份域复位
?时钟模块
?时钟树
?各时钟信号及其特性
?PLL的配置以及扩频技术(新增)
?时钟测量
?时钟信号的输出
?STM32F1和STM32F2时钟特性比较
3
培训内容
?复位源
?系统复位
?电源复位
?备份域复位
?时钟模块
?时钟树
?各时钟信号及其特性
?PLL的配置以及扩频技术(新增)
?时钟测量
?时钟信号的输出
?STM32F1和STM32F2时钟特性比较
4
复位源和复位电路
复位类型复位源不被复位的部分备注
系统复位
低功耗管理复位备份域和用于查询复位源
的RCC_CSR中的复位标志
通过选项字节使能
软件复位(SWreset)SYSRESEREQ
独立看门狗计数器溢出
窗口看门狗计数器溢出
NRST引脚上的低电平
电源复位
上电掉电复位
(POR/PDR/BOR)备份域
退出待机模式
备份域复位
软件置位BDRST复位
备份SRAM
BKPSRAM只能通
过把闪存读保护级
别从1降到0来复位
VDDVBAT之前都关闭,现在
任一个又来电了
5
复位电路简图
?nRST引脚上的滤波和产生的输出脉冲
?复位电路简图和推荐的外部引脚连接
6
复位电路注意事项
?外部复位信号低脉冲至少保持300ns
?系统复位信号不影响备份域的工作
?NRST复位引脚是CMOS工艺的开漏电路
?在产生内部复位信号时,NRST引脚会输出一个低电平
7
培训内容
?复位源
?系统复位
?电源复位
?备份域复位
?时钟模块
?时钟树
?各时钟信号及其特性
?PLL的配置以及扩频技术(新增)
?时钟信号的输出
?时钟测量
?STM32F1和STM32F2时钟特性比较
8
时钟模块框图
HSI
HSE
PLLCLKMCO1/1..5
LSE
SYSCLK
HSE
PLLCLKMCO2/1..5
PLLI2S
LSIRC
32.768KHz/2,to31
LSEOSc
OSC32_IN
OSC32_OUT
~32KHzIWDGCLK
RTCCLK
TIM5IC4
HSE
/
2,
20
MACTXCLK
MACRXCLKMACRMIICL
KUSBHS
ULPIclock
/P
/Q
/R
xN
PLLI2S
I2SCLK
Ext.Clock
SPI2S_CKI
N
PLLI2SCLK
VCO
PCLK1
upto30MHz
If(APB2pres=1)
x1Else
x2
If(APB1pres
=1)x1
Elsex2
PCLK2
upto60MHz
TIMxCLK
TIM2..7,12..14
APB1
Prescaler
/1,2,4,8,16
TIMxCLK
TIM1,8..11
APB2
Prescaler
/1,2,4,8,16
HCLKup
to120MHz
AHBPrescaler
/1,2…512
/8SysTick
PLL48CLK(USBFS,SDIO&RNG)
CSS
HSEOscOSC_OUT
OSC_IN
4-26MHz
PLLCLK
HSIRC16MHz
/MHSE
HSI
SYSCLK
120MHz
max
/P
/Q
/R
VCO
xN
PLL
Ethernet
PHY
USB2.0
PHY
9
时钟源
HSI
HSE
PLLCLKMCO1/1..5
LSE
SYSCLK
HSE
PLLCLKMCO2/1..5
PLLI2S
LSIRC
32.768KHz/2,to31
LSEOSc
OSC32_IN
OSC32_OUT
~32KHzIWDGCLK
RTCCLK
TIM5IC4
HSE
/
2,
20
MACTXCLK
MACRXCLKMACRMIICL
KUSBHS
ULPIclock
/P
/Q
/R
xN
PLLI2S
I2SCLK
Ext.Clock
SPI2S_CKI
N
PLLI2SCLK
VCO
PCLK1
upto30MHz
If(APB2pres=1)
x1Else
x2
If(APB1pres
=1)x1
Elsex2
PCLK2
upto60MHz
TIMxCLK
TIM2..7,12..14
APB1
Prescaler
/1,2,4,8,16
TIMxCLK
TIM1,8..11
APB2
Prescaler
/1,2,4,8,16
HCLKup
to120MHz
AHBPrescaler
/1,2…512
/8SysTick
PLL48CLK(USBFS,SDIO&RNG)
CSS
HSEOscOSC_OUT
OSC_IN
4-26MHz
PLLCLK
HSIRC16MHz
/MHSE
HSI
SYSCLK
120MHz
max
/P
/Q
/R
VCO
xN
PLL
Ethernet
PHY
USB2.0
PHY
10
外部高速时钟HSE
?外部高速时钟源(1MHz~50MHz)
?方波、正弦波和三角波,占空比[45%,55%]
?设置HSEBYP&HSEON@RCC_CR
?外部高速晶振(4MHz~26MHz)
?使能/关闭控制:HSEON@RCC_CR
?就绪标志:HSERDY@RCC_CR
?晶振和负载电容要尽可能靠近晶振引脚
?减少输出失真和启动稳定时间
?典型稳定时间:2ms
参见AN2867获得更多关
于晶振设计的方法和技巧
11
外部低速时钟LSE
?外部低速时钟源
?典型值:32.768KHz;最大值:1000KHz
?方波、正弦波和三角波,占空比[45%,55%]
?设置LSEBYP&LSEON@RCC_BDCR
?外部低速晶振(32.768KHz)
?使能/关闭控制:LSEON@RCC_BRCR
?就绪标志:LSERDY@RCC_BDCR
?低功耗:最大1uA
?典型稳定时间:2s
?外部连接同HSE
?参见前页
12
内部高速时钟HSI
?16MHz的内部高速RC
?使能/关闭控制:HSION@RCC_CR
?就绪标志:HSIRDY@RCC_CR
?可直接作为系统时钟SYSCLK
?从停止模式唤醒或复位后,默认作为系统时钟
?或通过PLL间接作为系统时钟
?比HSE启动速度快,但精确度略差
?典型启动稳定时间:2.2us
?精度校准
?出厂校准值,存放在HSICAL[7:0]@RCC_CR
?应用中,用户可以用HSITRIM[4:0]@RCC_CR来调整
?参见AN2868获得HSI校准详情和技巧
13
内部低速时钟LSI
?低功耗时钟源
?使能/关闭控制:LSION@RCC_CSR
?就绪标志:LSIRDY@RCC_CSR
?可以停止和待机模式下继续工作
?为RTC和IWDG提供时钟
?典型值32KHz,范围[17KHz,47KHz]
?功耗典型值:0.65uA
?启动稳定时间典型值:85uS
14
总线时钟和时钟失效管理
HSI
HSE
PLLCLKMCO1/1..5
LSE
SYSCLK
HSE
PLLCLKMCO2/1..5
PLLI2S
LSIRC
32.768KHz/2,to31
LSEOSc
OSC32_IN
OSC32_OUT
~32KHzIWDGCLK
RTCCLK
TIM5IC4
HSE
/
2,
20
MACTXCLK
MACRXCLKMACRMIICL
KUSBHS
ULPIclock
/P
/Q
/R
xN
PLLI2S
I2SCLK
Ext.Clock
SPI2S_CKI
N
PLLI2SCLK
VCO
PCLK1
upto30MHz
If(APB2pres=1)
x1Else
x2
If(APB1pres
=1)x1
Elsex2
PCLK2
upto60MHz
TIMxCLK
TIM2..7,12..14
APB1
Prescaler
/1,2,4,8,16
TIMxCLK
TIM1,8..11
APB2
Prescaler
/1,2,4,8,16
HCLKup
to120MHz
AHBPrescaler
/1,2…512
/8SysTick
PLL48CLK(USBFS,SDIO&RNG)
CSS
HSEOscOSC_OUT
OSC_IN
4-26MHz
PLLCLK
HSIRC16MHz
/MHSE
HSI
SYSCLK
120MHz
max
/P
/Q
/R
VCO
xN
PLL
Ethernet
PHY
USB2.0
PHY
15
时钟安全管理CSS
?目标:对HSE时钟的监测,防止因时钟失效造成
系统出错甚至死机的严重后果
?不仅监测外部晶振HSE
?旁路HSE时,也监测外部时钟源
?一旦HSE失效:
?自动关闭HSE
?如果系统时钟直接或间接来自HSE,则它被自动切换到HSI
?如果HSE是PLL的输入,则PLL和PLLI2S也被关闭如果使能
?HSE恢复后,需重新配置PLL等
?该事件送到高级定时器TIM1和TIM8的刹车控制
?常用于电机控制
?产生CSSI中断,告知用户作相应处理
?该中断连至NMI不可屏蔽中断
?用户需要通过设置CSSC@RCC_CIR来清除中断标志
16
CSS应用举例:系统时钟的监控和切换
?启动时钟失效检测
?RCC_ClockSecuritySystemCmd(Enable);(失效事件连到不可屏蔽的NMI)
?HSE时钟失效时,产生NMI中断
?VoidNMIException(void)
?{
?if(RCC_GetITStatus(RCC_IT_CSS)!=RESET)
?{//HSE、PLL已被硬件自动关闭
?……..//用户可以在此添加应用相关的保护代码
?/下面为HSE恢复做准备,一旦HSE恢复将产生对应中断/
?//
?RCC_HSEConfig(RCC_HSE_ON);//再次手动打开HSE
?RCC_ITConfig(RCC_IT_HSERDY,ENABLE);
?RCC_ITConfig(RCC_IT_PLLRDY,ENABLE);
?//
?RCC_ClearITPendingBit(RCC_IT_CSS);//清除中断挂起位
?}
?}
?在RCC的中断处理程序中,再对HSE和PLL作相应处理
?使能PLL
?配置系统时钟来自HSE或PLL输出
17
PLL
HSI
HSE
PLLCLKMCO1/1..5
LSE
SYSCLK
HSE
PLLCLKMCO2/1..5
PLLI2S
LSIRC
32.768KHz/2,to31
LSEOSc
OSC32_IN
OSC32_OUT
~32KHzIWDGCLK
RTCCLK
TIM5IC4
HSE
/
2,
20
MACTXCLK
MACRXCLKMACRMIICL
KUSBHS
ULPIclock
/P
/Q
/R
xN
PLLI2S
I2SCLK
Ext.Clock
SPI2S_CKI
N
PLLI2SCLK
VCO
PCLK1
upto30MHz
If(APB2pres=1)
x1Else
x2
If(APB1pres
=1)x1
Elsex2
PCLK2
upto60MHz
TIMxCLK
TIM2..7,12..14
APB1
Prescaler
/1,2,4,8,16
TIMxCLK
TIM1,8..11
APB2
Prescaler
/1,2,4,8,16
HCLKup
to120MHz
AHBPrescaler
/1,2…512
/8SysTick
PLL48CLK(USBFS,SDIO&RNG)
CSS
HSEOscOSC_OUT
OSC_IN
4-26MHz
PLLCLK
HSIRC16MHz
/MHSE
HSI
SYSCLK
120MHz
max
/P
/Q
/R
VCO
xN
PLL
Ethernet
PHY
USB2.0
PHY
主PLL输出1产生高速系统时钟;
输出2产生48MHz给USB;
PLL2产生I2S专用精准时钟
18
两个PLL各司其职
?两个PLL
?主PLL
?输出1:PLLCLK
(SYSCLK的三个备选之一,
24MHz~120MHz)
?输出2:PLL48CK(供USBFS、
SDIO和RNG使用48MHz)
?专供音频I2S使用的PLLI2S
?输出:PLLI2SCLK
?两个PLL时钟源相同:均来自HSI或者HSE
?进入低功耗模式或者HSE失效,两个PLL自动关闭
?PLL的倍频、分频因子要在使能PLL之前配置
19
PLL的配置和使用
HSE
HSI
PLLSRC
PLLinput
clock/M
VCOinput
clock
N
N
/Q
/P
/RVCOoutputclock
VCOoutput
clock
PLL
PLLI2S
PLL48CLK
PLLCLK
PLLI2SCLK
两个PLL
共用的配置
输入频率的范围:
0.95~2MHz
输入频率的范围:
0.95~1.05MHz
Max=48MHz
[24MHz,120MHz]
Max=216MHz
20
PLL扩频时钟产生器(SSCG)
?只针对主PLL的SSCG
?目的:控制和减小EMI
?原理:采用一个频率很低的信号(典型范围在30KHz到
60KHz之间)对系统时钟进行频率调制。由此产生一个
具有边带谐波的频谱。窄带周期性时钟被有意扩展到宽
带,在基频和谐波频率中包含的峰值能量就相应减小
?中心扩频调制
?向下扩频调制
?举例:100MHz的时钟信号,0.5%的调制
?99.5MHz~100.5MHz之间进行调制,称为“中心0.5%的调制”
?为避免超出系统的最高频率,时钟信号通常在
99.5MHz~100MHz范围之间变化,称为“向下扩展频谱”
?控制寄存器
21
SSCG的应用示意
22
时钟信号输出
HSI
HSE
PLLCLKMCO1/1..5
LSE
SYSCLK
HSE
PLLCLKMCO2/1..5
PLLI2S
LSIRC
32.768KHz/2,to31
LSEOSc
OSC32_IN
OSC32_OUT
~32KHzIWDGCLK
RTCCLK
TIM5IC4
HSE
/
2,
20
MACTXCLK
MACRXCLKMACRMIICL
KUSBHS
ULPIclock
/P
/Q
/R
xN
PLLI2S
I2SCLK
Ext.Clock
SPI2S_CKI
N
PLLI2SCLK
VCO
PCLK1
upto30MHz
If(APB2pres=1)
x1Else
x2
If(APB1pres
=1)x1
Elsex2
PCLK2
upto60MHz
TIMxCLK
TIM2..7,12..14
APB1
Prescaler
/1,2,4,8,16
TIMxCLK
TIM1,8..11
APB2
Prescaler
/1,2,4,8,16
HCLKup
to120MHz
AHBPrescaler
/1,2…512
/8SysTick
PLL48CLK(USBFS,SDIO&RNG)
CSS
HSEOscOSC_OUT
OSC_IN
4-26MHz
PLLCLK
HSIRC16MHz
/MHSE
HSI
SYSCLK
120MHz
max
/P
/Q
/R
VCO
xN
PLL
Ethernet
PHY
USB2.0
PHY
两个MCO输出
23
时钟输出
时钟输出引脚分频因子时钟信号备注
MCO1PA.8MCO1PRE[2:0]/1…/5
HSI
1.对应GPIO应该配置
成AF-PP模式
2.受限于GPIO本身输
出带宽,输出时钟信
号不能超过100MHz
LSE
HSE
PLL
MCO2PC.9MCO2PRE[2:0]/1…/5
HSE
PLL
SYSCLK
PLLI2S
24
实时时钟和独立看门狗时钟
HSI
HSE
PLLCLKMCO1/1..5
LSE
SYSCLK
HSE
PLLCLKMCO2/1..5
PLLI2S
LSIRC
32.768KHz/2,to31
LSEOSc
OSC32_IN
OSC32_OUT
~32KHzIWDGCLK
RTCCLK
TIM5IC4
HSE
/
2,
20
MACTXCLK
MACRXCLKMACRMIICL
KUSBHS
ULPIclock
/P
/Q
/R
xN
PLLI2S
I2SCLK
Ext.Clock
SPI2S_CKI
N
PLLI2SCLK
VCO
PCLK1
upto30MHz
If(APB2pres=1)
x1Else
x2
If(APB1pres
=1)x1
Elsex2
PCLK2
upto60MHz
TIMxCLK
TIM2..7,12..14
APB1
Prescaler
/1,2,4,8,16
TIMxCLK
TIM1,8..11
APB2
Prescaler
/1,2,4,8,16
HCLKup
to120MHz
AHBPrescaler
/1,2…512
/8SysTick
PLL48CLK(USBFS,SDIO&RNG)
CSS
HSEOscOSC_OUT
OSC_IN
4-26MHz
PLLCLK
HSIRC16MHz
/MHSE
HSI
SYSCLK
120MHz
max
/P
/Q
/R
VCO
xN
PLL
Ethernet
PHY
USB2.0
PHY
25
RTC和IWDG的时钟
?RTC时钟源,三个可选
?LSE
?只有LSE属于电池备份域
?低功耗下可配置是否仍然工作
?即使VDD掉电只要VBAT还在RTC仍然工作
?LSI
?一旦VDD掉电,RTC和AWU不能工作
?HSE分频
?不超过1MHz
?一旦VDD掉电,RTC和AWU不能工作
?IWDG唯一时钟源
?LSI
?低功耗模式下可配置是否仍然工作
?一旦IWDG被打开,LSI就强制使能,不能关闭
26
培训内容
?复位源
?系统复位
?电源复位
?备份域复位
?时钟模块
?时钟树
?各时钟信号及其特性
?PLL的配置以及扩频技术(新增)
?时钟信号的输出
?时钟测量
?STM32F1和STM32F2时钟特性比较
27
内外时钟的测量
TIM5
counter
IC4
GPIO
RTC_OUT
LSE
LSI
TIM11
counter
IC1
GPIO
HSE_RTC
TI1RMP@TIM11_OR
TI4RMP@TIM5_OR
HSI或HSE
驱动TIM的
时基计数器
LSE连到T5C4,可用来精确测量HSI
>>HSI作为系统时钟,驱动TIM5的计数器
>>通过两个LSE上升沿之间的counter计数值获得HSI当前精确
频率(和一样的LSE精度)
>>用户校准存放在HSITRIM[4:0]
>>LSI连到T5C4,可被HSI或HSE测量
>>LSI典型值32KHz,有较大离散性[17KHz,47KHz]
>>HSI或者HSE作为系统时钟,驱动TIM5的计数器,以HSI或
HSE的精度测量LSI频率,由此计算IWDG最大喂狗周期
HSE_RTC连到T11C1
>>HSI作为系统时钟,可以粗略测量外部晶振的值
28
培训内容
?复位源
?系统复位
?电源复位
?备份域复位
?时钟模块
?时钟树
?各时钟信号及其特性
?PLL的配置以及扩频技术(新增)
?时钟信号的输出
?时钟测量
?STM32F1和STM32F2时钟特性比较
29
时钟模块特性比较
STM32F-2STM32F-1
HSE晶振
4~26MHz晶振和负载电容要尽可能靠近引脚以
减小输出失真和启动稳定时间;负载值的选择
取决于所选的晶振
4~16MHz&
3~25MHz
HSE外部时钟源
1~50MHzTyp.=8MHz外部时钟信号(占空比
50%的方波/正弦波/三角波)从OSC_IN引脚输入;
OSC_OUT悬空高阻
LSE晶振32.768KHz低功耗但精确度高的时钟源32.768KHz
LSE外部时钟源Max=1000KHztyp.=32.768KHz外部时钟信号从OSC_IN引脚输入;OSC_OUT悬空高阻
HSI谐振器
16MHz比HSE启动时间快,但即使校准后精确
度仍不及HSE;HSICalib[7:0]&HSITrim[4:0]
HSE失效后该HIS可以作为备份时钟?CSS
8MHz
LSI谐振器32KHz低功耗时钟,在Stop或Standby模式下仍可工作,用来驱动IWDG和自动唤醒40KHz
一旦通过硬件选项字节或者软件开启了IWDG,LSI就被强制使能且不能关闭;稳定时间后,LSI向IWDG提供时钟
30
时钟模块特性比较(2)
STM32F-2STM32F-1
AHB/APB1/APB2
总线最高频率120MHz/30MHz/60MHz72/36/72MHz
PLLPLL1输出系统时钟和48MHz时钟;PLL2输出专供音频I2S使用的时钟一个PLL或者三个PLL
时钟输出引脚MCO1(PA.8)MCO2(PC.9)最高输出频率100MHzMCO(PA.8)最高输出频率50MHz
扩频时钟发生支持,以减小设备产生的EMI
内外时钟校准通过T5C4和T1C11可以校准板上多个时钟源输出通过T5C4校准LSI
时钟安全系统CSS
检测到HSE失效:
?产生NMI中断并通知TIM1/8的刹车输入
?切换到HSI(如果HSE产生系统时钟)
?关闭PLL(如果HSE驱动PLL并产生系统时钟)
31
寄存器组比较
STM32F2STM32F1
CR主PLL和音频PLL的使能和就绪标志唯一一个PLL的使能和就绪标志
CSS使能/HSI出厂校准值和用户调整值/HSI使能和就绪标志/HSE使能-旁路-就绪标志
PLLCFGR两个PLL共用的分频因子M和时钟源选择/主PLL的N-Q-P因子
CFGR
两个MCO各自的选择和分频因子/I2S时钟源选择/
HSE给RTC提供时钟的分频因子
唯一一个MCO的选择/USB-ADC的预分频因子/
PLL的时钟源选择-预分频-倍频因子
系统时钟选择和标志/APB1-APB2-HCLK时钟各自的分频因子
CIR两个PLL(主PLL和音频PLL)只有唯一一个PLL
PLL-HSE-HIS-LSE-LSI准备就绪的标志位(r)-中断使能控制(rw)-清除标志位(w)/CSS标志-清除
XRSTRAHB1-AHB2-AHB3-APB1-APB2RSTRAPB1-APB2RSTR
XENRAHB1-AHB2-AHB3-APB1-APB2ENRAHB-APB1-APB2ENR
XLPENRAHB1-AHB2-AHB3-APB1-APB2LPENR
BDCR备份域软件复位/RTC使能-时钟选择/LSE旁路-使能-就绪标志
CSRBOR复位标志
低功耗管理-窗口/独立看门狗-软件-POR/PDR-外部引脚复位标志/清除复位标志/LSI使能-就绪信号
SSCGR作用于主PLL的时钟频谱延展控制
PLLI2SCFGR对音频PLL的N-R因子控制
参见低功耗章节的“时钟门控技术”
下划线标志出的寄存器处于备份域,复位后被写保护;不会被内部或外部复位影响;只受备份域复位影响
|
|