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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值