定时器的输入捕获
最终程序现象:
1.输入捕获模式测频率
2.PWMI模式(PWM输入模式)测频率和占空比
输入捕获电路:左边这一部分。 右边的就是输出比较部分。
4个输入捕获和输出比较通道,共用4个CCR寄存器,另外它们的CH1到CH4,4个通道的引脚,也是共用的。所以对于同一个定时器来说,输入捕获和输出比较,只能使用其中一个,不能同时使用。
TIMx_CH1-4是边沿信号输入引脚,一旦有边沿,比如上升沿,那这一块输入滤波和边沿检测电路就会检测到这个上升沿,让输入捕获电路产生动作。都是检测电平跳变,然后执行动作。只不过外部中断执行的动作是向CPU申请中断。而这里电路执行的动作就是控制后续电路,让当前CNT的值,锁存到CCR寄存器中。对比输出比较,引脚是输出端口;输入捕获,引脚是输入端口。输出比较是根据CNT和CCR的大小关系来执行输出动作。输入捕获是接收到输入信号,执行CNT锁存到CCR的动作。这就是输入捕获的执行流程和与输出比较的区别。那设计这样一个输入捕获电路有什么用呢?
脉冲间隔和频率意思差不多,电平持续时间和占空比差不多。 这些参数通过输入捕获电路,都可以很方便地进行测量。 如何配置输入捕获电路来测量这些参数,就是此节的任务。
高级定时器的输入捕获弟阿鲁和通用定时器没有区别,都是一样的。基本定时器没有输入捕获功能。
PWMI和主从触发模式,设计的非常巧妙,把这两个功能结合起来,测量频率占空比就是硬件全自动执行。软件不需要任何干预,也不需要进中断。需要测量的时候,直接读取CCR寄存器的值就可以了,使用非常方便,而且极大地减轻了软件的压力。
这里信号都只有高低电平的数字信号,对于STM32测频率而言,它也只是测量数字信号的,如果需要测量一个正弦波,那还需要搭建一个信号预处理电路,最简单的就是用运放搭一个比较器,把正弦波转换为数字信号,再输入给STM32就行了。那还要考虑一下隔离的问题,比如用一些隔离放大器、电压互感器等元件,隔离高压端和低压端,保证电路的安全,