PWM由通用定时器(TIM2/3/4/5)作为时钟源,它有16位递增、递减、中心对齐计数器(计数值:0~2^16-1)和16位预分频器(预分频系数1~2^16),可用于触发ADC和DAC,在更新事件、触发事件、 输入捕获、输出比较时产生中断或DMA请求。
这4个通用定时器有4个独立通道,可以用于输入捕获、输出比较、输出PWM、单脉冲模式。
接下来我们通过框图来介绍我们的通用计时器的工作原理和结构:
第一部分是上面的时钟源部分,总共有4种时钟源,第一个框1的内部时钟源来自于我们的APB1总线(72MHz),第二个是框3的内部触发输入时钟,第三个是IO口复用为TIMx_ETR的时钟输入,第四个是从TIMx_CHN1/2输入的外部时钟模式TI1FP1/2的时钟源。
第二部分是控制部分从TRGO输出到其他定时器的TIMx_ETR或DAC/ADC。
第三个部分是时基单元,详细会在基本计时器中详细说明。
第四部分是输入捕获部分,就是框4。第五部分是捕获/比较部分。我们复用IO口,将外部输入时钟信号输入该IO口,经过滤波器和边沿检测器,获得稳定的边沿触发信号。然后配置预分频系数给预分频器,然后产生捕获事件来激活捕获/比较寄存器,然后将计数器的数据存入相应的寄存器。
第六个是输出比较部分。我们传入比较值进行比较值和计数器中的数据进行比较,最后输出比较的结果。
接下来介绍输出PWM的配置。
PWM模式1(低电平触发)是在向上计数时候,TIMx_CNT<TIMx_CCR1(比较值),通道为有效电平,否则无效;向下计数时,TIMx>TIMx_CCR1,通道为无效电平,否则为有效电平。
PWM模式2(高电平触发)是在向上计数时候,TIMx_CNT<TIMx_CCR1(比较值),通道为无效电平,否则有效;向下计数时,TIMx>TIMx_CCR1,通道为有效电平,否则为无效电平。
而输出电平是由计数模式和极性共同控制的。极性相当于是在有效电平内输出的电压,高极性即有效电平时期输出高电平,低极性便是有效电平时期输出低极性。比如我选择了PWM模式1、低极性,则我会收获以下图像:
而在正弦波波下的图像是:
至此关于PWM输出的部分知识点便介绍到这里。