OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 635|回复: 0

STM32F1/GD32F1内部8MHz晶振校准方法

[复制链接]

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2014-8-14
在线时间
129 小时
发表于 2024-4-28 09:03:37 | 显示全部楼层 |阅读模式
如果在项目中,不管出于什么原因不得不使用内部8MHz的时钟来作为主频率,都需要对时钟进行一个大致的校准,我看论坛好像没相关的帖子,本帖就仅记录一下


STM32F1和GD32F1校准的方法完全一致
校准步骤为
1.使用内部8MHz提供时钟。
2.使用外部稳定方波,产生一个1Hz的信号。
3.单片机捕捉该信号(外部中断),计算其周期(定时器)
4.将计算结果与理论标准周期进行计算,并写入校准寄存器。

方法
1.使用信号发生器,输出一个1Hz的方波,幅度根据电路而定。
2.单片机使用内部8MHz提供时钟。
3.初始化一个定时器,可以不使用中断,每100us计数一次即可满足要求。
4.初始化一个外部中断,采用上升或下降沿触发,进入一次记录一下定时器里边的计数值。
5.记录2次后,可计算其周期。
6.根据周期计算与标准8MHz的偏差,然后调整HSITRIM寄存器值,此寄存器默认值为16,可加可减,步进为40KHz,在RCC控制器里。
1.png

STM32F1调用void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue)
2.png

GD32F1调用void rcu_irc8m_adjust_value_set(uint8_t irc8m_adjval)
3.png

以下为在GD32F1上的实测结果
4.png
可以看到校准前后的对比,虽然不可能非常精确到8MHz,但也好了很多了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 00:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表