CMU模块介绍
CMU模块
CMU模块全称是Clock Monitor Unit,也就是一个时钟监测模块,可以用于实时检测系统的各种时钟工作状态是否正常。
我们知道时钟是数字系统的基础,在MCU中时钟工作状态直接关系到整个系统的稳定性,如果系统时钟停止工作,那么整个MCU将不能执行程序,这样就无法实现预期的功能。因此,在设计MCU系统时,时钟的可靠性和稳定性是非常重要的因素,而在传统设计中只能通过WDG来进行时钟复位,但这样的方法在某些情况下会存在一定的不稳定性,因此开发者需要在设计时考虑到这一点,以确保系统的可靠性和可用性。
系统中增加CMU模块可以有效的提高系统的鲁棒性,它能够实现对系统的实时监测,以确保系统在正常运行的情况下提供可靠的服务。CMU模块不仅可以在时钟停止的情况下对系统进行复位,而且还可以实时检测被监测时钟的时钟频率,以确保被监测时钟的频率不会出现偏差。如果发现被监测时钟频率出现偏差,CMU模块还可以产生中断报警,以提醒用户及时进行处理。
CMU模块可以作为一个安全模块应用于功能安全系统,对于需要满足功能安全要求的车载应用来说是必不可少的。
基本工作原理
CMU的工作原理不复杂,它使用两个不断计数的时钟,我们称之为参考时钟和被监测时钟。当参考时钟计数达到128时,CMU会读取被监测时钟的计数值,并将其与预先设定的范围进行比较,以确定被监测时钟是否正常运行。如果在范围内,则开始下一轮计数;否则,系统会发出警报以确保安全。
此外,当参考时钟计数达到128时,如果被监测时钟计数为0,说明被监测时钟已停止工作,此时CMU会直接复位整个系统,以确保系统的安全性。如果被监测时钟计数溢出,则说明参考时钟已停止工作,此时CMU也会复位整个系统以确保系统运行稳定。
另外,当系统进入低功耗模式时,CMU不会自动停止,这意味着如果未正确关闭相应的时钟,就可能导致CMU复位。因此,建议在进入低功耗模式之前,用户应务必手动关闭CMU模块,以避免系统发生意外复位情况。
CMU模块本身包含多个通道,可以实现对多路时钟的监测。YTM32B1Mx系列MCU中CMU有4个通道,可以实现对系统SlowBus时钟、FIRC时钟、PLL时钟和FXSOC外部晶振时钟的同时监测。在YTM32B1LE系列MCU中CMU有2个通道,可以实现对FIRC和FXOSC两个时钟的同时监测。
CMU使用
CMU模块在开启之后就会一直监测MCU内部时钟的工作情况,对于内部FIRC和SIRC来说,CMU的开启时间对CMU的工作没有什么影响,因为这两个时钟在系统上电之后就可以正常工作。但是对于外部FXOSC和依赖时钟锁定的PLL来说,CMU的开启时间对于CMU的正常工作就有一定的影响了。
以FRIC/SIRC开启,PLL参考外部FXOSC时钟为例,建议的CMU的启动顺序如下:
- 首先可以开启SIRC对FIRC的监测,因为这两个时钟默认状态是开启的。
- 初始化FXOSC,并等待外部晶振起振,FXOSC Valid标志置位之后,可以用SIRC监测FXSOC时钟
- 初始化PLL时钟,等待PLL锁定,PLL Lock标志置位之后,可以用SIRC监测PLL时钟
- 所有系统时钟源初始化完成之后就可以将系统时钟进行切换,比如更新系统时钟分频之后,切换系统时钟为PLL,等待切换完成之后就可以开启SIRC对Slow Bus Clock的监测了
注意初始化顺序,开启一个时钟就立即开启对它的监测。因为其它时钟可能依赖这个时钟,如果它工作不正常,可能会影响其它时钟的工作状态。因此,系统必须及时监测时钟,以便及时响应时钟工作异常。
使用总结
CMU是系统中一个比较关键的模块。合理使用可以提高系统对时钟的监测,并保证系统始终稳定可靠。在应用中,建议合理配置CMU,以确保系统可以正常工作。
最后更新于 2023-06-17 00:29:49 并被添加「MCU」标签,已有 2442 位童鞋阅读过。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。