0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TC3xx芯片时钟系统的时钟源详解

832065824 来源:汽车电子嵌入式 2023-11-29 09:26 次阅读

正文

1.时钟

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

1.1 有源晶振和无源晶振

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

1.1.1 无源晶振

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

29909898-8e4b-11ee-939d-92fbcf53809c.png

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

1.1.2 有源晶振

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

29b419b2-8e4b-11ee-939d-92fbcf53809c.png

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

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

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

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

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

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

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

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

1.1 振荡器电路(OSC)

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

1.1.1外部输入时钟模式

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

29c315f2-8e4b-11ee-939d-92fbcf53809c.png

Figure 1 AURIX TC3xx Platform Direct Clock Input

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

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

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

29d54e66-8e4b-11ee-939d-92fbcf53809c.png

Figure2 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频率是否可用

29e22dca-8e4b-11ee-939d-92fbcf53809c.png

29f1283e-8e4b-11ee-939d-92fbcf53809c.png

29ffe734-8e4b-11ee-939d-92fbcf53809c.png

2a19f2dc-8e4b-11ee-939d-92fbcf53809c.png

2a315422-8e4b-11ee-939d-92fbcf53809c.png

1.1.4 配置OSC

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

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

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

2a3e069a-8e4b-11ee-939d-92fbcf53809c.png

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

2a515b96-8e4b-11ee-939d-92fbcf53809c.png

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

2a6f19f6-8e4b-11ee-939d-92fbcf53809c.png

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.

2a80f720-8e4b-11ee-939d-92fbcf53809c.png

1.2 备用时钟

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

1.3 OSC实际应用配置

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

#include"IfxScu_reg.h"
#include"IfxSmu_reg.h"


staticuint8Startup_ClockInit_ConfigOSC(void)
{
/*DisableSMUClockAlarm*/
MODULE_SMU.KEYS.U=(uint32)0xBCU;/*EnableaccesstoSMUregisters*/
MODULE_SMU.CMD.U=(uint32)0x00000005;
MODULE_SMU.AG[8].U=0x1FU;/*ClearSMUAlarms*/
MODULE_SMU.KEYS.U=(uint32)0U;


/*CongigOSC--Start*/
Ifx_SCU_OSCCONscuOsccon;
uint32timeoutCount;
uint8error=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;




/*Checkiftheconfigurationisvalid*/
timeoutCount=0xFFFFF;
while((MODULE_SCU.OSCCON.B.PLLLV == 0U) && (MODULE_SCU.OSCCON.B.PLLHV == 0U)) 
{
if(((--(timeoutCount))<= 0)
        {
            (error) = 1;
            break;
        }
    }  
    /*Congig OSC -- End*/
    
    /* Enable SMU Clock Alarms */
    MODULE_SMU.KEYS.U = (uint32)0xBCU;             /* Enable access to SMU registers */
    MODULE_SMU.CMD.U  = (uint32)0x00000005;
    MODULE_SMU.AG[8].U  = 0x1FU;   /* Clear SMU Alarms*/
    MODULE_SMU.KEYS.U = (uint32)0U;


    LockEndinit_Core0();
    return error;
}







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 有源晶振
    +关注

    关注

    1

    文章

    786

    浏览量

    20158
  • 晶体管
    +关注

    关注

    77

    文章

    9058

    浏览量

    135242
  • 晶体振荡器
    +关注

    关注

    9

    文章

    505

    浏览量

    28475
  • 瓷片电容
    +关注

    关注

    0

    文章

    73

    浏览量

    14434
  • 时钟系统
    +关注

    关注

    1

    文章

    83

    浏览量

    11389

原文标题:TC3xx芯片Clock System功能详解-时钟源OSC

文章出处:【微信号:汽车电子嵌入式,微信公众号:汽车电子嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TC3xx芯片的Endinit功能详解

    为了提供系统的安全性能,TC3xx上一些重要的寄存器都受Endinit保护,不能直接修改。如果想要修改这些重要寄存器,就需要先按特定步骤解锁Endinit,然后才能修改这些重要的寄存器的值,最后还要
    的头像 发表于 11-27 09:23 823次阅读
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的Endinit功能<b class='flag-5'>详解</b>

    TC3xx芯片时钟系统的锁相环PLL详解

    中的Tick数就是基于模块时钟的)。本系列文章就来详细介绍TC3xx芯片时钟系统及其具体配置。本文为T
    的头像 发表于 12-01 09:37 810次阅读
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片时钟</b><b class='flag-5'>系统</b>的锁相环PLL<b class='flag-5'>详解</b>

    AURIX™ TC3XX如何暂时仅启用/禁用CAN中断?

    你我使用的是 AURIX™ TC3XX。 在 CAN ISR 处理期间,如何暂时仅启用/禁用 CAN 中断?
    发表于 01-18 06:47

    TC3xx SCR功耗应该怎么评估?

    TC3xx SCR处于70kHz active状态,以及CAN WAKE UP也处于active,Tricore都掉电了,这个时候功耗是多少呢?SCR中不同的组件激活状态下,功耗应该怎么评估,有没有
    发表于 01-19 08:28

    TC3XX寄存器读写时间过长怎么解决?

    我目前在做TC3XX底层代码优化,经过之前多次测试目前可以确定该系列芯片对单个寄存器地址的读写耗时超过100us。请问对于寄存器读写耗时你们官方有没有确切的文件说明?还有就是既然寄存器读写时间那么长100M的外设总线时钟是否有意
    发表于 01-25 06:56

    TC3xx系列怎么禁用trap?

    目前在TC3xx调试flash读写功能,单独运行flash相关功能没有问题,但将flash相关功能集成到工程中。操作pflash就会进入trap中,查看了一些帖子说是要禁掉trap?请问怎么禁用trap?目前没找到相关函数
    发表于 01-31 06:21

    请问TC3XX WDT 的check access应该如何使用?

    hi,各位老师:请问TC3XX WDT 的check access应该如何使用?以及Time Check Password如何理解及使用?读手册时,一直没有理解到Time Check
    发表于 02-02 08:17

    TC3xx系列是否支持RTC功能?

    请教各位,TC3xx系列芯片是否支持RTC功能,目前要记录snapshot的时间点(年月日时分秒)。
    发表于 02-02 07:53

    GCC和TASKING有什么区别?应该为AURIX™ TC3xx选择什么?

    GCC 和 TASKING 有什么区别? 我应该为 AURIX™ TC3xx 选择什么? 这将如何影响代码的运行?
    发表于 03-01 10:09

    TC3xx的HSM中有没有单调计数器?

    你好, 我看到 OPTIGA 有单调计数器,但我在 TC3xx 的 HSM 中确实找不到单调计数器。 能否确认TC3xx的HSM中没有单调计数器?
    发表于 03-05 07:56

    AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模块

    过ADC模块了,由于最近开始使用Infineon TC3xx芯片,在配置ADC模块的时候发现ADC模块对上提供的标准接口是一样的,在切换芯片的时候,IoHwAb_ADC模块基本不用修改,但是对于具体
    的头像 发表于 01-29 16:45 6287次阅读

    TC3xx芯片的Trap功能详解

    前面介绍了TC3xx一系列的功能与特性,看起来感觉高大上,但是总有一种空中楼阁的感觉:这些复杂的架构、特性、功能在平时好像也用不到呀?
    的头像 发表于 07-03 09:13 2974次阅读
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的Trap功能<b class='flag-5'>详解</b>

    TC3xx芯片DMU介绍

    AUTOSAR架构图下的Fls模块对上(Fee)模块提供统一的标准接口,但是具体的实现因不同的芯片而不一样,Infineon公司的Fls模块通过操作TC3xx芯片的DMU模块实现Fls的功能。在具体
    的头像 发表于 08-31 14:10 871次阅读
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>DMU介绍

    TC3xx芯片的MPU功能详解

    在前面的文章文章中我们介绍了RH850-U2A的内存保护单元(MPU),了解了MPU的概念以及在RH850-U2A上的具体使用流程,但是对于TC3xx系列芯片的的MPU功能不甚了解。
    的头像 发表于 09-19 11:42 1021次阅读
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的MPU功能<b class='flag-5'>详解</b>

    深入解析TC3xx芯片中的SMU模块应用

    TC3xx芯片是德国英飞凌半导体公司推出的汽车级处理器芯片系列,其中的SMU(System Management Unit)模块是其重要组成部分之一。SMU模块在TC3xx
    的头像 发表于 03-01 18:08 554次阅读