微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM8 时钟

STM8 时钟

时间:11-11 来源:互联网 点击:

时钟切换的过程
用户可选择下面两种方式切换时钟源:

自动切换
自动切换使用户可使用最少的指令完成时钟源的切换。应用软件可继续其它操作而不用考虑切换事件所占的确切时间。

1.设置切换控制寄存器(CLK_SWCR)中的位SWEN,使能切换机制。
2.向主时钟切换寄存器(CLK_SWR)写入一个8位的值,用以选择目标时钟源。寄存器CLK_SWCR中的SWBSY被硬件置位,目标源振荡器启动。原时钟源依然被用于驱动内核和外设。

一旦目标时钟源稳定,寄存器CLK_SWR中的值将被复制到主时钟状态寄存器(CLK_CMSR)中去。
此时,SWBSY位被清除,新时钟源替代旧时钟源。寄存器CLK_SWCR中的标志位SWIF被置位,如果SWIEN为1,则会产生一个中断。

  • 手动切换
    手动切换与自动切换不同,不能够立即切换,但它允许用户精确地控制切换事件发生的时间

1.向主时钟切换寄存器(CLK_SWR)写入一个8位的值,用以选择目标时钟源。寄存器CLK_SWCR中的SWBSY被硬件置位,目标源振荡器启动。原时钟源依然被用于驱动内核和外设。
2.用户软件需等待至目标时钟源稳定。寄存器CLK_SWCR中的标志位SWIF用以指示目标时钟源是否已稳定,如果SWIEN为1,则会产生一个中断。
3.最后,由用户软件在所选的时间点,设置寄存器CLK_SWCR中的位SWEN,执行切换。无论是手动切换还是自动切换,如果原时钟源仍然在被其他模块使用(如LSI在被独立看门狗使用),则原时钟源将不会被自动关闭。配置内部时钟寄存器CLK_ICKR和外部时钟寄存器
CLK_ECKR中的相应位,可关闭原时钟源。如果由于某种原因时钟切换没有成功,软件可通过清除标志位SWBSY以复位当前的切换操作,使寄存器CLK_SWR恢复原值(原时钟源)。

外设时钟门控

关闭未使用外设的时钟可使STM8降低功耗。外设的时钟门控(PCG)模式使用户可在运行模式下随时打开或关闭fMASTER与下列外设的连接:

  • ADC
  • I2C
  • AWU(寄存器时钟,而非计数器时钟)
  • SPI
  • TIM[4:1]
  • UART
  • CAN(寄存器时钟,而非CAN时钟)

STM8系统复位后,所有外设时钟均处于开的状态。用户可通过清除CLK_PCKENR1或CLK_PCKENR2中的PCKEN位来关闭相应的外设时钟。但是在关闭外设的时钟前,用户必须设置相应的位禁用该外设。
为了使能一个外设,用户必须先设置寄存器CLK_PCKENR中对应的PCKEN位,然后设置外设控制寄存器中的外设使能位。
AWU计数器是由独立于fMASTER的内部或外部时钟(LSI或HSE)驱动,因此,即使寄存器的时钟已被关掉,该外设依然可以继续运行。

时钟安全系统

时钟安全系统用于监控HSE时钟源是否失效。当fMASTER使用HSE做为时钟源时,如果HSE时钟由于谐振器损坏、断开或其它原因而失效,时钟控制器将激活安全恢复机制,将fMASTER自动切换到辅助时钟源HSI/8。STM8系统将一直使用辅助时钟源,直至MCU被复位。

设置时钟安全系统寄存器CLK_CSSR中的CSSEN位,可使能STM8的时钟安全系统。为安全起见,CSS一旦使能就不能被关闭,直到下一次复位。
必须满足下面的条件,CSS方可检测HSE石英晶体的失效:

  • HSE晶体开:(外部时钟寄存器CLK_ECKR中的位HSEEN=1)
  • HSE振荡器被置为石英晶体(选项位EXTCLK为1)
  • CSS功能开:(寄存器CLK_CSSR中CSSEN=1)
    如果当前的主时钟源为HSE,当失效被检测到时,CSS将执行以下操作:
  • 寄存器CLK_CSSR中的CSSD位被置位,如果CSSIEN为1,则同时产生一个中断。
  • CLK_CMSR,CLK_SWR,及CLK_CKdivR中的HSIdiv[1:0]位被置为复位值(CKM[7:0]=SWI[7:0]=E1h)。HSI/8成为主时钟。
  • 内部时钟寄存器CLK_ICKR中的HSIEN被置位(HSI开)。
  • 外部时钟寄存器CLK_ECKR中的HSEEN被清除(HSE关)。
  • AXU位被置位,用以指示辅助时钟源HSI/8被强制使用。
    用户可通过软件清除CSSD位,但AXU位只能由复位清除。为了提高时钟频率,用户在清除寄存器CLK_CSSR中的CSSD位以后,可修改寄存器
    CLK_CKdivR中的HSIdiv[1:0]位。
    如果失效发生时HSE不是主时钟源,STM8主时钟将不会被切换到辅助时钟源,以上操作也不会发生,仅执行下面的操作:
  • 外部时钟寄存器CLK_ECKR中的HSEEN被清除,HSE关闭。
  • 寄存器CLK_CSSR中的位CSSD被置位,如果CSSIEN为1,则同时产生一个中断。
    如果HSE不是当前主时钟源,且主时钟正在被切换至HSE,则在清除CSSD位之前,必须先清除寄存器CLK_SWCR的SWBSY位。
    如果当失效被检测到时,HSE被CCOSEL选择为时钟输出模式(参见时钟输出功能(CCO)),则HSI(HSIdiv)将替代HSE,被自动强制选择为输出时钟。

时钟输出CCO

可配置的时钟输出功能使STM8用户可在外部管脚CCO上输出指定的时钟。STM8S的用户可选择下面6种时钟信号之一做为CCO时钟:

  • fHSE
  • fHSI
  • fHSIdiv
  • fLSI
  • fMASTER
  • fCPU(可选择分频值)

注意:在所有可能

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top