时钟树配置

        时钟配置是一切的起源,为了更好地进行后续开发,我们需要从时钟开始进行理论梳理。本文梳理的信息是基于RH850/F1K系列,其中关于17603不支持的部分会尽量识别出来。

一、概念介绍

        1、时钟振荡器

        1. 主振荡器(MainOSC)

  • 功能:生成主时钟 X。
  • 外部依赖:需要外接一个晶体或陶瓷谐振器连接到引脚 X1 和 X2。
  • 用途:作为PLL的参考时钟(即PLL会基于这个时钟倍频或分频生成更高频率的系统时钟)。
  • ✅ 重要性:这是系统主时钟源,常用于高性能运行模式。

        2. 副振荡器(SubOSC)

  • 功能:生成副时钟 XT,典型频率为 32.768 kHz。
  • 外部依赖:需要外接一个32.768 kHz晶体连接到引脚 XT1 和 XT2。
  • 用途:主要用于实时时钟(RTC)应用,如计时、闹钟、日历等。
  • 特点:这个频率是标准的“秒脉冲”频率(2^15 Hz),便于分频得到1Hz信号。

17603为100pins的芯片,不支持SubOSC。

        3. 高速内部振荡器(HS IntOSC)

  • 功能:生成时钟 RH,典型频率为 8 MHz。
  • 特点:内部振荡器,无需外接元件。
  • 用途:用于不需要高精度、但需要快速启动或中等性能的场景(如启动阶段、低功耗模式切换)。
  • 优势:省去外部晶振,降低成本和PCB空间。

        4. 低速内部振荡器(LS IntOSC)

  • 功能:生成时钟 RL,典型频率为 240 kHz。
  • 特点:
    • 上电即自动启动。
    • 不可被关闭,始终运行。
  • 用途:主要用于低功耗模式下的唤醒、看门狗定时器、低速外设等。
  • 优势:保证系统在任何状态下都有基本时钟可用,提高可靠性。

        5. PLL(锁相环)

  • 功能:生成高速操作时钟 —— CPLLOUT 和 PPLLOUT。
  • 输入:通常以 MainOSC(X)为参考时钟。
  • 输出:通过倍频产生更高频率的系统时钟(例如几十MHz到上百MHz),用于CPU和高速外设。
  • ✅ 重要性:是系统性能的核心,决定CPU主频和高速外设(如USB、以太网、高速SPI等)能否正常工作。

总结表格(便于理解)

时钟源 频率(典型) 是否需外接元件 是否可关闭 主要用途 所在区域
MainOSC 可变(由晶振决定) ✅ 是(X1/X2) ✅ 可关 主时钟、PLL参考 AWO
SubOSC 32.768 kHz ✅ 是(XT1/XT2) ✅ 可关 实时时钟(RTC) AWO
HS IntOSC 8 MHz ❌ 否 ✅ 可关 中速运行、启动阶段 AWO
LS IntOSC 240 kHz ❌ 否 ❌ 不可关 低功耗唤醒、看门狗 AWO
PLL 可变(倍频后) ✅ 依赖MainOSC ✅ 可关 高速系统时钟(CPU/外设) ISO

        2、时钟系统中的命名规则

        SC中的Clocks configuration时钟树上的命名规则参照如下表格解读。

类型

命名格式

说明

时钟域

C_AWO_<name> / C_ISO_<name>

表示电源/时钟区域

域时钟信号

CKSCLK_A<name> / CKSCLK_I<name>

实际供给模块的时钟信号

时钟选择器

CKSC_A<name> / CKSC_I<name>

逻辑选择器(非寄存器)

时钟选择寄存器

CKSC_A<name>_S_CTL

选择时钟源的寄存器

时钟分频寄存器

CKSC_A<name>_D_CTL

设置分频系数的寄存

        3、时钟系统概览

时钟系统概览图

        按照信号流向的顺序进行分析。

        1. 振荡输入

        RH850/F1K系列最多有2组外部振荡输入源,这是外部晶振输入的管脚,相对的我们可以在《工程创建》章节中的MCU/MPU窗口中去检索XT1、XT2来确认自己的芯片是否支持2组外部晶振。

17603不支持XT1、XT2外部晶振输入源,也是印证上文提到的,不支持SubOSC。

        2. 时钟生成(Clock Generation)

        根据具体项目的需求设计自行选择,本人暂时设想中,会使用外部晶振驱动MainOSC,再用LS intOSC来进行低功耗设计。

        3. 时钟输出域(Clock Selection)

        输出两条路径:

        CKSCLK_A → 供给 AWO clock domains(Always-On / Always Wake-up 域,如低功耗唤醒模块);

        CKSCLK_I → 供给 ISO clock domains(Isolated 域,如安全隔离或独立运行模块)。

        4. 时钟监控器(CLMA)

        能够分别监控晶振生成的时钟的功能。(暂不介绍)

        5. 输出时钟模块(FOUT)

        接收来自Clock selection的时钟信号,通常是外部测试或者调试的输出测量管脚。(暂不介绍)

        4、Stand-by Controller

TAUJ_STPM寄存器示例

        每个可以设置Stop request in stand-by mode状态的时钟,都有一个专门的时钟寄存器用来设置STPMSK位,从而达到及时系统进入挂起状态,仍然能让时钟保持运行状态。

二、时钟树配置

        1、一级时钟

        得益于低速内部时钟的特性(上电自启动、始终运行),其作为一级时钟是最自恰的设计,不仅可以支撑低功耗休眠唤醒、还能用来设计看门狗以及基于内部的RTC。

LS intOSC 配置

        将AWDT、ARTC挂载在LS时钟上,并且设置Stby模式下继续运行,保证系统的安全性和RTC的意义。

二、二级时钟

        由于本人的芯片外部带有晶振,所以可以选择MainOSC这个依赖外部晶振的高速时钟来作为二级时钟,这一级时钟承担了系统的主要指责。

MainOSC 配置

        由于目前不知道后续要开发什么外设功能,所以暂时把所有的时钟线都开启,并且设置为stby模式下即停止运行,并且分频系数暂时不作调整。

        Oscillation source选择OSC mode即可,EXCLK是外部形成的时钟线。

三、PLL0

        将CPU Clock挂载到PLL0上,然后将输出频率设置为240MHz,使CPU时钟频率为最大值(暂时如此)。

四、PLL1

       将其他standby模式下stop的时钟总线,通通挂载到PLL1上,并且将输出频率设置为80Mhz,使输出值为最大值(暂时如此)。

三、结语

        经过第一节的理论梳理,对时钟树的认知提升不少,顷刻间即完成了一个简单的时钟树配置。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐