ARM笔记-----输入捕获
2024-01-03 15:54:07

输入捕获可以对输入的信号的上升沿、下降沿或者双边沿进行捕获,常用的有测量输入信号的脉
宽,和测量
PWM
输入信号的频率和占空比这两种。
输入捕获的大概的原理
? ??当捕获到信号的跳变沿的时候,把计数器 CNT
的值锁存到捕获寄 存器 CCR
中,把前后两次捕获到的
CCR 寄存器中的值相减,就可以算出脉宽或者频率。如果捕获的脉宽的时间长度超过你的捕获定时器的周期,就会发生溢出,这个我们需要做额外的处理。
输入通道
? ? ? ?需要被测量的信号从定时器的外部引脚
TIMx_CH1/2/3/4
进入,通常叫
TI1/2/3/4
,在后面的捕获讲解中对于要被测量的信号我们都以 TIx
为标准叫法。
输入滤波器和边沿检测器
? ? ? 当输入的信号存在高频干扰的时候,我们需要对输入信号进行滤波,即进行重新采样,根据采样定律,采样的频率必须大于等于两倍的输入信号。比如输入的信号为 1M
,又存在高频的信号干
扰,那么此时就很有必要进行滤波,我们可以设置采样频率为
2M
,这样可以在保证采样到有效
信号的基础上把高于
2M
的高频干扰信号过滤掉。
滤波器的配置由
CR1
寄存器的位
CKD[1:0]
和
CCMR1/2
的位
ICxF[3:0]
控制。从
ICxF
位的描述
可知,采样频率
f
SAMPLE
可以由
f
CK_INT
和
f
DTS
分频后的时钟提供,其中是
f
CK_INT
内部时钟,
f
DTS
是
f
CK_INT
经过分频后得到的频率,分频因子由
CKD[1:0]
决定,可以是不分频,
2
分频或者是
4
分频。
边沿检测器用来设置信号在捕获的时候是什么边沿有效,可以是上升沿,下降沿,或者是双边沿,
具体的由
CCER
寄存器的位
CCxP
和
CCxNP
决定。
捕获通道
捕获通道就是图中的
IC1/2/3/4
,每个捕获通道都有相对应的捕获寄存器
CCR1/2/3/4
,当发生捕获
的时候,计数器
CNT
的值就会被锁存到捕获寄存器中。
这里我们要搞清楚输入通道和捕获通道的区别,输入通道是用来输入信号的,捕获通道是用来捕
获输入信号的通道,一个输入通道的信号可以同时输入给两个捕获通道。比如输入通道
TI1
的信
号经过滤波边沿检测器之后的
TI1FP1
和
TI1FP2
可以进入到捕获通道
IC1
和
IC2
,其实这就是我
们后面要讲的
PWM
输入捕获,只有一路输入信号(
TI1
)却占用了两个捕获通道(
IC1
和
IC2
)。
当只需要测量输入信号的脉宽时候,用一个捕获通道即可。输入通道和捕获通道的映射关系具体
由寄存器
CCMRx
的位
CCxS[1:0]
配置。
预分频器
ICx
的输出信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。具体的由寄存
器
CCMRx
的位
ICxPSC
配置,如果希望捕获信号的每一个边沿,则不分频。
捕获寄存器
经过预分频器的信号
ICxPS
是最终被捕获的信号,当发生捕获时(第一次),计数器
CNT
的值会
被锁存到捕获寄存器
CCR
中,还会产生
CCxI
中断,相应的中断位
CCxIF
(在
SR
寄存器中)会
被置位,通过软件或者读取
CCR
中的值可以将
CCxIF
清
0
。如果发生第二次捕获(即重复捕获:
CCR
寄存器中已捕获到计数器值且
CCxIF
标志已置
1
),则捕获溢出标志位
CCxOF
(在
SR
寄存器中)会被置位,CCxOF
只能通过软件清零。
输出比较

输出比较就是通过定时器的外部引脚对外输出控制信号,有冻结、将通道
X
(
x=1,2,3,4
)设置为
匹配时输出有效电平、将通道
X
设置为匹配时输出无效电平、翻转、强制变为无效电平、强制变
为有效电平、
PWM1
和
PWM2
这八种模式,具体使用哪种模式由寄存器
CCMRx
的位
OCxM[2:0]
配置。其中
PWM
模式是输出比较中的特例,使用的也最多
比较寄存器
当计数器
CNT
的值跟比较寄存器
CCR
的值相等的时候,输出参考信号
OCxREF
的信号的极性
就会改变,其中
OCxREF=1
(高电平)称之为有效电平,
OCxREF=0
(低电平)称之为无效电平,
并且会产生比较中断
CCxI
,相应的标志位
CCxIF
(
SR
寄存器中)会置位。然后
OCxREF
再经过
一系列的控制之后就成为真正的输出信号
OCx/OCxN
死区发生器
在生成的参考波形
OCxREF
的基础上,可以插入死区时间,用于生成两路互补的输出信号
OCx
和
OCxN
,死区时间的大小具体由
BDTR
寄存器的位
DTG[7:0]
配置。死区时间的大小必须根据与
输出信号相连接的器件及其特性来调整。下面我们简单举例说明下带死区的
PWM
信号的应用,
我们以一个板桥驱动电路为例。

在这个半桥驱动电路中,
Q1
导通,
Q2
截止,此时我想让
Q1
截止
Q2
导通,肯定是要先让
Q1
截
止一段时间之后,再等一段时间才让
Q2
导通,那么这段等待的时间就称为死区时间,因为
Q1
关闭需要时间(由
MOS
管的工艺决定)。如果
Q1
关闭之后,马上打开
Q2
,那么此时一段时间
内相当于
Q1
和
Q2
都导通了,这样电路会短路。
图
带死区插入的互补输出
是针对上面的半桥驱动电路而画的带死区插入的
PWM 信号,图中的死区时间要根据
MOS
管的工艺来调节。

输入捕获应用
输入捕获一般应用在两个方面,一个方面是脉冲跳变沿时间测量,另一方面是
PWM
输入测量。
测量脉宽或者频率

测量频率
当捕获通道
TIx
上出现上升沿时,发生第一次捕获,计数器
CNT
的值会被锁存到捕获寄存器
CCR
中,而且还会进入捕获中断,在中断服务程序中记录一次捕获(可以用一个标志变量来记录),并
把捕获寄存器中的值读取到
value1
中。当出现第二次上升沿时,发生第二次捕获,计数器
CNT
的值会再次被锁存到捕获寄存器
CCR
中,并再次进入捕获中断,在捕获中断中,把捕获寄存器
的值读取到
value3
中,并清除捕获记录标志。利用
value3
和
value1
的差值我们就可以算出信号的 周期(频率)。
测量脉宽
当捕获通道
TIx
上出现上升沿时,发生第一次捕获,计数器
CNT
的值会被锁存到捕获寄存器
CCR
中,而且还会进入捕获中断,在中断服务程序中记录一次捕获(可以用一个标志变量来记录),并
把捕获寄存器中的值读取到
value1
中。然后把捕获边沿改变为下降沿捕获,目的是捕获后面的
下降沿。当下降沿到来的时候,发生第二次捕获,计数器
CNT
的值会再次被锁存到捕获寄存器
CCR
中,并再次进入捕获中断,在捕获中断中,把捕获寄存器的值读取到
value3
中,并清除捕获
记录标志。然后把捕获边沿设置为上升沿捕获。
在测量脉宽过程中需要来回的切换捕获边沿的极性,如果测量的脉宽时间比较长,定时器就会发
生溢出,溢出的时候会产生更新中断,我们可以在中断里面对溢出进行记录处理。
PWM
输入模式
测量脉宽和频率还有一个更简便的方法就是使用
PWM
输入模式,该模式是输入捕获的特例,只
文章来源:https://blog.csdn.net/weixin_46323814/article/details/135362956
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!