【TC3xx芯片】TC3xx芯片的Clock System功能详解 您所在的位置:网站首页 芯片osc 【TC3xx芯片】TC3xx芯片的Clock System功能详解

【TC3xx芯片】TC3xx芯片的Clock System功能详解

2024-06-02 04:57| 来源: 网络整理| 查看: 265

目录

前言

正文

1.时钟源

1.1 有源晶振和无源晶振

1.1.1 无源晶振

1.1.2 有源晶振

1.1.3 有源晶振和无源晶振的区别

1.1 振荡器电路(OSC)

1.1.1外部输入时钟模式

1.1.2 外部晶体 / 陶瓷谐振器模式

1.1.3 OSC控制寄存器

1.1.4 配置OSC

1.1.5 OSC看门狗

1.1.6 配置SMU和时钟相关的Alarm

1.2 备用时钟

1.3 OSC实际应用配置

2. 时钟倍频PLL

2.1 特点

2.2 系统时钟锁相环PLL

2.3 系统PLL寄存器

2.4 外设时钟锁相环PLL

2.5 PLL实际应用配置

3. 时钟分配(CCU)

3.1 时钟控制单元

3.2 以MCCAN为例配置时钟频率

4. 总结

前言

时钟好比MCU的心跳,只有时钟正常了,MCU的核及外设才能正常工作。从源头到系统到外设理解每一个时钟的来源及其具体值才能方便后面理解MCAL的GPT,PWM,ICU等模块的配置(MCAL模块中的Tick数就是基于模块时钟的)。本系列文章就来详细介绍TC3xx芯片的时钟系统及其具体配置。

缩略词

简写

全称

OSC

Oscillator Circuit

PLL

Phase-Locked Loop

DCO

Digitally Controlled Oscillator

正文 1.时钟源

晶振好比人的心脏,晶振产生的时钟脉冲好比心脏产生的心跳,所以,晶振对于MCU来讲必不可少,晶振没有起振,MCU必定无法工作。

1.1 有源晶振和无源晶振

无源晶振又名“无源晶体”、“石英晶体谐振器”,英文名Crystal或Crystal Resonator。有源晶振又称“石英晶体振荡器”,英文名Crystal Oscillator。

1.1.1 无源晶振

无源晶振一般有两个引脚,无极性。它自身无法振动, 一般外部都接有两个10-22PF的瓷片电容。

无源晶振参考电路无源晶振信号质量较差,通常需要精确匹配外围电路(用于信号匹配的电容、电感、电阻等),更换不同频率的晶体时周边配置 电路也需要做相应的调整。一般建议采用精度较高的石英晶体。

1.1.2 有源晶振

有源晶振有4只引脚,是一个完整的振荡器,其中除了石英晶体外,还有晶体管和阻容元件,因此体积较大。有源晶振的封装有4个引脚,分别为VCC (电压)、GND (地)、OUT (时钟信号输出)、NC (空脚)。

有源晶振参考电路有源晶振不需要CPU的内部振荡器,信号稳定,质量较好,且连接方式比

较简单(主要做好电源滤波,通常使用一个电容和电感构成滤波网络,输出端用一个小阻值的

电阻过滤信号即可) , 不需要复杂的配置电路。

 

1.1.3 有源晶振和无源晶振的区别

1、有源晶振比较贵, 但是有源晶振自身就能振动。无论无源晶振, 还是有源晶振, 都有自身的优点和缺点所在, 若考虑产品成本, 建议可以选择无源晶振电路; 若考虑产品性能, 建议选择有源晶振电路, 省时方便也能保证产品性能。

2、无源晶振最高精度为5ppm, 而有源晶振的精度则可以达到0. 1ppm。精度越高, 频率稳定性也更好。有源晶振在稳定性上要胜过无源晶振, 但也有自身小小的缺陷, 有源晶振的信号电平是固定, 所以需要选择好合适输出电平,灵活性较差。

3、有源晶振一般4个脚,1个电源,1个接地,1个信号输出端,1个NC (空脚)。有个点标记的为1脚, 按逆时针(管脚向下)分别为2、3、4。

4、无源晶振有2个引脚,要借助于外部的时钟电路(接到主IC内部的振荡电路) 才能产生振荡信号, 自身无法振荡。

参考文档:

http://www.interquip-china.com/?c=msg&id=2553&bd_vid=6323699165298490610

1.1 振荡器电路(OSC)

振荡器电路是一种 Pierce 振荡器(Pierce oscillator),设计用于与外部晶体(external crystal) / 陶瓷谐振器(ceramic resonator)或外部稳定时钟源(external stable clock source)配合使用。 该电路由一个反向放大器组成, XTAL1 作为输入, XTAL2 作为带有集成反馈电阻的输出。

1.1.1外部输入时钟模式

使用外部输入时钟模式时,外部时钟信号连接到OSC模块的XTAL1引进,XTAL2引脚保持悬空状态。

Figure 1 AURIX™ TC3xx Platform Direct Clock Input

如果在正常模式直接使用外部时钟提供的时钟信号时,不使用外部晶体 / 陶瓷谐振器并绕过振荡器,则输入频率需要等于或大于 PLL 的 DCO 输入频率 (该值在Data sheet中列出)。

1.1.2 外部晶体 / 陶瓷谐振器模式

Figure 2 显示了两种工作模式的推荐外部电路:外部晶体 / 陶瓷谐振器模式 (带和不带外部组件)。

Figure 2 External Circuitry for Crystal / Ceramic Resonator operation

1.1.3 OSC控制寄存器

Oscillator Circuit Control Register用来配置OSC模式和晶振频率。主要用到的配置位域为:

OSCCON.MODE 配置晶振模式

OSCCON.OSCVAL 配置晶振频率

OSCCON.PLLLV 标识OSC频率是否可用

OSCCON.PLLHV标识OSC频率是否可用

1.1.4 配置OSC

只有配置了OSC后,外部晶振才能作为时钟源工作。

Power-on复位后OSC模块是被disabled,需要重新配置。在任何其他重置过程中和之后,振荡器不会受到影响,并按照先前配置的方式工作,这种情况下不需要重新配置。

可以通过SSW来配置OSC,也可以在App中直接配置OSC。值得注意的是:OSCCON寄存器是受Endinit保护的,配置的时候需要解锁Endinit。

参考文档:【TC3xx芯片】TC3xx芯片的Endinit功能详解

1.1.5 OSC看门狗

通过配置 SYSPLLCON0.Insel = 01B ,选择振荡器时钟作为看门狗的源。

与系统 PLL 结合使用时,将实施监控功能。 定义此功能的目的是检测外部晶体 / 陶瓷谐振器的严重故障。 系统可以检测到时钟输入丢失或输入频率过高 (在较高谐波上运行)。

振荡器监视程序监视来自 OSC 的传入时钟频率 fOSC。 稳定且定义的输入频率是操作的强制要求。 因此,每次系统重置后都会自动选择此模式。

预期输入频率 fOSC 通过位字段 OSCCON.OSCVAL 选择。 OSC WDT 检查频率是否过低或过高。

fOSC = OSCCON.OSCVAL - 1 + 16MHz

在配置 OSC WDT 功能之前,应禁用所有 SMU 振荡器看门狗报警响应选项,以避免意外的 SMU 报警。 此后,可以更改 OSCCON.OSCVAL 的值。 然后, OSC_WDT 应通过设置 OSCCON.OSCRES 重置。 这将请求使用新配置启动 OSC WDT 监控。 当设定 OSCCON.PLLLV 和 / 或 OSCCON.PLLHV 的预期正监测结果时,输入频率处于预期范围内。 当设置 OSCCON.OSCRES 清除 OSCCON.PLLLV 和 OSCCON.PLLHV 时,应设置两个状态标志。 因此,在再次启用 SMU 报警响应之前,应清除这两个标志。 如果只设置了位 OSCCON.OSCRES 而未对 OSCCON.OSCVAL 进行任何修改,也应使用 SMU 报警禁用 - 清除 - 启用序列。

如果 SMU 检测到振荡器监视报警,则必须执行与 PLL 锁定丢失事件相同的恢复过程。

Note:

振荡器看门狗主要用于 PLL 输入时钟 fOSC _i 通过寄存器 SYSPLLCON0.Insel = 01B 设置为 fOSC0 时。 如果 SYSCLK 通过 SYSPLLCON0.Insel = 10B 用作 fOSC _i 的源,用户应将 SYSCLK 频率限制在与使用晶体相同的范围内,或禁用 SMU 中的看门狗报警。 通过 SYSPLLCON0.Insel = 00B 使用备份时钟作为 fOSC _i 的输入时,也需要禁用看门狗报警。 数据表中列出了通过分配的 GPIO 输入引脚驱动 SYSCLK 时的可用晶体频率范围和允许的频率范围。

1.1.6 配置SMU和时钟相关的Alarm

SMU模块在后续的TC3xx系类文章中再详细讲解,这里仅仅列出在配置OSC时相关的SMU寄存器。

只有SMU_KEYS寄存器的CFGLCK[7:0]配置为0xBC时才能配置SMU.

配置SMU_AGiCFj寄存器Disable Clock相关的Alarm.

和Clock Alarm相关的Group是Group 8, 也就是AGiCFj中I == 8.

Note: AG8CF0, AG8CF1, AG8CF2三个寄存器的同一个bit的组合关系决定一个Alarm的类型。

举例:

AG8CF0[0].CF0, AG8CF1[0] .CF0, AG8CF2[0] .CF0 就是三个bit, 组合为一个0x0 – 0x7的具体Alarm类型,如果

AG8CF0[0] == 1,

AG8CF1[0] .CF0 == 1,

AG8CF2[0] .CF0== 1,

那么最后组合为111 = 0x7,产生的Alarm就是SMU_CPU_RST.

1.2 备用时钟

备用时钟源可用作备用时钟源。 此时钟源提供稳定但可靠的时钟源,可用作系统的时钟源。 它提供的准确度低于外部晶体或陶瓷谐振器。 不能启用或禁用备份时钟,也不能通过其他方式控制备份时钟,以阻止其常规操作。 因此,除了选择备份时钟作为源 (CCUCON0.CLKSEL = 00B 作为时钟分配的时钟源, SYSPLLCON0.Insel = 00B 作为两个 PLL 的时钟源) 外,没有可用的控制位。

1.3 OSC实际应用配置

需求:配置使用一个20MHz的外部无源晶振。

#include "IfxScu_reg.h" #include "IfxSmu_reg.h" static uint8 Startup_ClockInit_ConfigOSC(void) {     /*Disable SMU Clock Alarm*/     MODULE_SMU.KEYS.U = (uint32)0xBCU;             /* Enable access to SMU registers */     MODULE_SMU.CMD.U  = (uint32)0x05U;     MODULE_SMU.AG[8].U  = 0x1FU;                   /* Clear SMU Alarms*/     MODULE_SMU.KEYS.U = (uint32)0U; /*Congig OSC -- Start*/     Ifx_SCU_OSCCON scuOsccon;     uint32 timeoutCount;     uint8 error = 0;     UnlockEndinit_Core0();     scuOsccon.U      = MODULE_SCU.OSCCON.U;     scuOsccon.B.MODE = 0U;     /*fOSC = OSCCON.OSCVAL - 1 + 16MHz */     scuOsccon.B.OSCVAL = (uint32)5U;     MODULE_SCU.OSCCON.U       = scuOsccon.U;      /* Check if the configuration is valid */     timeoutCount = 0xFFFFF;     while((MODULE_SCU.OSCCON.B.PLLLV == 0U) && (MODULE_SCU.OSCCON.B.PLLHV == 0U))                                              {         if (((--(timeoutCount))


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有