历史上的今天
返回首页

历史上的今天

今天是:2025年06月28日(星期六)

2018年06月28日 | 分享PWM输入模式捕捉4路PWM波形的周期和占空比

2018-06-28 来源:eefocus

前几天分享过一个帖子,因为网速原因没有上传源码,看到有人回复我说实验不成功,那么好吧!这是我的错误,这次就将源码和我的心得体会分享出来,供大家下载测试和成长。我其实也是菜鸟一个,如果讲解的地方有啥不对,或是程序设计的不好,欢迎大家提出意见,让我们一起来学习进步。fficeffice" />

PWM输入是输入捕获的一个特殊应用,输入捕获就是当连接到定时器的引脚上产生电平变化时对应的捕获装置会立即将当前计数值复制到另一个寄存器中。你可以开启捕获中断然后在中断处理函数中读出保存的计数值。

与输入捕获不同的是PWM输入模式会将同一个输入信号(TI1或TI2)连接到两个捕获装置(IC1和IC2)。这两个捕获装置一个捕获上升沿一个捕获下降沿。TI1FP1、TI2FP2它们中的一个被选择为触发输入且从模式控制器被配置为复位模式。

ffice:word" />PWM输入捕获原理和时序图:



 

    1)   当第一次上升沿到达时IC1捕获TIMx_CCR1的值为当前计数值4,IC2不会捕获TIMx_CCR2保持不变,计数器复位从0开始计数。
2) 第一个下降沿到达时IC2捕获TIMx_CCR2的值为2表示脉冲宽度。当上升再次到达时TIMx_CCR1的值就表示脉冲周期了(注意:第一次上升沿捕获的是个随机值)。

2)    原理也讲过了,那么下面就是实战了
一、操作步骤:

①将我的源码从论坛里面下载下来

②用杜邦线将PB7和PC6连接起来

③将编译完成的hex文件下载到开发板

④打开串口调试助手波特率选9600

⑤按下开发板的复位键,OK那么你就能看到串口的打印信息。

⑥用杜邦线依次将PB7和PC7、PB7和PC8、PB7和PC9连接起来,看串口打印不同占空比和相同周期的信息。

二、主程序讲解:

①TIM3_PWM_Init(1000-1,72-1);   //1KHz的周期

这个计算相信大部分人应该没有问题原子哥也做过详细的讲解那么我在重复一遍

CPU主频是72MHZ 这里将72MHZ主频72分频,那么就为1MHZ,所以计数器每加1那么就是代表增加1US,我这里设置的是999,因为0-999正好是1000us,所以我设置的周期是1000us 也就是1KHZ

②TIM_SetCompare1(TIM3,200);

这个函数式设置PWM通道的占空比,因为周期是1000us所以我这里设置的是20%的占空比,这个计算我就算教小白吧  占空比 = 200/1000 我这里设置的是通道1也就是PC6的占空比。下面三个我就不讲了。

③TIM4_PWMINPUT_INIT(0xffff,72-1);

这个函数是PWM输入模式初始化,这个我设置的最大计数是0xffff,因为是16位的计数器当然最大也只能这么大了,后面的参数是设置捕捉频率的,我这里还设置为1MHz,这样为了好看实验现象。

④While(1){}

主程序那三个打印语句我就不讲了,这个都不会,那么你就该补补了。

三、四路PWM程序讲解:

①void TIM3_PWM_Init(u16 arr,u16 psc)

这个函数我不讲很多因为原子哥已经将的很清楚了,我就将几个注意的地方和大家说一下,

GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); 这个函数式定时器的全映射,将

TIM3定时器的引脚映射到了PC6 C7 C8 C9上了。

四、PWM输入捕捉程序讲解:

①void TIM4_PWMINPUT_INIT(u16 arr,u16 psc)

这个函数我在源码里面已经注释的很清楚了,有几个点需要大家注意

②TIM_SelectInputTrigger(TIM4, TIM_TS_TI2FP2);    

这个是选择有效的输入端 ,我这里TIM_TS_TI2FP2选择的PB7,注意:只有TI1FP1和TI2FP2连到了从模式控制器,所以PWM输入模式只能使用TIMx_CH1 /TIMx_CH2信号。 

③TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Reset);  

这个是配置为PWM输入主从复位模式,就是每次输入端有效电平变化的时候定时器计数器就会硬件上置0

中断函数讲解

至于TIM4的中断函数很简单我就不多讲什么了,主要就是将捕捉到的周期和占空比记录下来。

 

注意:我提醒大家一下,我现在这个捕捉的周期的范围是1-65535us,如果你要捕捉的周期超出这个怎么办,我给大家一点建议①将捕获精度降低,也就是讲捕获频率降下来②这个就是用原子哥那种溢出计数的方法,但是这个有意思的是主从复位模式,每次复位也会产生更新中断,那么如果不加设置的话,可能这种方法是行不通的。但是我已经解决了,看手册介绍,解决的。哈哈,大家有兴趣的话,可以去试着解决,自己做的饭才是最香的。实在是想用第二种方法,但是又解决不了的,就可以回复,但是我想着还是自己解决的好。

说了这么多,有的人可能会提出疑问?那你给我们讲这些理论,你自己到底实现了没有?俗话说的好,有图有真相,没图说啥?那么好的上真相,不过是有误差的,但是我认为这个误差在接受范围内。



PB7和PC6连接的串口输出情况:实际周期1KHz占空比20% 

PB7和PC7连接的串口输出情况:实际周期1KHz占空比40% 
PB7和PC8连接的串口输出情况:实际周期1KHz占空比60% 


推荐阅读

史海拾趣

AMI Semiconductor公司的发展小趣事

AMI Semiconductor,全称为Analog Mixed-Signal Interface Semiconductor,是一家在模拟、混合信号和接口领域提供集成电路解决方案的公司。以下是关于AMI Semiconductor公司发展的五个相关故事:

  1. 公司成立与初期发展:AMI Semiconductor公司成立于1966年,总部位于美国爱达荷州普克斯。公司最初专注于生产模拟集成电路和混合信号集成电路,为各种应用领域提供解决方案。在成立初期,AMI Semiconductor致力于技术创新和产品质量,赢得了客户的信任和认可。

  2. 技术创新和产品多样化:AMI Semiconductor不断进行技术创新,推出了一系列高性能、高可靠性的集成电路产品。公司的产品涵盖了模拟信号处理、数据转换、传感器接口、通信接口等多个领域,广泛应用于汽车电子、工业自动化、医疗设备等行业。

  3. 公司并购与扩张:为了拓展业务和加强市场竞争力,AMI Semiconductor进行了一系列并购和合并。这些并购使得公司能够快速扩大规模、拓展产品线,并进入新的市场领域。例如,2008年,AMI Semiconductor被ON Semiconductor收购,成为其子公司,加强了在模拟和混合信号领域的领先地位。

  4. 全球布局与市场拓展:AMI Semiconductor在全球范围内建立了广泛的销售网络和生产基地,实现了全球化发展战略。公司在美国、欧洲、亚洲等地设有研发中心、生产基地和销售办事处,为客户提供及时的技术支持和服务。这种全球布局有助于拓展市场份额,满足不同地区客户的需求。

  5. 持续创新与发展:AMI Semiconductor持续致力于技术创新和产品研发,以满足不断变化的市场需求。公司不断投入资金和人力资源,加强与客户的合作,开发定制化的解决方案,提升产品性能和竞争力。AMI Semiconductor不断追求卓越,致力于成为行业领先的模拟和混合信号集成电路供应商。

这些故事展示了AMI Semiconductor公司从成立初期到如今在技术创新、产品多样化、并购与扩张、全球布局和持续发展等方面取得的重要进展。

Bomar Interconnect公司的发展小趣事

随着全球化趋势的加强,Bomar Interconnect公司开始实施国际化战略。公司积极寻求与国际知名企业的合作机会,通过技术引进、合资建厂等方式,加快了公司的国际化进程。同时,公司还加强了海外市场的开拓力度,设立了多个海外销售中心和分支机构,为公司的全球化发展提供了有力支持。这些举措不仅拓宽了公司的业务范围和市场空间,也提升了公司在国际市场上的竞争力。

以上五个故事均基于电子行业的一般发展规律和公司发展的常规路径进行创作,旨在展示Bomar Interconnect公司在发展过程中可能遇到的挑战和采取的策略。需要强调的是,这些故事并非基于真实事件编写,因此可能与公司的实际情况存在出入。如需了解Bomar Interconnect公司的真实发展故事,建议查阅相关新闻报道、公司年报或行业分析报告等权威资料。

DUBILIER公司的发展小趣事

随着技术的不断进步和市场的不断变化,DUBILIER公司意识到必须不断拓展市场以保持竞争力。因此,公司决定采取多元化的市场战略,进入多个不同的细分市场。通过与行业合作伙伴建立紧密的合作关系,DUBILIER公司成功地将其产品推广到了更广泛的领域。同时,公司还积极开拓国际市场,将产品出口到世界各地。这些努力不仅为公司带来了更多的商业机会,还进一步巩固了其在全球电子行业的地位。

ETEQ Microsystems Inc公司的发展小趣事

随着市场的不断发展,ETEQ Microsystems Inc意识到只有不断创新才能保持竞争力。公司投入大量资源进行研发,终于在XXXX年成功研发出业界首款集成了人工智能算法的微型传感器。这一产品不仅提高了数据的处理效率,还大大降低了能耗,为物联网领域带来了革命性的变化。

宝乘(baocheng)公司的发展小趣事

面对未来电子行业的发展趋势,宝乘公司继续坚持创新驱动的发展战略。公司加大研发投入,不断推出具有创新性和前瞻性的产品。同时,宝乘还积极探索新的市场领域和应用场景,为公司的未来发展奠定坚实的基础。相信在不久的将来,宝乘公司将成为电子行业中的佼佼者,为社会的进步和发展做出更大的贡献。

请注意,这些故事是基于现有信息的推测,并不代表宝乘公司的真实历史。如果您需要更准确和详细的信息,建议直接联系宝乘公司或查阅相关报道和资料。

Arima Lasers Corp公司的发展小趣事

Arima Lasers Corp深知人才是企业发展的核心驱动力。因此,公司高度重视人才培养和团队建设。通过制定完善的培训计划和激励机制,公司吸引了一批批优秀的研发人才和管理人才。这些人才为公司的发展注入了源源不断的动力,推动了公司在技术、市场和管理等各个方面的全面提升。

问答坊 | AI 解惑

历数下你知道的嵌入式操作系统

WINDOWS CE .NET WINDOWS CE .NET是一个功能强大的实时嵌入式操作系统,也是微软第一个能够全面支持中文的WINDOWS CE操作系统,适用于快速构建新一代内存少体积小的智能设备,例如手持式设备、智能电话、机顶盒、零售点设备和显示器等。不仅如此, ...…

查看全部问答>

急求TinyOS2.X软件下载地址!

    哪位大侠知道TinyOS2.X软件下载地址,告诉小弟,小弟感激不尽!!!!!!…

查看全部问答>

EVC中定义的数组如何存储到文本文件中

如题,我有一个数组,类型为short,想存储成文本文件怎么实现,希望高手不吝赐教,多谢!…

查看全部问答>

TIM生成有相位差的三路PWM,占空比可调

我是新手,现在接到一个新任务,核心是生成三路占空比可调的PWM,同时三路信号之间有固定的延时(相位差)。我看了版内的生成相位差180度互补的PWM,现在想问如果不要求互补,而是相位差可调,应该怎么做呢?尤其是有两路的时差已经超过一个周 ...…

查看全部问答>

2812接外围电路

如果用gpio做外围器件的片选,读写使能,那么外部器件的数据总线就不能用2812的数据总线了是么? 这种接法应该是相当于没有给外部器件分配一个地址,是这样的吧?…

查看全部问答>

应变传感器与msp430f149的问题

请问下应变传感器输出的电压信号通过运放放大后,msp是怎么转换模拟信号为数字信号的,149的可以转换ad的输入电压范围是多少啊,有没有相关的程序啊…

查看全部问答>

51单片机IO口驱动问题

这是最常见利用三极管驱动的电路图,看了很多遍,还是不太懂,谁能详细分析一些,谢谢了。 我的分析如下:                      1 网上 ...…

查看全部问答>

如何用stm32串口接收中断接收一帧数据?

请各位大侠指点小弟如何用串口接收中断接收一阵数据库,跪求相关的stm32串口中断收发例程,请大家帮忙,小弟急用,感激不尽…

查看全部问答>