0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F4_TIM输入波形捕获 (脉冲频率、占空比)

黄工的嵌入式技术圈 ? 来源:黄工的嵌入式技术圈 ? 2020-03-25 13:52 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Ⅰ、概述

本文基于上一篇文章“TIM输入波形捕获(脉冲频率)”的基础上进行拓展,上一篇文章主要是捕获波形的频率,本文主要拓展捕获波形的占空比。

笔者实验测试的方法和上一篇文章一样,通过信号发生器产生PWM信号,通过串口发送频率和占空比到上位机(上位机串口助手显示其数值)。(没有信号发生器的朋友可以结合上一篇文章PWM输出做信号源;在同一块板子上也可以使用不同定时器,将PWM输出引脚接在捕获输入引脚)

实验现象:不同频率的实验现象请看上一篇文章(该文章提供的工程笔者也是进行了大量不同频率的测试,误差在几Hz属正常范围)。

1000Hz、20% - 80%占空比现象:


1000Hz、51% - 58%占空比现象:

关于本文的更多详情请往下看。

Ⅱ、实例工程下载

笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。

笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360云盘,欢迎下载测试、参照学习。

提供下载的软件工程是STM32F417的,但F4其他型号也适用(适用F4其他型号:关注微信,回复“修改型号”)。

STM32F4_TIM输入波形捕获(脉冲频率、占空比)实例:

https://yunpan.cn/cB2iknrjczWXe 访问密码 764c

STM32F4资料:

https://yunpan.cn/cR2pxqF5x2d9c 访问密码 53e7

Ⅲ、原理描述

笔者将捕获PWM波形简单画了一个示意图:


从上面的示意图可以看得出来我们需要捕获三个值(两个上升沿和中间的下降沿)。两个上升沿用于计算一个波形的周期(也就是可以计算其频率),因为捕获的“周期差值”就是脉冲数,而通过配置,我们可以知道每一个脉冲数的时间,这样就知道整个“周期差值”的时间。得到了“占空比差值”和“周期差值”,波形的占空比就得到了。

笔者将TIM分为三大块:时基部分、比较输出和输入捕获,请看下面截图“通用TIM框图”。

前面的文章已经将“时基部分”的一些基础知识讲述过了,“时基部分”的功能是比较有用的,它除了可以用来延时(定时)之外,它还可以拿来触发其他一些功能,如:触发DA转换、AD采集等。

上一篇文章讲述的就是图中比较输出部分,比较输出部分功能相对比较简单。

该文主要讲述“输入捕获”部分,这部分输入的通道1与2、通道3与4可以相互协作。该文只使用了TIM5的通道3,捕获输入信号频率。

通用TIM框图:


上面两图截取“STM32F4x5、x7参考手册”建议下载手册参看。

Ⅳ、源代码分析

笔者以F4标准外设库(同时也建议初学者使用官方的标准外设库)为基础建立的工程,主要以库的方式来讲述。

源代码很多地方都是和上一篇文章源代码相同,只修改了几个地方(其实主要就是增加了一路捕获占空比相关的配置):输入引脚的配置、TIM捕获配置及其中断、中断函数处理、主函数发送数据。

RCC、NVIC等这些容易忘记配置的地方都一样。

1.TIM输入捕获引脚配置


该函数位于timer.c文件下面;

主要增加了一路引脚。

注意2点:

A.引脚与通道对应:这个需要参看“数据手册”,该文TIM5通道3对应的引脚就是PA2.

B.复用配置:GPIO_PinAFConfig(GPIOA,GPIO_PinSource2, GPIO_AF_TIM5);

这个地方对于F1转F0、F4等的朋友需要注意,更加芯片系列及库的不同,他们之间存在一定的差异。

2.TIM输入捕获配置


该函数位于timer.c文件下面;

“时基部分”是在前面两篇文章讲述过的,这里主要对“输入捕获”部分理解,主要5个参数:

捕获通道:就是我们捕获的通道;

捕获极性:就是我们捕获脉冲的高还是低电平;

捕获选择:是直接捕获该通道,还是上面说的1,2通道协助捕获;

捕获分频:对捕获的脉冲分频;

捕获滤波:过滤掉波形;

3.计算捕获波形频率原理


该函数位于stm32f4xx_it.c文件下面;

该函数是TIM捕获波形的中断函数,同一个(TIM5)中断入口,有两个通道通道,也是计算频率和占空比重要的函数;

结合原理描述中“示意图”可以知道,我们需要捕获3个值:V0、V2和V1。

V0和V2是在通道3捕获:

capture_value0 = (uint32_t)(TIM5->CCR3);

capture_value2 = (uint32_t)(TIM5->CCR3);

V1在通道4捕获:
capture_value1 = (uint32_t)(TIM5->CCR4);

其中有一个标志位flag_capture是用于标志我们捕获的状态,我们捕获了V0将flag_capture= 1就是告诉程序我们要捕获V1 和 V2的值了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 波形
    +关注

    关注

    3

    文章

    393

    浏览量

    32472
  • 引脚
    +关注

    关注

    16

    文章

    1832

    浏览量

    53467
  • Tim
    Tim
    +关注

    关注

    0

    文章

    84

    浏览量

    18551
  • STM32F4
    +关注

    关注

    3

    文章

    203

    浏览量

    29170
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用STM32捕获PWM时同时捕获2个通道时会出现捕获频率值不准确,是什么原因导致的?

    在使用STM32F103芯片的2个定时器捕获2路PWM波时,当2路信号同时输入时,会出现捕获频率不准确,但是分开一路一路的
    发表于 05-14 06:24

    使用STM32捕获PWM时同时捕获2个通道时会出现捕获频率值不准确是什么原因导致的?

    在使用STM32F103芯片的2个定时器捕获2路PWM波时,当2路信号同时输入时,会出现捕获频率不准确,但是分开一路一路的
    发表于 04-27 08:39

    使用STM32捕获PWM时同时捕获2个通道时会出现捕获频率值不准确的问题,是什么原因导致的?

    在使用STM32F103芯片的2个定时器捕获2路PWM波时,当2路信号同时输入时,会出现捕获频率不准确,但是分开一路一路的
    发表于 04-25 08:29

    使用STM32捕获PWM时同时捕获2个通道时会出现捕获频率值不准,为什么?

    在使用STM32F103芯片的2个定时器捕获2路PWM波时,当2路信号同时输入时,会出现捕获频率不准确,但是分开一路一路的
    发表于 04-22 10:43

    泰克MDO3052示波器波形捕获率评测

    泰克MDO3052作为中端混合域示波器的代表型号,其波形捕获率性能在同类产品中处于领先地位。本文将从技术原理、实测数据、应用场景及局限性等多个维度,结合工程实践案例,全面解析MDO3052的波形
    的头像 发表于 04-02 11:49 ?466次阅读
    泰克MDO3052示波器<b class='flag-5'>波形</b><b class='flag-5'>捕获</b>率评测

    求助大佬我使用STM32F030F4P6 的PA3引脚输出PWM波形

    #include \"main.h\" #include \"stm32f0xx_gpio.h\" #include \"stm32f0xx_tim
    发表于 03-20 23:13

    STM32G474利用高精度HRTIM怎么捕获外部波形计算波形频率

    STM32G474 利用高精度HRTIM怎么捕获外部波形计算波形频率,想用STM32Cube配置
    发表于 03-10 06:29

    stm32同一个定时器不同的通道,可以不同时的输出pwm波形吗?

    请问,stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗?比如tim1的ch1输出,延时几毫秒后tim1的ch2输出。 现在是要输出两个相位不同的pwm
    发表于 03-07 08:20

    BUCK电路占空比对电流波形的影响

    BUCK电路的占空比对电流波形具有显著的影响。以下是对这一影响的分析: 一、占空比对电流波形的影响机制 在BUCK电路中,占空比决定了开关管
    的头像 发表于 12-12 17:08 ?1979次阅读

    PWM波形的特性与优化

    脉冲的平均值,进而控制负载的平均功率。 2. 占空比 占空比(Duty Cycle)是PWM波形中一个周期内高电平时间与整个周期时间的比值。占空比
    的头像 发表于 11-29 09:13 ?1897次阅读

    AMC1304M25-Q1 CLKIN输入范围是否只能是5~20M,DOUT高低电平获取的周期是多少?

    PWM作为CLKIN,但是PWM超过5M后波形不稳定。可以输入频率较低的PWM波作为时钟吗。 DOUT口捕获一个完整的信号需要多少个周期,是根据一个周期中DOUT口高低电平的
    发表于 11-28 07:48

    使用STM32F1输入捕获功能时,TIM6和TIM7无法实现输入捕获是哪里的问题?

    使用STM32F1输入捕获功能时,TIM6和TIM7无法实现输入
    发表于 09-27 09:11

    STM32的一个芯片测PWM输入频率有的时候不对是什么原因造成的?

    2个,即使__HAL_TIM_GetCounter放到前面。 我用的是TIM10和TIM13分别做两路PWM输入捕获,每个定时器都是先测上升
    发表于 09-27 08:21

    STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式

    概述 本篇文章主要介绍如何使用STM32CubeMX对红外波形进行解码,并通过串口打印。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板: 教学视频 选择
    发表于 09-05 16:19

    以下是放大脉冲信号后的输出波形输入脉冲信号为100HZ 占空比为 34% ,怎么去改善波形呢 ?

    你好下图是我 放大脉冲信号后的输出波形输入脉冲信号为100HZ占空比为 34%,请问我该怎样去改善
    发表于 08-29 06:13