STM32单片机:MSI(内部多频率时钟)和HSI48的编程(STM32L4xx)

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

btzhy

您的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值