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

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

3天内不再提示

一个通道如何捕获PWM的频率和占空比?

撞上电子 2023-12-30 08:00 次阅读

一,前言

正常情况是双通道捕获PWM波,这种方法简单且准确,但是它占用的资源太多了,因为它使用定时器的两个通道,且这两个通道映射在一个通道上,同时配置一路捕获为触发定时器复位,所以只能使用2个通道来捕获。虽然也实现了捕获 PWM 的功能,但是代价也太大了,且很难同时捕获多个 PWM ,那有没有更好的方法呢?本文介绍了另一种捕获 PWM 的方法,只使用任何一路定时器的输入捕获,就可以测 PWM 的频率和占空比。


二、捕获PWM原理

8045ae62-a6a6-11ee-9ee2-92fbcf53809c.png

双通道就是上图的原理,利用两路输入捕获上升沿和下降沿,就能很简单的测出 PWM 频率和占空比。

8049acec-a6a6-11ee-9ee2-92fbcf53809c.png

分析上图,最开始捕获上升沿,在上升沿到来后开始捕获,然后转为捕获下降沿,捕获接下来的两个下降沿,依据两个下降沿之间计数的差值即可计算出PWM的总脉宽,从而计算出PWM频率,然后由第一个下降沿的计数值可以计算得出PWM高电平的脉宽,即可计算出PWM的占空比。有的人可能会问,那我为什么不可以以上升沿开始捕获,然后连续捕获下降沿和下一个上升沿呢?理论上这样是绝对没问题的,但是你想过没有,既然可以这样,那么 《STM32参考手册》上为什么要用两路输入捕获来测PWM?问题就在于 PWM的占空比以及频率。当PWM频率很快的时候,上升沿和下降沿切换的速度很快,而用一路输入捕获在很短的时间内切换捕获上升沿以及下降沿,很可能导致上升沿或者下降沿没捕捉到的情况。就比如PWM高电平的时间很短,你刚捕获到上升沿,然后切换捕捉下降沿,结果PWM的下降沿已经过去了。使用我的方法测PWM波的时候,从图中可以看到,至少两个下降沿的捕获是不会有问题的,也就是说,PWM频率的测量是不会出错的。而在从捕获上升沿到切换捕获下降沿的时候,上述捕获不到的问题依然会发生,那为什么我的方法就可以而其他方法就不行呢。原因就在于,上面已经提到过,我的方法PWM脉宽测量是没问题的,那么我就可以比较第一个下降沿时的计数值CNT1和CNT2(PWM脉宽的计数值),如果CNT1大,那表示遗漏了一个下降沿,那么高电平的计数值为CNT1-CNT2,反之高电平的计数值为CNT1。

805262ce-a6a6-11ee-9ee2-92fbcf53809c.png

一路输入捕获的配置比两路的配置简单,就是普通的输入捕获。具体的代码这里就不贴出来了,可以去参考我上一篇文章。这里把关键的捕获中断服务函数贴出来:代码如下:

u8 TIM5CH1_CAPTURE_STA=0; //输入捕获状态static u16 TIM5CH1_CNTTIME=0;u32 TIM5CH1_CAPTURE_VAL=0; //输入捕获值u32 TIM5CH1_CAPTURE_HIGHVAL=0; //定时器5中断服务程序 void TIM5_IRQHandler(void){ if(!(TIM5CH1_CAPTURE_STA&0X80))//还未成功捕获{if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET){if(TIM5CH1_CAPTURE_STA&0X40)//已经捕获到高电平了{TIM5CH1_CAPTURE_VAL+=65536;}TIM_ClearITPendingBit(TIM5, TIM_IT_Update); //清除中断标志位}if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕获1发生捕获事件{if(TIM5CH1_CAPTURE_STA&0x20) //捕获到第二个下降沿{TIM5CH1_CAPTURE_STA|=0X80;TIM5CH1_CAPTURE_VAL+=TIM5->CCR1-TIM5CH1_CNTTIME-TIM5CH1_CAPTURE_HIGHVAL;if(TIM5CH1_CAPTURE_HIGHVAL>TIM5CH1_CAPTURE_VAL)TIM5CH1_CAPTURE_HIGHVAL-=TIM5CH1_CAPTURE_VAL;else if(TIM5CH1_CAPTURE_HIGHVAL==TIM5CH1_CAPTURE_VAL)TIM5CH1_CAPTURE_HIGHVAL=0;TIM5->CCER &= ~(1<<1); //CC1P=0 设置为上升沿捕获}else if(TIM5CH1_CAPTURE_STA&0X40) //捕获到第一个下降沿{TIM5CH1_CAPTURE_STA|=0X20; //标记成功捕获到一次下降沿TIM5CH1_CAPTURE_HIGHVAL=TIM5CH1_CAPTURE_VAL+TIM5->CCR1-TIM5CH1_CNTTIME;}else //还未开始,第一次捕获上升沿{TIM5CH1_CNTTIME=TIM5->CCR1;TIM5CH1_CAPTURE_VAL=0;TIM5CH1_CAPTURE_STA|=0X40; //标记捕获到了上升沿TIM5->CCER |= (1<<1); //CC1P=1 设置为下降沿捕获}TIM5->SR&=0xfffd;// TIM_ClearITPendingBit(TIM5, TIM_IT_CC1); //清除中断标志位} }elseTIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位}

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

    关注

    114

    文章

    5172

    浏览量

    213699
  • 定时器
    +关注

    关注

    23

    文章

    3243

    浏览量

    114665
  • 双通道
    +关注

    关注

    5

    文章

    954

    浏览量

    33761
收藏 人收藏

    评论

    相关推荐

    精确PWM占空比箝位

    电子发烧友网站提供《精确PWM占空比箝位.pdf》资料免费下载
    发表于 10-22 10:25 0次下载
    精确<b class='flag-5'>PWM</b><b class='flag-5'>占空比</b>箝位

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

    2,即使__HAL_TIM_GetCounter放到前面。 我用的是TIM10和TIM13分别做两路PWM输入捕获,每个定时器都是先测上升沿,之后再测下降沿,再测上升沿的方式,来计算频率
    发表于 09-27 08:21

    pwm频率对电机有什么影响

    的影响: PWM频率对电机转速的影响 PWM频率是指PWM信号在
    的头像 发表于 08-08 16:12 3407次阅读

    PLC输出的pwm信号怎么看频率

    中高电平时间与整个周期时间的比值。例如,占空比为50%的PWM信号意味着在周期内,高电平
    的头像 发表于 08-08 15:32 900次阅读

    PWM载波频率与电机的关系

    威廉希尔官方网站 ,通过将模拟信号转换为数字信号来实现对电机的控制。PWM的基本思想是将周期性的模拟信号转换为周期性的数字信号,数字信号的
    的头像 发表于 08-08 15:23 1492次阅读

    如何创建具有不同占空比(但相同起始相位)的或多个额外的PWM输出?

    我实际上只需要PWM频率),但有五甚至六
    发表于 07-08 07:09

    文带你了解PWM原理、频率占空比

    :T=1/f周期=1/频率50Hz = 20ms 周期如果频率为50Hz ,也就是说周期
    发表于 03-27 14:12

    在使用定时器捕获两路PWM频率时,中断函数应该如何配置呢?

    在使用定时器捕获两路PWM频率时,中断函数应该如何配置呢?? 我采用如下的方式去获取,但得到的PW
    发表于 03-22 06:39

    tc377调试pwm输入捕获,输入频率小于10hz时输入占空比就会跳变的原因?

    我在调试pwm输入捕获遇到问题,我用的是tc377的板件,当输入频率小于10hz时输入占空比
    发表于 03-05 06:39

    pwm占空比和电压的关系 pid输出和pwm占空比怎么联系

    与电压之间存在定的关系。在PWM信号周期内,占空比的变化会导致电平高电平时长的变化。当占空比较小时,高电平时长较短,对应的平均电压也相对较低;而当
    的头像 发表于 02-02 17:17 6538次阅读

    pwm如何控制占空比和周期

    如果使用可编程PWM控制器,可以通过软件来控制占空比和周期。软件可以直接修改占空比寄存器的值,以控制高电平的持续时间,从而改变占空比。还可以修改周期寄存器的值,以改变整个
    的头像 发表于 01-17 15:00 5468次阅读

    占空比信号和频率信号的区别

    占空比信号和频率信号是电子工程领域中常见的两种信号类型,它们在性质和应用领域上有着较大的差异。下面将详细介绍占空比信号和频率信号的概念、特点以及应用。
    的头像 发表于 01-05 16:51 2393次阅读

    pwm频率占空比的计算公式

    PWM(脉宽调制)是种常用的控制威廉希尔官方网站 ,在电子系统中广泛应用。PWM频率占空比是其重要参数之
    的头像 发表于 12-28 11:40 2w次阅读

    怎么实现dsp芯片输出占空比固定的pwm波形

    实现DSP芯片输出占空比固定的PWM波形需要以下步骤:定义占空比、设置计时器、计算周期和持续时间、更新占空比、输出PWM信号。 第
    的头像 发表于 12-26 17:28 2631次阅读

    占空比什么是频率,什么是周期

    占空比(Duty Cycle)是指周期内,信号处于高电平的时间占整个周期的比例。通常用百分比表示,占空比越高表示信号处于高电平的时间越长。 频率
    的头像 发表于 12-18 14:41 4046次阅读