链接:https://blog.csdn.net/gy3509/article/details/139629893?spm=1001.2014.3001.5502,讲述了只使用一个捕获寄存器测量脉宽和频率的方法,其实测量脉宽和频率还有一个更简单的方法就是使用PWM输入模式,PWM输入模式需要占用两个捕获寄存器。
图1 输入通道和捕获通道的关系映射图
当使用PWM输入模式的时候,因为一个输入通道(TIx)会占用两个捕获通道(ICx),所以一个定时器在使用PWM输入的时候最多只能使用两个输入通道(TIx)。
我们以输入通道TI1 工作在PWM 输入模式为例来讲解下具体的工作原理,其他通道以此类推即可。
PWM 信号由输入通道TI1 进入,因为是PWM 输入模式的缘故,信号会被分为两路,一路是TI1FP1,另外一路是TI1FP2。其中一路是周期,另一路是占空比,具体哪一路信号对应周期还是占空比,得从程序上设置哪一路信号作为触发输入,作为触发输入哪一路信号对应的就是周期,另一路就是对应占空比。作为触发输入的那一路信号还需要设置极性,是上升沿还是下降沿捕获,一旦设置好触发输入的极性,另外一路硬件就会自动配置为相反的极性捕获,无需软件配置。一句话概括就是:选定输入通道,确定触发信号,然后设置触发信号的极性即可,因为是PWM 输入的缘故,另一路信号则由硬件配置,无需软件配置。
当使用PWM 输入模式的时候必须将从模式控制器配置为复位模式(配置寄存器SMCR 的位SMS[2:0] 来实现),即当我们启动触发信号开始进行捕获的时候,同时把计数器CNT 复位清零。
下面我们以一个更加具体的时序图来分析下PWM 输入模式。
图2 PWM输入模式时序
PWM 信号由输入通道TI1 进入,配置TI1FP1 为触发信号,上升沿捕获。当上升沿的时候IC1 和IC2 同时捕获,计数器CNT 清零,到了下降沿的时候,IC2 捕获,此时计数器CNT 的值被锁存到捕获寄存器CCR2 中,到了下一个上升沿的时候,IC1 捕获,计数器CNT 的值被锁存到捕获寄存器CCR1 中。其中CCR2 测量的是脉宽,CCR1 测量的是周期。
从软件上来说,用PWM 输入模式测量脉宽和周期更容易,付出的代价是需要占用两个捕获寄存器。