YTM32增强型定时器eTMR的影子寄存器组及其同步载入机制解析

本文详细解读了YTM32增强型定时器eTMR的影子寄存器组,以及其同步载入机制,包括不同时钟源、寄存器配置、同步更新流程和频率控制,以帮助用户理解在电机控制等应用中如何有效利用这一机制进行精确的PWM控制。

YTM32增强型定时器eTMR的影子寄存器组及其同步载入机制解析

Introduction

在微控制器平台上,设计多数能够产生多路PWM信号输出的高精度定时器外设(例如NXP的FTMFlexPWM等模块),大多会使用两路时钟源驱动电路系统工作:一路是总线时钟,用于用户(CPU或DMA等总线master设备)访问外设寄存器的数字电路部分(digital wrapper);另一路专供给计数器(也可称为模块的“功能时钟”),这个时钟根据设计需求,大多越快越好,将精细的计数节拍粒度也对应着输出PWM信号更精密的控制分辨率。然而,当用户通过配置寄存器要作用于计数器相关的电路时,因为两个时钟源的频率和相位都是不同步的(来自于两个不同的独立时钟源),另外,在有些应用中,软件配置需要在特定的安全的时刻才能生效,这就是所谓的同步机制。

YTM32的增强型定时器eTMR外设,也设计了这种同步机制,并且对应使用了“影子寄存器”用于暂存尚未生效的寄存器配置值。一些用户特别是无刷电机应用中,需要严格控制eTMR输出PWM的信号的多项配置同时更新(软件写入寄存器还是有先后顺序的,但硬件要同时载入生效,否则会产生“冲突冒险”危险状态),对eTMR影子寄存器的同步机制需要特别了解。本文面向这些应用场景,以YTM32B1ME微控制器为例,从RM手册出发,将详细讲解对eTMR的同步机制。

eTMR的两路时钟源

本例中,YTM32B1ME05微控制器的手册中有表Table 13.1: IP Clock Control Table,记录eTMR使用FAST_BUS_CLK作为总线时钟,如图x所示。

在这里插入图片描述

图x eTMR的总线时钟源

在表Table 13.1: IP Clock Control Table的备注里,专门注明了eTMR外设模块的功能时钟是固定接入了FAST_BUS_CLK。如图x所示。

在这里插入图片描述

额,这只是碰巧使用了同一个时钟源。

在eTMR外设模块内部,还可以通过配置寄存器eTMR_CTRL[CLKSRC],选择使用计数的功能时钟源,来自FAST_BUS_CLK?或是从eTMR_TCLK_IN0引脚接入的外部时钟源。而在CIM外设中,可以通过配置寄存器CIM_ETMROPT0[ETMRx_EXTCLK_SEL],选择eTMR_TCLK_IN0/eTMR_TCLK_IN1/eTMR_TCLK_IN2其中之一生效。

eTMR的计数时钟信号CLK_SRC进入eTMR外设后,还需要经过一个7位的分频器,才会送入eTMR的计数器驱动计数CLK_CNT。这个分频器的分频因子,是在寄存器eTMR_CTRL[CLKPRS]中设定的。有计数器计数时钟频率的计算公式如下:
C L K C N T = C L K S R C C T R L [ C L K P R S ] + 1 CLK_{CNT} = \frac{CLK_{SRC}}{CTRL[CLKPRS]+1} CLKCNT=

<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. **验证配置** 可通过读取寄存器值或测量实际时钟信号验证配置是否生效。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值