为了提高系统性能,同时降低功耗,MCU通常提供四种时钟:
高速外部时钟(HSE):由外接高频晶振产生。
低速外部时钟(LSE):由外接低频晶振产生,一般为32.768kHz,用于驱动实时时钟 (RTCCLK)。
高速内部时钟(HSI):由内部高频RC电路产生。
低速内部时钟(LSI):由内部低频RC电路产生,一般为32kHz,用于驱动独立看门狗。
图1. 晶振为MCU提供精准外部时钟
这样配置的好处是,如果采用单一时钟,频率高的话可能会导致性能过剩和功耗过高,频率高则导致性能不足,满足不了要求。多个时钟的话可以平衡功耗和性能之间的平衡。
特此说明一下,系统复位后,默认初始化的是高速内部时钟(HSI)来提供sysclock,一般为16MHz。为了提示系统性能,我们需要使能外部时钟晶振,如24MHz、32MHz等。
如果使用外部HSE的话,一般有两种模式:
(1)外部晶体/陶瓷谐振器(HSE晶体)模式这种模式用得比较常见,HSE晶体可以为系统提供较为精确的时钟源。在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。在启动时,直到这一位被硬件置’1’,时钟才被释放出来。HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。
图2. STM32F4系列MCU时钟模式
该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度也较高,但是一定要正确使用。
(2)外部时钟源(HSE)旁路模式所谓HSE旁路模式,是指使用外部晶振时,无需芯片内部时钟驱动组件来辅助,直接从外界导入时钟信号,好像芯片内部的RC振荡器功能被旁路了。
该模式下必须提供外部时钟,外部时钟信号必须连到SOC_IN引脚,此时OSC_OUT引脚对外呈高阻态。不过,使用这个旁路模式的情形不像使用外部晶体模式那么多。
(3)晶振选择举例以STM32F4系列MCU为例,旁路模式除了配置HSEON还得配置HSEBYP位。这里需要注意的是一定要选择无源晶振,即石英晶体谐振器(XTAL)作为时钟源。
首先,为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容必须尽可能地靠近振荡器引脚,负载电容值必须根据所选择的晶体来具体调整等细节问题。至于选择陶瓷晶体和石英晶体,这取决于应用电路对频率精度和温度稳定性的要求。一般而言,石英晶体比陶瓷晶体的精度要高的多,频率温度稳定性也要好很多。
其次,如果选择了有源晶振(XO、TCXO等),用户就无法选择工作模式!由于有源晶振本身就是个完整的振荡器件,其时钟输出不依赖于外部器件振荡电路,只需要供给适当的电源就能输出时钟,无须额外的振荡驱动匹配电路。这时,我们只能将其配置为HSE旁路模式,而不是HSE晶体模式。
另外,有源晶振价格比无源贵很多,选错了不但浪费钱财,还限制了MCU工作模式和用户发挥空间,需要大家引起注意。
文章评论(0条评论)
登录后参与讨论