打印
[信息]

【实战经验】如何用LSE校准STM32F4内部RC振荡器

[复制链接]
3009|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 香水城 于 2017-8-16 12:38 编辑

如何用LSE校准STM32F4内部RC振荡器
问题:
此问题由客户提出,客户在使用STM32F411 开发产品的时候,采用的是HIS 作为主时钟,同时使用了UART 与其他MCU 进行异步通信.客户发现部分产品UART 不能正常通信.

调研:
1. 通过使用示波器来测量UART 的TX 的波特率,发现误差较大,查看原理图和代码发现他们使用
HIS 作为主时钟,且没有使用PLL 来倍频.
2. 由于UART 直接用HIS 作为时钟源,所以考虑通过使用LSE 校准STM32F411 的HIS 值来使得
UART 波特率准确.
3. 我们STM32 官方提供了基于STM32F0 的HIS 校准方法AN4067(基于STM32Cube).其基本原理如
下写的很清楚:


4. 所以我们将其移植到STM32F4 上:
a. 替换STM32F0HAL 为STM32F4HAL
b. 修改工程器件相关的配置.
c. 去掉与STM32F4 HIS 校准无关的文件,只保留his.c/h
d. 修改main.c 的主程序,初始化校准前频率测试校准后频率测试.
HSIFrequencyBeforeCalib 为校准前的频率值,可以在IAR 的Watch 窗口查看.
 HSIFrequencyAfterCalib 为校准后的频率值,可以在IAR 的Watch 窗口查看.
e. 定义使用USE_REFERENCE_LSE 和__HSI2LSECALIBRATE_TEST__,使能使用
LSE 校准HIS 功能函数.


d.详细代码参考附件源码例程.

结论:
1. STM32 MCU 内部高速时钟是可以通过外部提供的精确时钟源进行校准的.
2. 我们提供一篇应用笔记和参考代码给客户演示如何校准HIS,基于STM32Cube 的良好的可
移植行,很方便的从STM32F0 移植到其他STM32 产品上面.
3. 如果客户在使用异步通信且没有使用PLL 作为时钟源,建议在系统启动的时候增加校准代
码来增强系统的容错能力.

对应PDF和代码:如何用LSE校准STM32F4内部RC振荡器
更多实战经验请看:【ST MCU实战经验汇总贴】

沙发
598330983| | 2016-1-8 17:22 | 只看该作者
LSE 的典型频率为 32.768KHZ。
在 STM32 中,有五个时钟源,为 HSI、HSE、LSI、LSE、PLL。
LSE一般是比较精准的吧?

使用特权

评论回复
板凳
zbc920833764| | 2017-6-29 17:11 | 只看该作者
XVEXILE

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:STM32技术专家

596

主题

17108

帖子

288

粉丝