前言
时钟好比MCU的心跳,只有时钟正常了,MCU的核及外设才能正常工作。从源头到系统到外设理解每一个时钟的来源及其具体值才能方便后面理解MCAL的GPT,PWM,ICU等模块的配置(MCAL模块中的Tick数就是基于模块时钟的)。本系列文章就来详细介绍TC3xx芯片的时钟系统及其具体配置。本文为TC3xx芯片时钟系统的时钟分配CCU详解。
参考文章:
TC3xx芯片Clock System功能详解-时钟源OSC
TC3xx芯片Clock System功能详解-锁相环PLL
缩略词
简写 |
全称 |
OSC |
Oscillator Circuit |
PLL |
Phase-Locked Loop |
DCO |
Digitally Controlled Oscillator
|
注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!
正文
3. 时钟分配(CCU)
配置好时钟系统的时钟源(OSC)和锁相环倍频(PLL),系统操作所依赖的Root Clock就有了。接下来,MCU的所有外设模块,CPU核都需要从Root Clock通过分屏来适配自己需要的时钟。 各个模块都需要适配时钟,主要是为了优化性能和降低功耗。
对于时钟分配,系统分为多个子时钟域,可以在这些域中单独配置时钟速度。 内部接口派生的每个子时钟域也有限制。 每个子时钟域从时钟角度定义逻辑单元。
时钟分配通过时钟控制单元 (CCU) 完成。CCU 接收由两个 PLL (fPLL0 and fPLL1/2) ,备用时钟fBack 和 fOSC0创建的时钟。 这些时钟可以直接转发或划分,以便提供子时钟域。
3.1 时钟控制单元
Figure 5 Clock Control Unit Overview
对于大多数时钟,提供了线性分频器来调整时钟频率以满足应用要求。 此分隔符由寄存器 CCUCONy 中的位字段 XXXDIV 控制。
时钟系统的配置非常灵活。 这允许将频率变化调整为应用程序定义的特定电流限制。
每个模块都有default时钟源以及推荐(√)的时钟源,以及可选的倍频/分频系数。在配置某个具体模块的时钟时,首先选择时钟源,然后再选分频系数。
3.2 以MCCAN为例配置时钟频率
CCUCON0.CLKSEL配置fsource0, fsrc1, and fsource2三个时钟的时钟源。
MCAN的配置在CCUCON1寄存器上。
CCUCON1.MCANDIV配置fMCANI的分频系数。
CCUCON1.CLKSELMCAN配置MCAN的时钟源。
CCUCON1寄存器的默认值位0x1010 0302,也就是:
CCUCON1.MCANDIV = 2
CCUCON1.CLKSELMCAN = 0 à fMCAN clock是不工作的。
需求:fMCAN clock配置到80MHz.
第一步:了解时钟源
从第二章已知
fPLL0为100MHz.
fPLL1为320MHz.
fPLL2为200MHz.
第二步:CCUCON0.CLKSEL配置为0x01B
也就是
fsource0 == fPLL0 == 100MHz
fsource1 == fPLL1 == 320MHz
fsource2 == fPLL2 == 200MHz
第三步:配置CCUCON1.MCANDIV = 0x4H
也就是
fMCANI = fsource1/4 = 320/4 = 80MHz.
第四步:配置CCUCON1.CLKSELMCAN = 01B,fMCANI is used as clock source fMCAN
也就是
fMCANI == fMCAN == 80MHz.
4. 总结
时钟配置基本都是按下图的推荐参数来配置的
Figure 6 Clocking System example with external 20MHz crystal / clock input
End
原文始发于微信公众号(汽车电子嵌入式):TC3xx芯片Clock System功能详解-时钟分配CCU
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论