YTM32的时钟系统及SCU、IPC外设模块详解

本文详细介绍了YTM32B1ME0的时钟系统,包括SCU的多种时钟源和PLL机制,以及IPC对外设模块的时钟控制。讲解了上电状态、低功耗模式和软件支持,提供了YTMicroSDK的驱动程序资源。

YTM32时钟系统及SCU、IPC外设模块详解

简介

本文以YTM32B1ME0为例,学习和介绍YTM32的时钟系统,主要涉及SCU(System Clock Unit)和IPC(IP Control)模块,其中SCU管理众多的时钟源发生器,IPC负责将向外设模块供应合适的时钟。

原理与机制

系统时钟模块SCU

系统时钟模块(System Clock Unit,SCU)内部设计了多种时钟源,可作为MCU内部电路系统各部分外设、总线,以及子系统的时钟源。其中包含的时钟源有:

  • 高速内部RC振荡器(Fast Internal RC Oscillator,FIRC),96MHz时钟信号源。上电后默认的系统时钟源。
  • 低速内部RC振荡器(Slow Internal RC Oscillator,SIRC),12MHZ时钟信号源。
  • 高速晶体振荡器(Fast Crystal Oscillator,FXOSC),外接Hz - 24MHz晶振。
  • 低速晶体振荡器(Slow Crystal Oscillator,SXOSC),外接32.768kHz晶振。
  • 锁相环倍频电路(Phase Locked Loop,PLL),倍频器。输出最高120MHz。
  • 时钟监控子系统(Clock Monitor Unit,CMU),用于检测指定4种时钟信号的频率超出预设范围、时钟输出或者时钟输入信号失效的情况。

其中:

  • 除了SXOSC之外,FIRC、SIRC、FXOSC和PLL的输出时钟信号可以作为系统时钟(System Clock)的时钟源。
  • SXOSC虽然不能作为系统时钟源,但可为看门狗(WDG)和RTC提供晶振时钟源。
  • FIRC或FXOSC可以作为PLL的参考输入信号源。
  • SIRC时钟源始终在工作(上电后默认使用的系统时钟源),除非人为在Standby或PowerDown模式下关停。
  • 基于对安全性的考虑,SCU外设模块内部还集成了一个时钟监控子系统(Clock Monitor Unit,CMU),用于检测时钟源的频率超出预设范围、时钟输出或者时钟输入信号失效的情况。
    • SCU包含4个CMU子模块,分别监控低速总线(Slow Bus Clock),FIRC、FXOSC和PLL的时钟
    • FXOSC或SIRC可以作为CMU的参考输入时钟源
  • 可以通过软件,从指定的芯片引脚导出内部的多种时钟源的时钟脉冲信号。
  • SCU包含系统时钟源的无毛刺切换复用器,可以平稳过渡系统时钟源
  • SCU中,可以通过分频器,对系统时钟源(System Clock)进行分频,分别得到高速总线时钟(Fast Bus Clock)、低速总线时钟(Slow Bus Clock),以及内核时钟(Core Clock)。

从YTM32B1ME0x微控制器的手册中可以找到SCU的系统框图,也就是YTM32B1ME0x微控制器的时钟树,如图x所示。
在这里插入图片描述

图x SCU外设模块系统框图

从图中来看,SCU系统的时钟树路径是非常清晰的:

  • FIRC、FXOSC、SIRC、SXOSC是整个时钟发生系统的“原始时钟源”,可以“无中生有”产生时钟信号,这些时钟信号可以直接作为芯片上各子系统的时钟源
  • 芯片系统中最主要的“再生信号源”,是系统时钟,系统时钟通过一个复用器从四个时钟中选一个,其中就包含PLL的输出。系统时钟还可以经过多级分频器,分别得到Core Clock、Fast Bus Clock、Slow Bus Clock。
  • PLL的内部以压控振荡器作为倍频器,配合内部的分频器,可以将输入的时钟源倍频,产生一个PLL输出的时钟,可以通过系统时钟复用器进入系统时钟的衍生时钟,也可以直接引出作为PLL Clock。

图x右侧的这些时钟源,就是微控制器芯片内部的各种时钟源,可以作为外设的功能时钟源,例如,可以通过IPC模块(IP Control)为外设模块指定时钟源,如图x所示。

外设控制模块IPC

外设控制模块(IP Control,IPC)管理向片内各外设模块供应的时钟源,包括总线访问外设的时钟、外设的功能时钟(和分频)等,另外,还可以向外设发送复位控制信号,请求复位对应的外设模块。IPC系统框图如图x所示。

<think>好的,我需要帮助用户了解如何在YTM32B1MD1单片机中通过寄存器配置外设时钟。首先,我应该查阅YTM32B1MD1的数据手册或参考手册,找到关于时钟系统的部分。通常,时钟配置涉及系统时钟源选择、分频器设置以及外设时钟使能这几个主要步骤。 用户可能对寄存器配置不太熟悉,所以需要分步骤讲解。首先,确定时钟源,比如内部RC振荡器或外部晶振。然后配置分频器,确定外设时钟频率。接下来,找到对应外设的时钟使能寄存器,开启特定外设的时钟。 需要注意的是,直接操作寄存器时,必须确保地址正确,并且按位操作来设置或清除相应的位,避免影响其他配置。可能还需要考虑时钟门控和低功耗模式的相关设置。此外,不同外设可能有不同的时钟要求,例如USART需要精确的波特率时钟,而定时器可能需要更高的频率。 用户可能遇到的问题包括寄存器地址错误、未正确使能时钟导致外设无法工作,或者时钟频率配置不当导致外设功能异常。因此,在教程中应强调仔细检查寄存器地址,使用位掩码操作,并通过调试工具验证时钟配置是否生效。 最后,生成相关问题时,要考虑用户可能进一步想知道如何验证时钟配置、不同外设的具体配置方法,以及常见错误排查步骤。这有助于用户全面理解和应用所学内容。</think>### YTM32B1MD1单片机外设时钟配置教程 在YTM32B1MD1单片机中,外设时钟的配置主要通过对时钟控制寄存器(如`RCU_APB1EN`、`RCU_APB2EN`等)的操作实现。以下是具体步骤: #### 1. **查看时钟树结构** 首先需在数据手册中确认目标外设挂载的总线类型(APB1/APB2/AHB)。例如: - USART1属于APB2总线 - SPI1属于APB1总线[^1] #### 2. **使能外设时钟** 通过设置对应总线使能寄存器的位域,例如开启GPIOA时钟: ```c // APB2外设时钟使能寄存器地址:0x40021018 *(volatile uint32_t*)0x40021018 |= (1 << 2); // 开启GPIOA时钟 ``` #### 3. **配置时钟分频(可选)** 若需调整总线频率,需设置分频寄存器: ```c // APB1分频寄存器地址:0x4002101C *(volatile uint32_t*)0x4002101C &= ~(0x07 << 8); // 清除原有分频 *(volatile uint32_t*)0x4002101C |= (0x03 << 8); // 设置4分频 ``` #### 4. **验证配置** 可通过读取寄存器值或测量实际时钟信号验证配置是否生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值