单片机时钟与PWM频率的精度

单片机时钟频率与PWM信号精度

 

01 PWM频率


一、前言

  昨天测试了基于手表晶体选频放大电路,  用于竞赛车模室外计时模块。 经过实际测量, 这种音叉晶体选频电路的谐振特性,   所对应的增益中心频率, 是在 32766Hz,  但是, 信号源所产生的信号频率却比这个频率高。 下面将会讨论一下, 究竟单片机系统时钟频率在多大时, 可以产生最接近 32766Hz 的PWM信号。

G7M1724722776_1920_1080.MP4|_-7

二、理论分析

  这是 STM32F103 单片机系统时钟配置框图。 外部 8MHz 的晶体震荡信号, 通过分频之后输入到后面的锁相环, 再经过倍频之后, 可以获得 4MHz 到 64MHz 的系统时钟。  如果晶体震荡信号不分频,  最大可以得到 72MHz 的系统时钟。  这样, 系统时钟就会有17种不同的频率。  如果 以 32.766kHz 为中心频率, 可以得到 PWM 实际输出频率。  这样, 便可以得到每一种系统频率下的PWM与中心频率之间的误差。

G9M1724719479_1920_1080.MP4|_-9

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2024-08-27
#
# Note:
#============================================================
from headm import *
fdim = [4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,72]
err = []
fpwm = 32766
for f in fdim:
    ff = int(f*1e6/fpwm+0.5)
    fff = int(f*1e6/ff)
    epwm = fpwm-fff
    printff(f, ff, fpwm, epwm)
    err.append(epwm)
plt.plot(fdim, err, lw=3)
plt.xlabel("Fsys(Mhz)")
plt.ylabel("Err(Hz)")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

  这里给出了不同的系统时钟下, 计算出来 PWM 频率与所设定的 中心频率之间的误差。  可以看到在系统时钟为 52MHz的时候,  经过分频之后所得到的 PWM 的频率和 32.766kHz 的误差可以达到 0Hz。
G3M1724720054_1920_1080.MP4|_-3

▲ 图1.2.1 不同的系统频率和PWM频率和中心频率之间的误差

▲ 图1.2.1 不同的系统频率和PWM频率和中心频率之间的误差

三、实际测量结果

  下面, 在实际电路板上进行测试。  由于所使用的 8MHz 的晶体本身也有一定的误差,  所以, 实际测试的PWM 频率和理论值之间存在大约 4Hz 的差异。  原本 系统频率在56MHz 时 PWM频率与 32.766kHz 误差最小。  但实际上, 系统频率在44MHz时, 误差最小。

G5M1724722048_1920_1080.MP4|_-5

系统时钟TIM1分频数量PWM理论数值PWM实测频率中心频率误差
4122327863279024
8244327863279024
12366327863279024
16488327863279024
20610327863279024
24732327863279024
288553274832752-14
329773275332756-10
3610993275732760-6
4012213276032763-3
4413433276232765.90.1
48146532764327682
5215873276632769.73.3
56170932767327714
6018313276832772.46.4
6419533277032773.67.6
7221973277132775.49.4

 

  结 ※


  文讨论了单片机的频率与PWM频率精度之间的关系。  如果希望输出 32.766kHz 的PWM频率, 通过实际测试,  可以看到在 单片机系统时钟频率为 44MHz 时误差最小。  通过修正之后, 所产生的PWM频率非常接近于32.766kHz,  在使用音叉晶体选频电路中, 的确所获得的选频放大信号最大。  这也可以在一定程度上减少驱动无线线圈的功率。   频率调准了, 也提高了接收模块的灵敏度。

G7M1724722518_1920_1080.MP4|_-7


■ 相关文献链接:

● 相关图表链接:

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卓晴

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值