历史上的今天
返回首页

历史上的今天

今天是:2025年03月02日(星期日)

2020年03月02日 | 【STM库应用】stm32 之 TIM (详解二 脉冲宽度、周期测量)

2020-03-02 来源:eefocus

今天主要是用TIM3进行PWM的输入模式,进行对矩形波的脉冲信号宽度以及其周期进行测量,先来看一幅图。

图1 TIM内部逻辑图


我们先来看看datasheet上是怎么说的:


该模式是输入捕获模式的一个特例,除下列区别外,操作与输入捕获模式相同:

● 两个ICx信号被映射至同一个TIx输入。

● 这2个ICx信号为边沿有效,但是极性相反。

● 其中一个TIxFP信号被作为触发输入信号,而从模式控制器被配置成复位模式。

例如,你需要测量输入到TI1上的PWM信号的长度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2

寄存器),具体步骤如下(取决于CK_INT的频率和预分频器的值) 

● 选择TIMx_CCR1的有效输入:置TIMx_CCMR1寄存器的CC1S=01(选择TI1)。

● 选择TI1FP1的有效极性(用来捕获数据到TIMx_CCR1中和清除计数器):置CC1P=0(上升沿

有效)。

● 选择TIMx_CCR2的有效输入:置TIMx_CCMR1寄存器的CC2S=10(选择TI1)。

● 选择TI1FP2的有效极性(捕获数据到TIMx_CCR2):置CC2P=1(下降沿有效)。

● 选择有效的触发输入信号:置TIMx_SMCR寄存器中的TS=101(选择TI1FP1)。


● 配置从模式控制器为复位模式:置TIMx_SMCR中的SMS=100。

● 使能捕获:置TIMx_CCER寄存器中CC1E=1且CC2E=1。


我们从图1上可以看出只有TI1FP1和TI2FP2连到了从模式控制器,所以PWM输入模式只能使用TIMx_CH1 /TIMx_CH2信号。

图2 IC1,IC2捕获信号图


TI1为输入PWM波信号波形,TIMx_CNT为计数器计数值,当第一个下降沿信号到来,IC2会先进行捕获,然后到下一个上升沿到来,IC1进行捕获!在捕获的同时,IC1和IC2会吧CNT的值映射到对应的CCR1、CCR2的寄存器里面,这个值就是我们需要的计数值!


那么我们所需测量的周期就是IC1捕获的值,脉冲宽度即为IC2测量的值了!


可是,这里有个bug,不注意的人,很容易犯错!我们的CCRx寄存器是一个16bit的寄存器计数范围为0~0xffff,即0~65535,可是当测量的矩形波周期太长,脉冲宽度太宽,二我们的计数又太快,很容易出现CCRx溢出现象,所以,我们在测量低频信号时,一定要对TIM的时钟进行分频,这样我们的计数就不会那么快了,也不会产生溢出现象,当我们计数计完了,再把分频所导致的结果进行倍频就OK了。


还有个地方,可能你只按照我上面说的进行做,你会发现他总是跟实际的频率,或者周期差那么一点点!其实这是有来由的!下面看看图3:

图3 注意点


根据图3,我们可以看出他在开始计数的过程中会差那么三个时钟,所以我们要在数值上进行补齐!也就这么多!下面附上代码:


void inpwm_init(void)

{

TIM_ICInitTypeDef  TIM_ICInitStructure;

  /* TIM3 clock enable */

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

 

  /* GPIOA clock enable */

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

 

  /* NVIC configuration */

  NVIC_Configuration();

 

  /* Configure the GPIO ports */

  GPIO_Configuration();

 

  /* TIM3 configuration: PWM Input mode ------------------------

     The external signal is connected to TIM3 CH2 pin (PA.07), 

     The Rising edge is used as active edge,

     The TIM3 CCR2 is used to compute the frequency value 

     The TIM3 CCR1 is used to compute the duty cycle value

  ------------------------------------------------------------ */

 

  TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;

  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;

  TIM_ICInitStructure.TIM_ICFilter = 0x0;

 

  TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);

 

  /* Select the TIM3 Input Trigger: TI2FP2 */

  TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);

 

  /* Select the slave Mode: Reset Mode */

  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);

 

  /* Enable the Master/Slave Mode */

  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);

 

  /* TIM enable counter */

  TIM_Cmd(TIM3, ENABLE);

 

  /* Enable the CC2 Interrupt Request */

  TIM_ITConfig(TIM3, TIM_IT_CC2|TIM_IT_CC1, ENABLE);

}


void TIM3_IRQHandler(void)

{

if(TIM_GetFlagStatus(TIM3,TIM_FLAG_CC1) == SET)

{

DutyCycle = TIM_GetCapture1(TIM3)+3;

Frequency = 72000000 / DutyCycle;

TIM_ClearFlag(TIM3,TIM_FLAG_CC1);

}

if(TIM_GetFlagStatus(TIM3,TIM_FLAG_CC2) == SET)

{

IC2Value = TIM_GetCapture2(TIM3)+4;

TIM_ClearFlag(TIM3,TIM_FLAG_CC2);

}

}

图4 实际波形

图5 测量结果

推荐阅读

史海拾趣

Anderson Power Products公司的发展小趣事

Anderson Power Products(APP)是一家专注于电源连接器和配件的制造商,以下是该公司发展的相关故事:

  1. 公司成立与初期阶段:Anderson Power Products成立于1936年,总部位于美国华盛顿州斯特林。最初,公司主要从事电源连接器的制造和销售。创始人是William M. Anderson和Harold J. McKenzie,他们致力于提供高质量、可靠的连接器产品,以满足不断增长的市场需求。

  2. 技术创新与产品发展:随着市场的不断变化和技术的进步,Anderson Power Products不断进行技术创新和产品开发。公司推出了一系列新型的电源连接器和配件产品,包括Powerpole®连接器、SB®连接器等,这些产品具有高功率密度、高可靠性和易用性的特点,得到了广大客户的青睐。

  3. 客户合作与市场拓展:Anderson Power Products与全球各个行业的客户建立了长期稳定的合作关系。公司的客户群涵盖了汽车、航空航天、工业、能源等多个领域。通过与客户的紧密合作,Anderson Power Products不断拓展市场份额,提升品牌知名度,成为电源连接器领域的领先供应商之一。

  4. 全球布局与生产基地:为了更好地服务全球客户,Anderson Power Products在全球建立了多个生产基地和销售办事处。除了在美国的总部外,公司还在欧洲、亚洲等地区设立了生产工厂和销售办事处,以满足不同地区客户的需求。这些生产基地拥有先进的设备和技术,能够为客户提供高质量的连接器产品。

  5. 持续创新与未来展望:作为一家专注于电源连接器的公司,Anderson Power Products将继续致力于技术创新和产品发展。公司将不断推出适应市场需求的新产品,提升生产效率和产品质量,以满足客户不断变化的需求。同时,Anderson Power Products也将继续关注行业的发展趋势和技术变革,不断调整战略,保持在行业内的竞争优势。

Crowd_Supply__Inc.公司的发展小趣事

在电子行业的众多初创公司中,Crowd Supply Inc.以其独特的理念和模式崭露头角。公司成立之初,便聚焦于开放式硬件和社区驱动的产品开发,这在当时的行业环境中还是一个较为新颖的概念。创始人团队由一群富有热情和创新精神的电子工程师和产品开发专家组成,他们通过线上平台汇聚了一群同样对电子硬件感兴趣的爱好者和开发者。初期,公司面临资金短缺、市场认可度低等挑战,但通过不断试错和社区反馈,逐渐找到了自己的发展方向。

Anaren Ceramics公司的发展小趣事

随着技术的不断成熟,Anaren Ceramics公司开始积极拓展市场。公司不仅在国内市场上取得了显著的成绩,还积极开拓国际市场。通过与全球知名电子企业的合作,Anaren Ceramics公司的产品逐渐进入了国际市场,赢得了众多客户的信赖和好评。这一系列的市场拓展活动不仅提升了公司的品牌影响力,也为公司的长期发展奠定了坚实的基础。

Corsair Electrical Connectors Inc公司的发展小趣事

在国内市场取得一定成绩后,Corsair开始将目光投向了更广阔的国际市场。公司积极参加国际电子展会,与海外客户建立联系,拓展销售渠道。同时,Corsair还根据不同国家和地区的市场需求,调整产品策略,提供定制化的解决方案。这些努力使得Corsair的产品逐渐走进了国际市场,公司的影响力也不断扩大。

General Magnetics Inc公司的发展小趣事
采用更高效的散热方式,如增加散热面积、优化风道设计等,以降低电子变压器的运行温度。
蓝箭(BLUE ROCKET)公司的发展小趣事

蓝箭电子的前身是佛山市无线电四厂,创建于七十年代初。随着时代的变迁和市场的需求,该厂在1998年成功转制为有限责任公司,迈出了向现代化企业转型的重要一步。这次转型不仅为公司注入了新的活力,也为后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

汽车前轮侧滑计算机检测系统的设计

1 引言    汽车前轮侧滑量是机动车辆安全技术检测的重要指标。当汽车直线行驶时前轮的横向位移量称侧滑量,它是前轮定位参数在动态情况下匹配性能的综合反映,若侧滑量超出规定范围,不仅会磨损轮胎、增大油耗,还会因转向轮操纵不灵、汽车行 ...…

查看全部问答>

各类开发实用电路图

各类开发实用电路图…

查看全部问答>

请各位高手指教,下面的电路能不能成立,不能成立的原因是什么?

电路是我自己画的,个人分析如下,有不对的地方希望大家指正:谢谢~ 1》通电,12V经R1到Q1的C极,经R2加至Q1的B极,Q1饱和导通,C极等于0 此时Q2,Q3,Q4的B极全部为0 Q2为PNP管,此时是导通状态,但对电路没影响 2》按S1, ...…

查看全部问答>

秒表计程序

请问存储的数据怎样让它循环调出呢?…

查看全部问答>

Linux系统移植(相当清晰的一份文档)推荐

该文档的目的是总结我们在工作中的一些经验,并把它们分享给喜欢ARM和Linux的朋友, 如有错误之处,请大家多多指点. 同样, 我们也希望更多人能把自己的工作经验和体会加入该文档,让大家共同进步. 该文档是一份交流性文档, 只供个人学习与交流,不允许 ...…

查看全部问答>

【藏书阁】晶体管脉冲电路一百例

目录: 详细信息: 一本很老的书,还有毛主席语录。里面介绍了100例由三极管组成的脉冲电路,很多电路设计很精妙,适合广大电子制作爱好者制作参考之用。 书名:晶体管脉冲电路一百例   作者:《晶体管脉冲电路一百例》编译组 ...…

查看全部问答>

【藏书阁】模-数与数-模转换技术基础

目录: 第一章 概论 第二章 采样和量化 第三章 模拟开关和多路切换器 第四章 放大器、采样/保持器和比较器 第五章 数-模转换器 第六章 模-数转换器 第七章 数据采集系统与数据分配系统 第八章 转角/直线位移-数字转换器 第九章 噪声干扰 ...…

查看全部问答>

绝好机会!! 推荐进华为

西安华为研究所开始了新一轮招聘,     专业:计算机,通信,电子,物理等工科专业(这次专业要求不很严)     工作经验:至少工作一年            如有意者:请将自己的建立发到邮箱& ...…

查看全部问答>