0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记|如何在 STM32U5 系列上校准内部 RC 振荡器

STM32单片机 来源:未知 2022-12-12 21:35 次阅读





目录预览




0.前言

1.STM32U5 系统时钟

2.内部 RC 振荡器校准

3.内部 LSI 振荡器测量

4.X-CUBE-RC-CALIB 演示

5.结论


0.前言

STM32U5 系列微控制器内嵌两个可选为系统时钟源的内部 RC 振荡器。它们是 HSI16(高速内部)和 MSI(多速内部)振荡器,其可驱动两个独立的输出:MSIS(用于系统时钟)和 MSIK(用于某些外设作为内核时钟)。HSI16 振荡器的典型频率为 16MHz。MSI 振荡器为多速低功耗时钟源。STM32U5 系列微控制器(称为 STM32U5 器件)具有三个辅助内部时钟源:

• LSI:32kHz(内部低速)

• HSI48:48MHz(内部高速),可直接用于 USB、RNG(真随机数发生器)和 SDMMC(SD/SDIO MMC 卡主机接口)。

• SHSI:48MHz(+抖动)内部安全 RC 振荡器,专用于为 SAES 外设提供时钟。

工作温度对 RC 振荡器的精度有影响。在 30°C 时,HSI16 精度为±0.5%,MSI 精度为±0.6%,HSI48 精度为±4%。但在–40°C 至125°C 的温度范围内,精度会降低。为补偿温度对内部 RC 振荡器精度的影响,STM32U5 器件内置一些功能用于校准 HSI16、MSI 和 HSI48 振荡器及测量 LSI 振荡器频率。


当系统中有 32.768kHz 的 LSE(低速外部)时钟源可用时,MSI 振荡器的频率可通过硬件自动微调,从而达到优于±0.25%的精度。这种使用 LSE 进行的自动硬件校准被称为 PLL(锁相环)模式。


本应用笔记尚未对 PLL 模式进行介绍,仅侧重于用户微调。本文档还详细介绍了如何校准 HSI16、MSI 和 HSI48 内部 RC 振荡器,方法如下:

• 基于找到具有最小误差的频率的方法

• 基于找到最大允许频率误差的方法

• 制定一个预先测量值的表然后在其中搜索相应变化的方法LSI 振荡器的测量是通过将振荡器连接到定时器输入捕获来实现的。


本应用笔记随附的 X-CUBE-RC-CALIB 扩展包包含执行这些内部振荡器校准的源代码,以及运行示例所需的所有嵌入式软件模块。


1.STM32U5 系统时钟

STM32U5 器件具有下列时钟源可用于驱动系统时钟:

• HSI16:16 MHz 高速内部 RC 振荡器时钟

• HSE:4 至 50 MHz 高速外部振荡器时钟。

• MSI(MSIS):100 kHz 到 48 MHz 多速内部 RC 振荡器时钟

• PLL:1 MHz 到 160 MHz 锁相环(PLL),由 HSI16、MSI 或 HSE 振荡器提供时钟HSI16 振荡器的典型频率为 16 MHz,功耗为 150 μA。


MSI RC 振荡器基于四个内部 RC 振荡器:MSIRC0 = 48 MHz、MSIRC1 = 4 MHz、MSIRC2 = 3.072 MHz、MSIRC4 = 400 kHz。每个 MSIRCx 振荡器具有四个分频器:/1、/2、/3 和/4。MSI 共提供了 16 个频率范围,可选择用于两种输出:MSIS(用于系统时钟)和 MSIK(用于外设内核时钟)。


MSI 的设计为工作电流与频率成正比(请参考产品手册以获得 MSI 功耗与所选频率范围之间关系的更详细信息),当 CPU 在低频运行时,可最小化内部振荡器功耗。在从复位重启或待机、关断低功耗模式唤醒后,MSIS 时钟被用作系统时钟。从停机模式唤醒后,可选择 MSI 时钟而不是 HSI16 作为系统时钟。


HSI48 时钟信号由内部 48 MHz RC 振荡器生成,可直接用于 USB、RNG 和 SDMMC。内部 RC 振荡器(HSI16、MSI 和 HSI48)提供了一个低成本时钟源(无需外部元件)。它们还具有比外部振荡器更快的启动时间和更低的功耗。可校准 HSI16、MSI 和 HSI48 振荡器以提高其精度。但即使校准后,内部 RC 振荡器频率精度也不如外部晶振或陶瓷谐振器的频率精度(几十 ppm)高。


注:若外部振荡器发生故障,则 MSI 内部 RC 振荡器还可作为备份时钟源(辅助时钟)使用。


STM32U5 器件还嵌入了以下次级时钟源(不能用作系统时钟):

• LSI:32kHz 低速内部 RC,可在停机和待机模式下保持运行用于 IDWG(独立看门狗)、RTC 和 LCD。LSI振荡器无法校准,但可通过测量来评估任何频率偏差(由于温度和电压变化)。

• LSE 晶振:32.768 kHz 低速外部晶振 RC,可选地驱动 RTC(实时时钟

• HSI48:48 MHz 高速内部 RC,设计用于通过特制 CRS(时钟恢复系统)电路为 USB 外设提供高精度时钟。它还可驱动 RNG 和 SDMMC。

• MSIK:多速内部 RC 振荡器时钟,用于外设内核时钟(源自 MSIRCx 振荡器)

• SHSI:48 MHz 内部 RC 振荡器,专为 SAES 外设提供时钟


2.内部 RC 振荡器校准

由于生产过程的不同,每个器件的内部 RC 振荡器的频率都可能不同。因此,MSI 和 HSI16 RC 振荡器由意法半导体在 TA = 30 °C 时进行工厂校准。


复位后,工厂校准值自动加载到内部校准位中。可微调内部 RC 振荡器的频率,以在更宽的温度和供电范围内达到更好的精度。这就是微调位的作用。对于 HSI16 振荡器,复位后校准值加载于 HSICAL[11:0]中。


使用五个微调位 HSITRIM[4:0]进行微调。默认微调值为 16。增加/降低此微调值会增加/降低 HSI16 频率。HSI16 振荡器微调步长为 0.18%(约 29 kHz),具体如下:

• 将微调值写为 17 至 31 会增加 HSI16 频率。

• 将微调值写为 0 至 15 会降低 HSI16 频率。

• 将微调值写为 16,HSI16 频率会保持为默认值。下图显示了随校准值变化的 HSI16 振荡器行为。HSI16 振荡器频率随校准值增加(校准值 = 默认的 HSICAL[11:0]+ HSITRIM[4:0])。



对于 MSIRCx 振荡器(x = 0..3),复位后校准值加载于 MSICALx[4:0]位中。五个微调位 MSITRIM[4:0]使微调范围更宽。校准基于将默MSICALx[4:0](复位值)加上 MSITRIMx[4:0]。


结果存储在 MSICALx[4:0] = 默认 MSICALx[4:0] + MSITRIMx[4:0]中。


示例

假设默认的 MSI 校准值 MSICALx[4:0]为 0x10:

1.将0x010x0F和之间的值写入 MSITRIM[4:0],会使校准值 MSICALx[4:0]处于 MSICALx[4:0] = 0x10 + 0x01= 0x11 到 MSICALx[4:0] = 0x10 + 0x0F = 0x1F 的范围内。这些结果大于 0x10(默认的 MSICALx[4:0]值),因此 MSIRCx 频率增加 1 步(0x11 - 0x10)至 15 步(0x1F - 0x10)。


2. 将 0x11 和 0x1F 之间的值写入 MSITRIM[4:0],会使校准值 MSICALx[4:0]处于 MSICALx[4:0] = 0x10 + 0x11 =0x01 到 MSICALx[4:0] = 0x10 + 0x1F = 0x0F 的范围内。这些结果小于 0x10(默认的 MSICALx[4:0]值),因此 MSIRCx 频率降低 1 步(0x01)至 15 步(0x0F)。


3. 在 MSITRIM[4:0]中写入默认校准值 0x10 会导致校准值 MSICALx[4:0]等于MSICALx[4:0] = 0x10 + 0x10 = 0x00,因此 MSIRCx 频率会降低 16 步(最低频率)。


下图显示了 MSIRCx 相比于 MSICALx[4:0]在 4MHz 时的行为。


对于 HSI48 振荡器,复位后校准值加载于 HSI48CAL[8:0]中。使用六个微调位 TRIM[6:0](在 CRS_CR 寄存器中)进行微调。默认微调值为 64。增加/降低此微调值会增加/降低 HSI48 频率。


HSI48 振荡器微调步长为 0.12%(约 57 kHz),具体如下:

• 将微调值写为 65 至 127 会增加 HSI48 频率。

• 将微调值写为 0 至 63 会降低 HSI48 频率。

• 将微调值写为 64,HSI48 频率会保持为默认值。


下图显示了随校准值变化的 HSI48 振荡器行为。HSI48 振荡器频率随校准值增加(校准值 = 默认的 HSI48CAL[8:0]+ TRIM[6:0])。



篇幅有限仅展示部分,完整文档请点击“阅读原文”后下载
THE END


点击“阅读原文”,可下载原文档


原文标题:应用笔记|如何在 STM32U5 系列上校准内部 RC 振荡器

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44553

    浏览量

    634735
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355768

原文标题:应用笔记|如何在 STM32U5 系列上校准内部 RC 振荡器

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于斩波拓扑的高精度RC振荡器设计

    电子发烧友网站提供《基于斩波拓扑的高精度RC振荡器设计.pdf》资料免费下载
    发表于 12-04 16:29 0次下载

    STM32项目实战:基于STM32U5的智能大棚温控系统(LVGL),附项目教程/源码

    ”(基于STM32U5)今天小编来分享一个《智能大棚温控系统》的项目案例,硬件平台是STM32U5开发板+资源扩展板+显示触摸屏+仿真,项目的演示界面如下图所示。智能大棚温控系统项
    的头像 发表于 11-13 17:08 541次阅读
    <b class='flag-5'>STM32</b>项目实战:基于<b class='flag-5'>STM32U5</b>的智能大棚温控系统(LVGL),附项目教程/源码

    STM32项目实战:基于STM32U5的火灾报警系统(LVGL),附项目教程/源码

    小编来分享一个《火灾报警系统》的项目案例,硬件平台是STM32U5开发板+资源扩展板+显示触摸屏+仿真,项目的演示界面如下图所示。火灾报警系统项目,需要一个蜂鸣
    的头像 发表于 11-13 14:18 564次阅读
    <b class='flag-5'>STM32</b>项目实战:基于<b class='flag-5'>STM32U5</b>的火灾报警系统(LVGL),附项目教程/源码

    STM32项目实战:基于STM32U5的智能灯光控制系统(LVGL),附项目教程/源码

    )今天小编来分享一个《智能灯光控制系统》的项目案例,硬件平台是STM32U5开发板+资源扩展板+显示触摸屏+仿真,项目的演示界面如下图所示。智能灯光控制系统项目,需
    的头像 发表于 11-07 18:50 782次阅读
    <b class='flag-5'>STM32</b>项目实战:基于<b class='flag-5'>STM32U5</b>的智能灯光控制系统(LVGL),附项目教程/源码

    压控振荡器的工作原理是什么

    的应用。 1. 振荡器的基本概念 在讨论压控振荡器之前,我们需要了解振荡器的基本概念。振荡器是一种电子设备,能够产生周期性的电压或电流波形。这些波形可以是正弦波、方波、锯齿波等。 2.
    的头像 发表于 09-25 10:44 446次阅读

    何在MSP430™上实现内置振荡器的高精度定时

    电子发烧友网站提供《如何在MSP430™上实现内置振荡器的高精度定时.pdf》资料免费下载
    发表于 09-14 11:10 0次下载
    如<b class='flag-5'>何在</b>MSP430™上实现内置<b class='flag-5'>振荡器</b>的高精度定时<b class='flag-5'>器</b>

    文氏桥振荡器的原理和应用

    文氏桥振荡器(Wien Bridge Oscillator),又称文氏电桥振荡电路或RC桥式正弦波振荡器,是一种基于RC串并联网络实现的
    的头像 发表于 07-30 18:06 2511次阅读

    STM32H5STM32U5在trustzone上有哪些不同?

    我要做空调的空中升级FOTA的方案,需要加密,对于trustzone功能,采用那款芯片比较合适?STM32H5STM32U5在trustzone上有哪些不同?
    发表于 07-05 07:03

    AG32 时钟(外部时钟和片上内部振荡器)

    外部晶振 与 内部振荡器: mcu 和 cpld 联合编程时, 整颗芯片需要一颗外部晶振。 (芯片有内部振荡器, 但误差较大, 校准
    发表于 05-29 13:41

    什么是皮尔斯振荡器?皮尔斯振荡器电路如何工作?

    皮尔斯振荡器是石英晶体振荡器最常见的设计之一,皮尔斯振荡器在设计上与之前的 Colpitts 振荡器非常相似,非常适合使用晶体作为其反馈电路的一部分来实现晶体
    的头像 发表于 04-01 14:24 1839次阅读
    什么是皮尔斯<b class='flag-5'>振荡器</b>?皮尔斯<b class='flag-5'>振荡器</b>电路如何工作?

    STM32L476内部RC振荡器频偏超大的原因?怎么解决?

    量产几K台设备,出现一台STM32L476内部RC振荡器频率低了4.5%的故障板,引发高速串口通讯异常。 读了RCC_ICSCR寄存,0x
    发表于 03-28 07:20

    STM32U5,STM32WB及STM32L4开发板,哪个开发板拥有较多数量的ADC?

    请问,我现在需要开发一个项目,在这个项目中需要使用较多数量的传感(至少8个),这些传感需要进行信号采集,现在在使用STM32U5,STM32WB及
    发表于 03-20 08:01

    RC相移振荡器电路图分享

    RC相移振荡器是一种利用RC相移网络作为放大器的反馈回路,在特定频率下产生合适的相移以形成正反馈并产生振荡振荡器
    的头像 发表于 02-26 16:08 5064次阅读
    <b class='flag-5'>RC</b>相移<b class='flag-5'>振荡器</b>电路图分享

    基于STM32U5片内温度传感正确测算温度实战经验分享

    STM32内部都集成了一个温度传感STM32U5 也不例外。这个位于晶圆上的温度传感虽然不太适合用来测量外部环境的温度,但是用于监
    的头像 发表于 02-22 17:27 4164次阅读
    基于<b class='flag-5'>STM32U5</b>片内温度传感<b class='flag-5'>器</b>正确测算温度实战经验分享

    基于LL库实现STM32U5 LPTIM功能

    有人打算使用STM32U5系列片内LPTIM做低功耗模式唤醒。基于STM32 LL库组织代码,折腾几天后似乎连中断都进不了,想找找是否有现存LL库例程可以参考。
    的头像 发表于 01-07 14:12 1546次阅读
    基于LL库实现<b class='flag-5'>STM32U5</b> LPTIM功能