YTM32使用eTMR定时器产生1Hz低频率PWM信号

YTM32使用eTMR定时器产生1Hz低频率PWM信号

需求

客户使用YTM32B1LE05微控制器(下文简称LE05)开发车载ECU,本机作为传感器设备,需要通过输出1HzPWM信号,告知主机当前设备的采样值。这个PWM信号的占空比可调,精度0.1%,表示输出0 - 1000范围内的采样数据。

软件模拟PWM

可用软件模拟,使用1ms周期的定时器中断:

  • 用一个变量对定时器中断进行计数,
  • 用一个常量作为周期计数器,
  • 再用一个变量作为占空比控制量的计数器,
  • 到了占空比事件和周期事件时,控制GPIO输出合适的电平即可。

对于48MHz主频的CPU,没有更多实时任务的场景中,以1ms周期的产生中断事件产生的系统负载是可以接受的。

  • 如果考虑为了防止被别的中断打断而影响输出信号的准确度:如果中断延迟发生在非事件点,则对控制GPIO完全没有影响;如果中断延迟发生在事件点,对控制GPIO的时间偏差最大为1ms。这在应用层面上是可以接受的。
  • 如果考虑为了防止打断别的中断服务而影响别的实时任务的时效性:定时器中断服务里仅仅对软件变量进行递增、判断,并在事件点控制GPIO输出电平而已,任务量极轻。
  • 作为参考,一些RTOS的时间片中断的周期也有用5ms或者10ms的的,其中还运行了比较繁重的调度器任务,包括操作任务的上下文切换等等。

但是,但是,但是,客户还是考虑尽量用硬件实现这个1Hz的功能,进一步减轻CPU的负载。(话说不影响性能的情况下,软件实现的可移植性不是更好么?)。好吧,大略一想,还是有机会实现的。

需求分析 - why not?

LE05的eTMR定时器外设模块可用于产生高速和高精度的PWM信号,但不能直接输出频率低至1Hz的PWM。

阅读LE05的手册可知,eTMR定时器的时钟源被绑定到高速总线时钟(FAST_BUS_CLK),并且没有分频可选,如图x所示。

在这里插入图片描述

图x IPC中为eTMR模块分配的时钟源

此处的FAST_BUS_CLK时钟源为48MHz,即为eTMR的计数器时钟。eTMR内部分频配置寄存器eTMR_CTRL[CLKPRS]只有7位,对应最大分频可以达到128。如图x

<think>好的,用户需要查找YTM32B1MD1芯片的PWM配置资料或教程。首先,我应该检查提供的引用内容,看看是否有直接相关的信息。引用[1]提到了I2C配置,引用[2]和[3]涉及Flash存储和boot swap,这些都不直接涉及PWM。但可能需要参考类似模块的配置方法。 考虑到YTM32系列可能有统一的配置风格,比如使用寄存器配置,用户可能需要查阅该芯片的数据手册,特别是PWM模块相关的章节。由于现有引用中没有PWM的具体信息,建议用户参考官方文档,并参考类似模块如I2C或EFM的配置流程。 另外,用户可能需要了解如何设置PWM的时钟源、占空比、周期等参数,以及相关的寄存器地址和功能描述。同时,可能存在示例代码或应用笔记,但需要官方资料支持。需要提示用户检查数据手册中的PWM章节,或者联系技术支持获取更多资源。</think>### YTM32B1MD1芯片PWM配置指南 YTM32B1MD1微控制器的PWM(脉宽调制)功能通常通过其定时器模块(如GPT或PWM专用模块)实现,具体配置需参考芯片数据手册中的**Timer/PWM模块章节**。以下是配置PWM的关键步骤和要点: 1. **时钟源配置** 需为PWM模块选择合适的时钟源(如内部系统时钟或外部时钟),并设置预分频器(Prescaler)以调整PWM频率。例如: ```c GPT->CR |= GPT_CR_CLKSRC_INTERNAL; // 选择内部时钟 GPT->PR = 79; // 预分频值设为80分频(PR寄存器值为N-1) ``` 2. **PWM模式设置** 在定时器控制寄存器中启用PWM模式,并配置计数模式(如边沿对齐或中心对齐)。例如: ```c GPT->CR |= GPT_CR_MODE_PWM | GPT_CR_CNTMODE_EDGE; // 边沿对齐PWM模式 ``` 3. **占空比与周期设置** - **周期值**:通过设置`GPT->ARR`(自动重载寄存器)定义PWM周期。 - **占空比**:通过`GPT->CCR`(比较捕获寄存器)控制高电平时间。 示例代码: ```c GPT->ARR = 999; // PWM周期 = (ARR+1) * 时钟周期 GPT->CCR = 300; // 占空比 = (CCR / (ARR+1)) * 100% = 30% ``` 4. **引脚复用与输出使能** 需通过GPIO复用功能将特定引脚映射到PWM输出通道,并配置为推挽输出模式。例如: ```c GPIO->AFRL |= (2 << 4); // 将PA1引脚复用为GPT_CH1 GPIO->MODER |= GPIO_MODER_OUTPUT; // 配置为输出模式 ``` 5. **中断与触发配置(可选)** 若需PWM触发ADC或DMA,需配置相关触发信号和中断使能位。 **注意事项**: - 具体寄存器名称和位定义需以数据手册为准,不同型号可能存在差异[^2]。 - 配置写保护寄存器时,需参考EFM模块的操作流程[^3]。 ### 相关资料建议 1. 查阅**YTM32B1MD1数据手册**中“Timer/PWM模块”章节,获取寄存器映射和功能描述。 2. 参考官方提供的**PWM应用笔记**或示例代码(如I2C Demo的工程结构[^1])。 3. 联系芯片供应商获取技术支持或培训材料。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值