您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Cortex-M0+,STM32L0x3参考手册-复位和时钟电路
7.2.1HSE振荡器和负载电容需要安置在离OSC管脚越近越好,减少时钟倾斜和时钟的稳定时间。HSE时钟旁路最高32MHz,通过RCC_CR寄存器中HSEBYP和HSEON位设置。OSC_IN通过50%占空比的时钟信号驱动,OSC_OUT需要保持在Hi-Z。外部时钟信号可以是方波,正弦波和三角波,为了减少消耗,推荐使用方波。晶体和陶瓷振荡器1-24MHz外部振荡器可以产生一个非常精确的时钟,用来做主时钟。RCC_CR寄存器中的HSERDY位用于指示HSE是否已经稳定。7.2.2HSI16时钟HSI16可以直接用于系统时钟或者作为PLL输入。HSI16可以用于从stop模式或lowpower模式唤醒后,比MSI更小的唤醒时间。HSI16的启动时间比HSE更短。但是即使是经过校准,HSI16的精确度也比外部振荡器低。由于制造过程的变化,不同芯片的RC振荡频率会不同,每个器件都经过ST的校准,保证在25℃下1%的精确度。reset后,出厂校准值被load进RCC_ICSCR的HSI16CAL[7:0]。RCC_CR寄存器中的HSI16RDY位指示着HSI16是否已经稳定。RCC_CR寄存器中的HSI16ON位可以开启或者关闭HSI16.7.2.3MSIclockMSI时钟信号由内部RC振荡器产生。频率范围由RCC_ICSCR中的MSIRANGE[2:0]校正。MSI的频率有:65.536KHz,131.072KHz,262.144KHz,524.0288KHz,1.048MHz,2.097MHz(默认值)和4.194MHz。MSI时钟通常被用于复位之后的重启或者从standby模式唤醒的系统时钟(MSI复位到2.097MHz)。当从停止模式唤醒后(MSI的值不变),MSI可以被用于系统时钟。MSI可以提供低成本低功耗的时钟源。在低功耗模式下,MSI被用于唤醒时钟。RCC_CR寄存器中的MSIRDY标志位用来指示MSI是否已经稳定。未稳定前,MSI时钟不输出。RCC_CR中MSION位可以用来开启和关闭MSI。当HSE失效时,MSI可以作为备用时钟。校准内容和HSI一致。7.2.4HSI48由内部48MHzRC振荡器产生,可以直接用于USB和RNG产生器。HSI48通过clockrecoverysystem,使用LSE或者外部信号来校准。在进入stop或者standby模式后,HSI48会停止。如果CRS不启用,HSI48通过出厂配置校准。HSI48需要VREFINT。RCC_CRRCR(ClockrecoveryRC)中的HSI48RDY指示HSI48是否稳定。HSI48ON可以用来控制HSI48的开关。7.2.5PLLPLL能够由HSI16,HSE驱动。能够用来产生系统时钟,并且可以用来作为USB外设的48M时钟。PLL的输入为2-24MHz。当使用PLL作为USB时钟源,那么PLLVCO的频率需要调整到96MHz。系统时钟通过PLLVCO分频输出。rang1:PLLVCO最高96MHzrang2:PLLVCO最高48MHzrang3:PLLVCO最高24MHz修改PLL配置,需要以下步骤:1.除能PLL,设置PLLON为02.等到PLLRDY位清除,PLL完全停止3.修改设置4.设置PLLON为1,使能PLL7.2.6LSE时钟32.768KHz低速外部晶体或者陶瓷振荡器。用于提供低功耗但是高精确度的RTC时钟。通过RCC_CSR中的LSEON使能。驱动能力可以动态的,通过LSEDRV[1:0]改变,用来获得鲁棒性,短的开启时间和低功耗之间的妥协。当处于lowdrivemode时,可以通过power-onreset和RTCreset来改变至另一种模式。RCC_CSR中的LSERDY位可以用来指示LSE是否已经稳定。LSE还可以设置为LSEbypass方式。7.2.7LSI时钟可以在stop模式或者standby模式下运行,驱动independentwatchdog(IWDG)。时钟频率为37KHz。开关:LSION位inRCC_CSR寄存器稳定:LSIRDY位inRCC_CSR寄存器LSI准备好的话,会产生一个中断,如果在RCC_CIER中使能了。7.2.8系统时钟四个时钟源可以用来驱动SYSCLKHSI16,HSE,PLL,MSI当一个时钟源被用来直接或者通过PLL间接作为系统时钟,那么它就不能被关闭。只有在目标时钟源准备好后才可以切换目标时钟源作为系统时钟。7.2.10HSEclocksecuritysystem(CSS)CSS由软件开启,当HSE准备好后,时钟检测开启,当HSE关闭后,时钟监测停止。如果HSE失效被检测到,振荡器被自动关闭,产生一个CSSHSEI中断,通知软件HSE失效,这样MCU就可以实施挽救措施。CSSHSEI连接到cortex-M0+的NMI异常向量。note:进入中断后,需要清除CSSHSE通过设置RCC_CICR中的CSSHSEC位。如果HSE用于直接或者通过PLL作为SYSCLK,检测到的失效会产生一个系统时钟向MSI的切换。7.2.11LSEclocksecuritysystemLSE上的CSS可以通过写RCC_CSR寄存器上的CSSLSEON。这个位在hardware复位,RTC软件复位或者LSE失效检测到后被清零。CSSLSEON位需要在LSE和LSI都使能,并且都准备好,而且RTC时钟已经选择好后才能写入。LSECSS在所有模式下都可以工作。当LSE失效被检测到后,LSE时钟不再用于RTC,但是寄存器内容不变,在standby模式中,一个唤醒操作被执行,在其他模式中,一个中断会产生用于唤醒软件。软件必须清零CSSLSEON位,并且停止LSE。通过RTCSEL位,改变RTC的时钟源,或者任何需要的动作来使应用保持安全。7.2.12RTC和LCD时钟RTC和LCD使用同一个时钟,(LSE,LSI或者HSE分频后的1MHz时钟),通过RCC_CSR寄存器中的RTCSEL[1:0]和RCC_CR中的RCC_CR[1:0]设置。一旦RTC和LCD时钟源被选定,只有通过设置RCC_CSR中的RTCRST位或者POR。如果LSE或者LSI用于RTC的时钟源,那么RTC可以在stop和standby模式下工作,并且可以当作唤醒源,如果HSE作为RTC的时钟源,那么RTC就不能在低功耗模式下工作。如果LSE和LSI被用于RTC时钟源,那么LCD能在stop模式下运行。如果APB1时钟频率低于RTC时钟频率的7倍,那么软件需要读取calendar时间和日期两遍。7.2.13看门狗时钟如果IWDG被启动,那么LSI会被强制开启,并且不能被关闭。7.2.14时钟输出Microcontrollerclockoutput(MCO)能够把时钟输出到MCO口(PA8或者PA9),通过一个预分频器(1,2,4,8,16)。MCO的输出信号可以是SYSCLK,HSI16,HSI48,MSI,HSE,PLL,LSI,LSE。通过RCC_CFGR寄存器中的MCOSEL[3:0]来选择。7.2.15内部/时钟时钟测量使用TIM21通过TIM21的通道1捕捉,能够间接测量任何板上的时钟频率。多路选择器,通过TI1_RMP[2:0]选择触发源。最主要的用途是用来测量HSI16和MSI(测量时都需要设置为系统时钟)。在LSE的两个连续的边沿间计数HSI16或MSI的时钟。通过LSE的高精度(通过为几十ppm),来测量内部时钟,达到相同的精度。如果MSI的时钟很低的话(比如1MHz),测量精度就很低。建议:多次测量;使用捕捉预分频器(比如每8个周期捕捉1次);当RTC由LSE驱动时,使用512Hz的RTC_OUT作为通道1的捕捉。(这里不太懂,没怎么翻译)TIM21同样可以用于测量LSI,MSI或者HSE_RTC。(这里不太懂,没怎么翻译)7.2.16Clock-independentsystemclocksourcesforTIM2/TIM21/TIM22使用32.768KHz时钟作为RTC时间基准,时基可以从系统时钟中独立出来。可以用于切换任务,而不需要考虑处理器的状态(处理器可能停止,或者低速,中速,高速运行)。为了这个用途,LSE被内部连接至3个定时器的ETR输入。可以产生3个独立的时基(使用重载特性),通过1个或2个比较附加通道。例如,TIM21的重载中断可以被编程为1S,一个附加的中断在maintick之后的250ms后产生。NOTE:APB时钟至少是LSE的两倍。否则,强制使用触发分频器,使ETR至多分频8.在更新完时钟后,需要重新获取SYSCLK,用来更新SYSTICK。
本文标题:Cortex-M0+,STM32L0x3参考手册-复位和时钟电路
链接地址:https://www.777doc.com/doc-2906863 .html