TPM定时器模块的脉宽调制、输入捕捉、输出比较
脉宽调制PWM
脉宽调制PWM是电机控制的重要方法之一。PWM信号是一个高/低点评重复交易的输出信号,通常也叫脉宽调制波/PWM波
输入捕捉
用于监测外部开关量输入信号变化的时刻。
当外部信号在指定的MCU输入捕捉引脚上发生一个沿跳变(上升沿或下降沿),定时器捕捉到沿跳变之后,把计数器当前值锁存到通道寄存器。
同时产生输入捕捉中断,利用中断处理程序可以得到沿跳变的时刻,这个时刻是定时器工作基础上的精细时刻。
输出比较
用程序的方法在规定的较精确时刻输出需要的电平,实现对外部电路的控制。
脉宽调制的主要技术指标
周期:PWM信号的周期用其持续性的时钟周期个数来度量。
下图PWM信号的周期为8个时钟周期,即TPWM=8TCLK。
占空比:PWM占空比被定义为PWM信号处于有效电平的时钟周期数与整个PWM周期内的时钟周期数之比,用百分比表征。
极性:PWM极性决定了PWM波的有效电平。
正极性表示PWM有效电平为高,那么在边沿对齐的情况下,PWM引脚的平时电平就应该为低,开时产生PWM的信号为高电平。到达比较值时,跳变为低电平,到达PWM周期时又变为高电平,周而复始。
负极性相反,PWM引脚平时电平为高电平,有效电平为低电平。占空比仍定义为高电平时间与PWM周期之比。
分辨率:PWM分辨率ΔT是指脉冲宽度的最小时间增量。
若PWM是利用频率为48MHz的时钟源产生的,即时钟源周期20.8ns,那么脉冲宽度的每一增量为20.8ns,即PWM的分辨率,脉冲宽度的最小时间增量。
脉冲宽度的增加与减少只能是ΔT的整数倍。实际上脉冲宽度正是用高电平持续的时钟周期数来表征。
对齐方式:可以用PWM引脚输出发生跳变的时刻来描述PWM的边沿对齐与中心对齐两种对齐方式。
在平时电平为低电平的情况下,开始计数时,PWM引脚同步变高,即边沿对齐。
在平时电平为低电平的PWM情况下,中心对齐的PWM波,比边沿对齐的PWM波形向右平移了(k/2)个时钟周期,k为高电平所占周期数。
PWM的其他用途
为其他设备产生类似于时钟的信号,控制灯以一定频率闪烁,控制输入到某个设备的平均电流或电压等。
输入捕捉的应用场合
测量脉冲信号的周期与波形。
例如,自己编程产生的PWM波,可以直接连接输入捕捉引脚,通过输入捕捉的方法测量回来,看看是否达到要求。输入捕捉的应用场合还有电机的速度测量。
输出比较的应用场合
产生一定间隔的脉冲,典型的应用为实现软件的串行通讯。
输入捕捉与输出比较
输入捕捉-->数据输入
输出比较-->数据输出
- 根据通讯的波特率向通道寄存器写入延时的值。
- 根据待传的数据位确定有效输出电平的高低。
在输出比较中断处理程序中,重新更改通道寄存器的值,并根据下一位数据改写有效输出电平控制位。
TPM模块功能:输入捕捉,输出比较,PWM输出
TPM初始化函数
当使用TPM的上述三个功能时,必须把相应功能映射到不同的TPM通道上。其次是定时器计数溢出值,通过设定这个值确定TPM定时器的基本周期。
因为必须先确定TPM定时器的基本定时周期才可以对占空比,对齐方式等参数进行设定。
周期的大小,由总线时钟和模块时钟的分频器来决定,分频系数作为参数可以传入TPM时钟初始化函数。这样,TPM初始化函数就有来个参数。
TPM模块号、TPM通道号与TPM计数器周期可以在不同引脚组上实现应用中使用哪个引脚,在应用开发板在硬件设计阶段就确定。
为了使驱动构件适用,在头文件使用宏定义,确定TPM通道使用的引脚
但是若把源文件编译成库,再修改宏定义就不起作用了,必须重新使用源程序进行编译。
- 输入捕捉初始化函数添加了输入捕捉模式选择一个参数。
- 输出比较初始化函数则加入了占空比和输出比较模式选择两个参数
- PWM信号输出对应的加入占空比、对齐方式、极性三个可修改参数。
TPM模块基于驱动构件的编程
- 在TPM驱动构件头文件(tpm.h)中宏定义TPM0、TPM1、TPM2使用的引脚。
- 在main.c文件中进行TPM初始化、输入捕捉初始化、输出比较初始化、使能模块中断、开总中断。
- 在startup_MKL25Z4.S文件的中断向量表中找到响应中断服务例程的函数名,在中断向量表中找到TPM0、TPM1、TPM2接收中断服务例程的函数名分别是TPM0_IRQHandler、TPM1_IRQHandler、TPM2_IRQHandler。
- 在”…\08_Source\isr.c”中添加函数,并进行中断功能的编程