STM32
直播中

刘桂英

7年用户 1179经验值
私信 关注
[问答]

F429的捕获功能实现原理是什么?

F429的捕获功能实现原理是什么?

回帖(1)

王伟鹏

2021-11-24 10:50:46
前言

捕获功能是高级定时器的重要功能之一。捕获功能就是检测ARM管脚是否出现对应的跳动边沿,若出现,则将计数值的值锁存起来。即用于测量指定跳变边沿出现的时间。
本文主要介绍F429的捕获功能实现原理。
主要参考文献:



  • RM0090参考文档

高级时钟功能框图






在高级时钟中,捕获功能大致如上面所示。其功能模块大致分成两个部分:


  • 输入阶段
  • 捕获/比较阶段

整个过程大致为:将信号通过管脚输入,在输入阶段经过滤波边缘检测等处理之后检测是否有预设的有效边沿信号,若出现有效边沿,则将计数器的值保存在捕获/比较寄存器中。若配置中断,DMA使能,则将触发中断/DMA。然后,在中断/DMA触发后,程序中继续处理捕获。
输入阶段






其中,输入阶段的详细逻辑框图可以如上图所示。


  • 滤波器:若外部信号高频杂波比较多的情况下,可以考虑使用滤波器。通过滤波器可以达到去除高频信号的目的,其有TIMx_CCMx的位ICxF[3:0]配置。
  • 边沿检测器:通过该模块,决定触发信号是上升沿有效还是下降沿有效。通过寄存器你TIMx_CCER中的CC1P/CC1NP来配置。
  • 来源选择:通过该模块选择通道触发信号的来源。通过TIMx_CCMR1寄存器的CC1S[1:0]位来配置。
  • 分频器:通过该模块对触发信号进行分频。该分频器通过TIMx_CCMR1的ICPS[1:0]位与TIMx_CCER寄存器中CC1E进行配置。

捕获/比较模块






在该部分,只看左半边,也就是捕获部分。


  • 通过CC1S,用来确定该通道是输入通道。
  • 通过CC1E,用来说明该通道捕获使能。
  • 通过CC1G,可以用来模拟触发捕获信号。

经过以上正确配置,捕获信号IC1PS传入该模块。则将计数器的值存入捕获/比较寄存器中,在中断响应函数中,可以将该数值读取。
效果

发生捕获事件时:



  • TIMx_CCR1 寄存器会获取计数器的值。
  • 将 CC1IF 标志置 1(中断标志)。如果至少发生了两次连续捕获,但 CC1IF 标志未被清零,这样 CC1OF 捕获溢出标志会被置 1。
  • 根据 CC1IE 位生成中断。
  • 根据 CC1DE 位生成 DMA 请求。

复位模式

当触发输入信号发生变化时,计数器以及预分频器可重新初始化。此外,如果TIMx_CR1 寄存器中 URS 位处于低电平,则会发生更新事件 UEV 。然后,所有预装载寄存器(TIMx_ARR 和 TIMx_CCRx)都将更新。换言之,当URS 位处于低电平,每次复位触发事件发生时,都触发更新事件与更新中断。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分