MCU有各种各样的外设:定时器和看门狗、UART收发器、I2C总线、SPI总线、GPIO、ADC、SW-DP调试端口、温度传感器等,之所以能有条不紊的稳定运行,都离不开统一的时钟。因为时钟是MCU的脉搏,CPU执行指令、访问数据、DMA搬运、状态变换等动作都离不开系统时钟,串口数据收发、A/D转换、定时器计数等外设工作也是在时钟的驱动下完成的。
图1. MM32F003时钟源
另一方面,如果时钟系统出现问题,例如振荡器不起振、振荡不稳、停振等,那后果也是致命的。以下我们以32位arm Cortex M0核心的MM32F003为例,介绍MCU外接晶振究竟该如何选择。
MCU数据表中的建议系统时钟一般由时钟源(Clock source),总线时钟(Bus clock)和外设时钟(Peripheral Clock)。MM32F003时钟源包括三部分:高速内部时钟(HSI)、低速内部时钟(LSI)、高速外部时钟(HSE)。其中,HSE振荡器的频率位2-24MHz。
图2. MM32F003数据表提供的HSE 2-24MHz特性
根据MM32F003数据表,高速外部时钟(HSE)可以使用一个2~24MHz的晶体/陶瓷谐振器构成的振荡器产生,布线时谐振器和负载电容必须尽可能地靠近振荡器的引脚,以减小输出失真和启动时的稳定时间。
振荡器元件的选择MM32F003数据所给出了典型外部元器件,以及通过综合特性评估得到的结果。具体应用中,需要我们根据晶体/陶瓷谐振器制造商提供的详细参数 (频率、封装、精度等)设计振荡电路。一般情况下,这些数据由综合评估得出,不在生产中测试。
图3. 8MHz石英晶体谐振器的典型应用
首先,我们应该应该确定谐振器应该采用石英晶体谐振器、晶体振荡器,还是陶瓷谐振器?按照MCU厂商的图示,内部已经集成了两个电容器的谐振器一般是陶瓷谐振器,或者晶体振荡器。不过,前者频率精度及频率稳定性是否符合终端产品要求需要仔细考虑,后者的价格估计会让大家望而却步。
这里,我们选择了8MHz采用石英晶体谐振器(Xtal),因为同时符合性能、价格考量。
接下来,我们构建振荡器电路。根据MM32F003数据表建议,对于CL1和CL2使用高质量的、为高频应用而设计的 (典型值为)5pF~25pF之间的瓷介电容器,并挑选符合要求的晶体或谐振器。通常CL1和CL2具有相同参数。晶体制造商通常以CL1和CL2的串行组合给出负载电容的参数。在选择CL1和CL2时,PCB和MCU引脚的容抗应该考虑在内(可以粗略地把引脚与PCB板的电容按10pF估计)。
RF一般单片机会给出,不需要自己计算或测试。相对较低的RF电阻值,能够可以为避免在潮湿环境下使用时所产生的问题提供保护,这种环境下产生的泄漏和偏置条件都发生了变化。但是,如果MCU是应用在恶劣的潮湿条件时,设计时需要把这个参数考虑进去。
tSU(HSE)是启动时间,是从软件使能HSE开始测量,直至得到稳定的8MHz振荡这段时间。这个数值是在一个标准的晶体谐振器上测量得到,它可能因晶体制造商的不同而变化较大。
有些MCU还有一个低速外部时钟(LSE),这就需要再外接一个低速晶振,例如32.768kHz晶振。MM32F003没有这个接口,我们就不讨论了。
文章评论(0条评论)
登录后参与讨论