STC32F使用外部40MHZ晶体
01 STC32F外部晶体
一、前言
在昨天实验中, 为了确保 STC32F 采集信号速率保持恒定, 使用了一颗 24MHz 外部晶体作为单片机的时钟, 它安插在实验电路板的 PIN6, PIN7 管脚。 上电后, 经过软件初始化, 单片机的 PIN6, PIN7 管脚会出现高频振荡信号, 频率为 24MHz 左右, 电路中 LED 根据软件的功能会闪烁。
▲ 图1.1.1 外部晶体
下面使用 FA-2 频率计测量振荡信号频率, 频率数值为 24MHz, 而且非常稳定。 变化的部分只有0.1Hz。 接下来, 在相同的硬件和软件的情况下, 使用这颗 40MHz 的晶体, 替换掉 24MHz, ·测试一下是否可以直接替换。
二、替换结果
将 原来电路板上的 24MHz 的晶体, 替换成 40MHz, 会发现, 电路不工作了。 似乎因为测量的原因, 示波器没有能够显示测量的波形。 这究竟是什么原因呢?
下面, 将测量PIN7 管脚示波器引线移到 PIN6 管脚, 可以测量到一个低频信号。 这个信号的频率为 13.3MHz, 只有 40MHz 的 三分之一。 将测量频率的引线去除, 可以看到振荡信号幅值升高了。 再去除示波器引线, 然后重新接上, 可以观察到频率回到了 40MHz。 但此时, 单片机并不运行。 估计是因为在其内部没有设置程序读取 等待时间。 这样内部程序运行不正常。
三、修改软件
根据 STC32F 数据手册关于外部振荡器控制寄存器的说明, 对于外部晶振大于 24M时, 需要设置 XCFILTER 为 01, 这样适合超过 24MHz 晶体的振荡。 另外, 关于内部程序 FLASH 读取等待时间, 在昨天的程序上, 增加了 一个判断, 当时钟超过 24MHz 的时候, 不再将等待时间清零了。 维持原来的缺省值 1。
经过软件修改之后, 下载程序, 单片机可以正常工作了。 这也证明了, 一旦时钟超过35MHz 之后, STC32F需要设置内部程序读取等待时间。 否则程序就无法正确运行。
※ 总 结 ※
本文测试了 STC32F 使用外部 40MHz 晶体工作的情况。 在这个频率下, 需要设置内部程序FLASH读取等待寄存器为 1, 否则程序无法正确运行。 在 40MHz晶体震荡下, 还是无法连接频率计进行计数。 ·可以使用示波器观察振荡波形。
● 相关图表链接: