时钟操控器功用强大并且灵敏易用。其意图在于运用户在取得最好功用的一起,亦能确保耗费的功率最低。用户可独登时办理各个时钟源,并将它们分配到CPU或各个外设。主时钟和CPU时钟均带有预分频器。具有安全可靠的无故障时钟切换机制,可在程序运转中将主时钟从一个时钟源切换到另一个时钟源。抗电磁搅扰时钟装备寄存器,STM8为了防止由电磁搅扰形成的对运用程序误写操作或体系挂起,大多数要害的时钟装备寄存器都有一个互补寄存器与之相对应。体系将会主动检测这些要害寄存器与其互补寄存器之间是否匹配。假如不匹配,则发生一个EMS复位,然后使运用程序康复到正常操作。详情请拜见时钟寄存器描绘。
主时钟源:
1-24MHz高速外部晶体振荡器(HSE)
最大24MHz高速外部时钟信号(HSE user-ext)
16MHz高速内部RC振荡器(HSI)
128KHz低速内部RC(LSI)
各个时钟源可独自翻开或封闭,然后优化功耗。
(一)HSE
高速外部时钟信号可由下面两个时钟源发生:
HSE外部晶体/陶瓷谐振器
HSE用户外部有源时钟
为了最大极限减小输出失真和减小发动的安稳时刻,谐振器和负载电容应尽或许得接近振荡器引脚。负载%&&&&&%值应根据所选的振荡器进行调整。
- 外部晶体/陶瓷谐振器(HSE晶体)
外部1至24MHz的振荡器其长处在于能够发生准确的占空比为50%的主时钟信号。
硬件衔接如图14所示。更多详情请拜见数据手册电特性章节。振荡器在发动时的输出时钟信号是不安稳的,默许情况下,在时钟信号被运用之前会刺进2048个振荡器周期的推迟。用户可经过设置选项字节HSECNT来缩短安稳时刻,请拜见数据手册的选项字节章节。外部时钟寄存器CLK_ECKR中的标志位HSERDY用以指示高速外部振荡器是否安稳。发动时,HSE时钟信号将不会收效直至此标志位被硬件置位。
HSE晶体可经过设置外部时钟寄存器CLK_ECKR中的HSEEN位来翻开或封闭。 - 外部时钟源(HSE用户外部时钟)
这种形式下,有必要由用户供给一个外部时钟,此刻钟的最高频率可为24MHz。用户可经过编程选项位EXTCLK挑选此形式。详情请拜见数据手册的选项字节章节。此刻,占空比约50%的外部时钟信号(方波,正弦波,三角波)用以驱动OSCIN引脚,而OSCOUT引脚可做为通用输入/输出管脚运用。
(二)HSI
HSI信号由内部16MHz RC振荡器与一个可编程分频器(分频因子从1至8)发生。分频因子由寄存器CLK_CKDIVR决议。
留意:发动时,主时钟源默许为HSI RC时钟的8分频,即fHSI/8
HSI RC能够供给一个低成本的16MHz时钟源(无需外部器材),其占空比为50%。HSI发动速度比HSE晶体振荡器快,可是其精度即便经过校准也仍然比外部晶体振荡器或陶瓷谐振器低。内部时钟寄存器CLK_ICKR中的标志位HSIRDY用以指示HSI RC是否安稳。发动时,HSI时钟信号将不会收效直至此标志位被硬件置位。HSI RC可经过设置内部时钟寄存器CLK_ICKR中的HSIEN位翻开或封闭。
备份时钟源
当HSE晶体振荡器失效时,HSI/8可作为备份时钟源(辅佐时钟源)运用。请拜见8.6时钟安全体系(CSS)。
快速发动特性
假如寄存器CLK_ICKR中的FHWU位被置1,则MCU从停机(Halt)形式或活泼停机(Active Halt)形式唤醒时,HSI将主动被设为主时钟源。
校准
每个产品在出厂时均现已ST校准。
复位后,出厂校准值将被主动加载至内部校准寄存器。
假如实践运用中电压或温度误差较大,将会影响RC振荡器的速度。用户可运用HSI时钟校准寄存器(CLK_HSITRIMR)批改HSI的时钟频率。此寄存器中有3或4位用以寄存一个附加的批改值,并与内部HSI校准寄存器的值相加来对时钟进行校对。
(三)LSI
128KHz的LSI RC时钟是一个低功耗,低成本的可选主时钟源,也可在停机(Halt)形式下作为坚持独立看门狗和主动唤醒单元(AWU)运转的低功耗时钟源。LSI可经过设置内部时钟寄存器CLK_ICKR中的LSIEN位翻开或封闭。
内部时钟寄存器CLK_ICKR中的标志位LSIRDY用以指示LSI是否安稳。发动时,LSI时钟信号将
不会收效直至此标志位被硬件置位。
同HIS相同,LSI出厂时现已校准。可是,不或许再履行进一步的校准。
留意:当独立看门狗运用LSI为时钟源时,为了确保CPU在体系犯错时不与独立看门狗运用同一个时钟,
当选项字节位LSI_EN为0时,LSI不能做为主时钟。请拜见STM8数据手册中的选项字节章节。
时钟切换
时钟切换功用为STM8用户供给了一种易用、快速、安全的从一个时钟源切换到另一个时钟源的途径。
体系发动
为使STM8体系快速发动,复位后时钟操控器主动运用HSI的8分频(HSI/8)做为主时钟。其原因为HSI的安稳时刻短,而8分频可确保体系在较差的VDD条件下安全发动。一旦主时钟源安稳,用户程序可将主时钟切换到别的的时钟源。
主时钟切换的进程
用户可挑选下面两种方法切换时钟源:
主动切换
主动切换运用户可运用最少的指令完结时钟源的切换。运用软件可持续其它操作而不必考虑切换事情所占的切当时刻。
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_%&&&&&%KR中的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(可挑选分频值)
留意:在一切或许的分频值下,不能确保信号的占空比悉数为50%
经过装备时钟输出寄存器CLK_CCOR中域CCOSEL[3:0]可挑选输出的时钟。用户需为指定的I/O引脚(拜见管脚描绘章节)挑选希望输出的时钟。此I/O有必要经过装备寄存器Px_CR1对应的位为1来设置为上拉输入或推挽输出形式。
一旦可装备时钟输出寄存器CLK_CCOR的位CCOEN=1,就开端输出所选定的时钟信号。假如CCOBSY为1,则标明可装备时钟输出体系正在作业。只需CCOBSY为1,CCOSEL位就会被写保护。
假如需求,CCO可主动激活方针振荡器。当所选时钟安排妥当时,CCORDY被置位。STM8用户可经过铲除CCOEN位来禁用时钟输出功用。CCOBSY位和CCORDY位都将坚持为1直到禁用操作完毕。从铲除CCOEN位到这两个标志位被复位之间的时刻或许会很长,例如当所选的输出时钟相对于fCPU频率很低时。
时钟中止
当下列事情发生时,时钟操控器可发生中止:
- 主时钟源切换事情
- CSS事情
这两个中止均可被独立屏蔽。