YTM32的增强型定时器eTMR外设模块详解

本文介绍了YTM32微控制器上集成的eTMR外设,它是一个定时器,可实现输出比较、输入捕获等功能,多用于电机应用。文中阐述了其工作机制,包括系统框图、时钟源等,还介绍了输出比较、PWM等模式,最后提及软件应用要点和总结。

eTMR外设简介

YTM32微控制器上集成的eTMR模块,是一个定时器外设,下辖多至8个通道,除了可以进行基本的周期计数外,还可以实现硬件输出比较(PWM)、输入捕获的功能,有一些特别的eTMR示例,还支持正交编码器的功能。

YTM32微控制器上集成了定时器外设模块还有TMR、pTMR、LPTMR、RTC等,其中eTMR大多用于产生PWM信号,或者通过输入捕捉测量方波脉冲信号的宽度。大多用在电机相关的应用中。

每款芯片集成eTMR实例的数量不同,以YTM32B1ME05为例,总共6个eTMR,并且每个eTMR实例的部分功能也做了裁剪。如图x所示。
在这里插入图片描述

图x YTM32B1ME05上集成的6个eTMR外设

eTMR工作机制

系统框图

微控制器定时器外设模块的核心,是一个计数器。所谓通道,实际上是可以匹配计数器某个计数值的事件,用户可以配置在特定的情况下产生事件(例如,对外输出电平,对内产生触发信号等)对应输出比较的功能;也可以配置被外部的同步信号触发,将发生事件的时刻快照到通道的数值寄存器中,对应输入捕获的功能。因此,带有多通道的定时器外设大多设计得相似,可有系统框图,如图x所示。

在这里插入图片描述

图x 常规带有多通道的定时器外设系统运行框图

引脚与信号

eTMR外设对外有一些信号绑定到芯片的引脚上。如表x所示。

引脚名 信号描述 信号方向
TCLK_IN0, TCLK_IN1, TCLK_IN2 可选其一作为外部输入的计数器时钟源 输入
eTMR_CH0, eTMR_CH1, … , eTMR_CH6, eTMR_CH7 通道的输入输出信号:当工作在输入捕捉模式时,可送入触发信号;
当工作在输出比较或PWM模式时,可输出电平信号,产生PWM波形。
输入/输出
eTMR_FLT0, eTMR_FLT1, eTMR_FLT2, eTMR_FLT3 捕获外部的错误信号(Fault Event) 输入
eTMR_QD_PHA, eTMR_QD_PHB 正交编码器模式的输入信号 输入

计数器与时钟源

定时器外设引擎的基本核心是一个可以由外部时钟源驱动计数的定时器。

eTMR外设涉及到两个时钟源:驱动访问寄存器的外设总线时钟,和驱动定时器计数的功能时钟。有一些型号的芯片,可能会设计可以接入到eTMR的功能时钟的不同时钟源。例如,可以直接将PLL倍频后的高速时钟直接送入定时器外设,以获取更高的控制精度,也可以将低功耗模式下能够继续存活的低速时钟源接入定时器的时钟源,从而可以芯片的低功耗模式下继续自行工作。但在本例的YTM32B1ME05微控制器上,是将SCU模块中产生的FAST_BUS_CLK固定接入eTMR的功能时钟源。如图x所示。这在IPC模块的章节中的表Table 13.1 IP Clock Control Table的备注里,也有相关的描述。

eTMR module clock source is FAST_BUS_CLK default, also can use TCLK through configuring in the eTMR register, and TCLK frequency must be less than the half of FAST_BUS_CLK.

在这里插入图片描述

图x FAST_BUS_CLK时钟源的生成树

在eTMR外设模块内部,还可以通过配置寄存器eTMR_CTRL[CLKSRC],选择使用计数的功能时钟源,来自IPC模块的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} CLK

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值