CW32x030 支持外部时钟(HSE 和LSE)运行中失效检测功能。在外部时钟稳定运行过程中,时钟检测逻辑持续
以一定的检测周期对HSE 和LSE 时钟信号进行计数:在检测周期内检测到设定个数的时钟信号则运行正常,否
则运行失效。
HSE 时钟的运行中失效检测周期通过SYSCTRL_HSE.DETCNT 配置,实际时间为SYSCTRL_HSE.DETCNT/fLSI,检
测时钟个数为0x20000。考虑到时钟都有一定的偏差,为保证检测功能可靠,HSE 检测周期参数HSE.DETCNT
的配置须留有一定的裕量,一般根据HSE 的运行频率,配置为8000/fHSE(其中fHSE 为HSE 时钟的频率,单位为
MHz)。
例:如果HSE 时钟频率为4MHz,则SYSCTRL_HSE.DETCNT 应配置为2000。
LSE 时钟的运行中失效检测周期不可配置,固定为256 个LSI 时钟周期,检测时钟个数为128。
外部时钟故障检测功能默认处于关闭状态,此时HSE/LSE 运行中失效不会产生相应的中断标志。通过设置
SYSCTRL_CR1.HSECCS 为1 和SYSCTRL_CR1.LSECCS 为1,分别使能HSE 和LSE 时钟故障检测功能。HSE 或
LSE 时钟运行中失效检测还需要设置SYSCTRL_CR1.LSIEN 为1 使能内部低速时钟LSI。
使能外部时钟的故障检测功能后,如果运行过程中检测到HSE 或者LSE 失效,则会产生运行中失效标志(对应
SYSCTRL_ISR.HSEFAULT 或者SYSCTRL_ISR.LSEFAULT 被置1),如果中断使能(对应SYSCTRL_IER.HSEFAULT
或者SYSCTRL_IER.LSEFAULT 设置为1),则CPU 会执行中断服务程序进行时钟运行中失效处理。
如果当前系统时钟来源为HSE,则当HSE 出现运行中失效时系统时钟源会自动切换到HSI 时钟。
如果当前系统时钟来源为LSE,则当LSE 出现运行中失效时系统时钟源会自动切换到HSI 时钟。
|