昨天测试了基于手表晶体选频放大电路,用于竞赛车模室外计时模块。经过实际测量,这种音叉晶体选频电路的谐振特性, 所对应的增益中心频率,是在 32766Hz,但是,信号源所产生的信号频率却比这个频率高。下面将会讨论一下,究竟单片机系统时钟频率在多大时,可以产生最接近 32766Hz 的PWM信号。
二、理论分析
这是 STM32F103 单片机系统时钟配置框图。外部 8MHz 的晶体震荡信号,通过分频之后输入到后面的锁相环,再经过倍频之后,可以获得 4MHz 到 64MHz 的系统时钟。如果晶体震荡信号不分频,最大可以得到 72MHz 的系统时钟。这样,系统时钟就会有17种不同的频率。如果 以 32.766kHz 为中心频率,可以得到 PWM 实际输出频率。这样,便可以得到每一种系统频率下的PWM与中心频率之间的误差。
这里给出了不同的系统时钟下,计算出来 PWM 频率与所设定的 中心频率之间的误差。可以看到在系统时钟为 52MHz的时候,经过分频之后所得到的 PWM 的频率和 32.766kHz 的误差可以达到 0Hz。
▲ 图1.2.1 不同的系统频率和PWM频率和中心频率之间的误差
三、实际测量结果
下面,在实际电路板上进行测试。由于所使用的 8MHz 的晶体本身也有一定的误差,所以,实际测试的PWM 频率和理论值之间存在大约 4Hz 的差异。原本 系统频率在56MHz 时 PWM频率与 32.766kHz 误差最小。但实际上,系统频率在44MHz时,误差最小。
系统时钟 | TIM1分频数量 | PWM理论数值 | PWM实测频率 | 中心频率误差 |
---|---|---|---|---|
4 | 122 | 32786 | 32790 | 24 |
8 | 244 | 32786 | 32790 | 24 |
12 | 366 | 32786 | 32790 | 24 |
16 | 488 | 32786 | 32790 | 24 |
20 | 610 | 32786 | 32790 | 24 |
24 | 732 | 32786 | 32790 | 24 |
28 | 855 | 32748 | 32752 | -14 |
32 | 977 | 32753 | 32756 | -10 |
36 | 1099 | 32757 | 32760 | -6 |
40 | 1221 | 32760 | 32763 | -3 |
44 | 1343 | 32762 | 32765.9 | 0.1 |
48 | 1465 | 32764 | 32768 | 2 |
52 | 1587 | 32766 | 32769.7 | 3.3 |
56 | 1709 | 32767 | 32771 | 4 |
60 | 1831 | 32768 | 32772.4 | 6.4 |
64 | 1953 | 32770 | 32773.6 | 7.6 |
72 | 2197 | 32771 | 32775.4 | 9.4 |
※ 总 结 ※
本文讨论了单片机的频率与PWM频率精度之间的关系。如果希望输出 32.766kHz 的PWM频率,通过实际测试,可以看到在 单片机系统时钟频率为 44MHz 时误差最小。通过修正之后,所产生的PWM频率非常接近于32.766kHz,在使用音叉晶体选频电路中,的确所获得的选频放大信号最大。这也可以在一定程度上减少驱动无线线圈的功率。频率调准了,也提高了接收模块的灵敏度。