在某些低成本和低功耗的单片机中,可能使用内部的RC振荡器作为默认的振荡源。这种设计简单且经济实惠,适用于一些不需要高精度时钟的应用。下面文章中,我们来介绍一下如何校准MCU的内部RC振荡器,包括补偿振荡器中不准确的无源元件值等。
一、MCU中的内部振荡器调整
我们知道,内部采用RC振荡器的单片机会有精度不高的缺点。所以,在这类MCU中,内部振荡器一般都配备了微调其频率的机制。这通常是通过替换微型电容,以此调整振荡器RC电路中的电容大小来完成的。
电容替换包含一系列开关和电容器,可产生一定精度范围内的任何电容大小。例如,考虑以下电容器结构,它可以并联组合以产生0nF到255nF的任何整数电容。
如上图所示,这些每个开关控制一个电容器。例如,仅闭合右侧的三个开关会产生7nF。从程序员的角度来看,内部振荡器的频率调整归结为修改内存映射寄存器的值,即修改该寄存器中的位就是在控制电容,这等于是在操作开关。
以某个具有8位寄存器的单片机为例,该寄存器称为ICSTRM(内部时钟源调整)。这是一个8位寄存器,二进制复位值为10000000。这8位控制一个电容替代模块,进而影响振荡器的周期。该寄存器的值越高,电容和周期就越高。当然,这对频率有相反的影响。
二、如何通过程序校准
校准程序的具体步骤可能会根据具体应用和硬件平台而有所不同,以下是一个简单的校准程序示例,用于校准一个1kHz方波信号的生成:
1.设置初始配置:将单片机配置为产生方波信号,并确保 Trim 寄存器的初始值为默认值。
2.生成 1kHz 方波信号:使用单片机的定时器或其他相关模块,编写一个程序来生成 1kHz 的方波信号。
3.测量方波信号的周期:使用示波器或其他合适的测量设备,测量生成的方波信号的周期。记录测量到的周期值。
4.调整 Trim 寄存器:根据测量到的周期值,计算需要调整 Trim 寄存器的值。调整的方式可以是逐步增加或减小 Trim 寄存器的值,并观察方波信号的周期变化。
5.重新编译和运行:将调整后的Trim寄存器的值更新到代码中,重新编译程序,并将程序下载到单片机中运行。
6.迭代调整:重复步骤3-5,直到测量到的方波信号周期达到所需的1kHz。
实际的校准过程可能会更复杂,这涉及更多的参数和校准步骤。具体的校准程序应根据您的应用、硬件平台和需求进行设计和开发。
以上就是金沙js5线路单片机开发工程师分享的如何校准MCU的内部RC振荡器。金沙js5线路专注单片机应用方案设计与开发,提供8位单片机、32位单片机。