AT32系统时钟的误差
01 运行频率
一、前言
前天测试 AT32F421单片机的时候, 设置其内部时钟频率为 120MHz, 但是输出串口波特率不太对。 必须将波特率设置为 100000, 才能够对应输出 115200。 这说明其内部的系统时钟不准确, 比设定高了11%左右。 下面准备将系统时钟通过管脚输出, 使用示波器实际测量内部系统时钟究竟是多少。
二、电路设计
利用AT32单片机设计助手, 使能内部时钟输出, 便可以通过PA9 管脚测量到芯片时钟, 下面设计电路图。
电路的核心是 AT32F421, 将它的 时钟输出信号引至 PIO端口。 使用单面板制作测试电路。 一分钟之后得到测试电路板。 电路板制作的非常完美。
AD\Test\2024\April\TestAT32F421G8U7.PcbDoc
三、焊接测试
焊接电路板, 对其进行清洗。 使用探针夹子将ST-LINK 与单片机相连。 下载测试程序。 查看一下系统时钟信号。 由于信号频率非常高, 接近示波器带宽的一半了。 所以看到信号近似为 正弦波。 现在终于可以破案了, 系统时钟频率为 131.5MHz左右, 比设定的 120MHz 高了大约11%左右。
四、低温伺候
下面, 我不怀好意的拿出上午刚刚到货的制冷剂。 准备给AT32单片机降降温, 看看对于它内收震荡频率是否有很大的影响。 就这样直接对它进行喷射制冷剂。 可以看到单片机输出时钟信号的波形和频率似乎并没有太大的变化。 再测试一次, 频率仍然维持在 135MHz左右, 这点频率的改变并不能够影响单片机的波特率。
为了进一步得到AT32单片机内部晶体震荡的温度特性, 下面使用 FA-2频率计测量芯片内部时钟频率。 还是使用快速制冷剂对芯片降温, 观察对应的频率变化。 最后可以看到, 频率信号在 134.3MHz上下波动。 并没有太多的偏移。
※ 总 结 ※
本文测试了 AT32单片机内部时钟的频率, 与它自身设定的 120MHz不同的是, 实际震荡频率为 134MHz, 增加大约 11.6%, 这造成了 单片机串口通讯异常。 现在看来, AT32内部振荡器频率实在是偏差太大。 但它对应的温度特性还是相当的稳定的。 那么问题来了, 为什么 AT32单片机内部时钟频率会误差这么大呢?