MSI 时钟:
MSI时钟信号由内部RC振荡器产生。其频率范围可以通过软件使用时钟控制寄存器(RCC_CR)中的(MSIRANGE[3:0])位(图1)进行调整。有12个频率范围可供选择:100kHz、200kHz、400kHz、800kHz、1 MHz、2MHz、4MHz(默认值)、8MHz、16MHz、24MHz、32MHz、48MHz。
(图1)
MSI时钟在从:复位、待机唤醒、关机低功耗模式唤醒后默认用作系统时钟。复位后,MSI频率设置为默认值4MHz。
从停止模式(停止0、停止1、停止2)唤醒后,可以选择MSI时钟作为系统时钟。如果HSE晶体振荡器发生故障,它也可以用作备用时钟源辅助时钟。
MSI RC振荡器具有低成本(无外部组件)低功耗时钟源的优点。此外,当与LSE一起在PLL模式下使用时,它提供了一个非常精确的时钟源,可供USB FS设备使用,并为主PLL供电,使系统以最高80MHz的速度运行。
时钟控制寄存器(RCC_CR)中的(MSIRDY)标志(图1)指示MSI RC是否稳定。启动时,MSI RC在硬件设置该位之前不会输出时钟。MSI RC可以通过使用时钟控制寄存器(RCC_CR)中的(MSION)位(图1)来打开和关闭。
通过LSE硬件自动校准MSI(PLL模式):
当应用中存在32.768kHz外部振荡器时,可以通过在时钟控制寄存器(RCC_CR)中设置(MSIPLLEN)位(图1)来将MSI配置为PLL模式。当配置为PLL模式时,MSI会自动校准自身,这要归功于LSE。此模式适用于所有MSI频率范围。在48MHz时,PLL模式下的MSI可用于USB FS设备,从而节省了对外部高速晶体的需求。
通过软件校准MSI:
由于制造工艺的变化,MSI RC振荡器的频率可能因芯片而异,这就是为什么每个设备在25°C的环境温度下进行工厂校准,精度为1%。复位后,出厂校准值加载到内部时钟源校准寄存器(RCC_ICSCR)的(MSICAL[7:0])位(图2)中。如果应用受到电压或温度变化的影响,可能会影响RC振荡器的频率。您可以通过使用(RCC_ICSCR)寄存器中的(MSITRIM[7:0])位(图2)来调整应用中的MSI频率。有关如何测量MSI频率变化来校准MSI的频率,后续文章中再做详解。
(图2)
HSI48 时钟:
HSI48时钟信号由内部48 MHz RC振荡器产生,可直接用于USB、随机数发生器(RNG)以及SDMMC。
内部48MHz RC振荡器主要用于通过特殊的时钟恢复系统(CRS)电路为USB外围设备提供高精度时钟。CRS可以使用USB SOF信号、LSE或外部信号来快速地动态调整其振荡频率。一旦系统进入Stop 或Standby 模式,它就会被禁用。当不使用CRS时,HSI48 RC振荡器在其默认频率上运行,该频率受制造工艺变化的影响。
时钟恢复RC寄存器(RCC_CRRCR)中的(HSI48RDY)标志(图3)指示HSI48 RC振荡器是否稳定。启动时,HSI48 RC在硬件设置该位之前振荡器的时钟不会输出。
可以使用时钟恢复RC寄存器(RCC_CRRCR)中的(HSI48ON)位(图3)打开和关闭HSI48。
(图3)