历史上的今天
返回首页

历史上的今天

今天是:2025年08月21日(星期四)

正在发生

2019年08月21日 | STM32 PWM占空比和信号周期的控制因素分析

2019-08-21 来源:eefocus

前言

博文基于STM32F103ZET6芯片,标准固件库3.5.0和MDK5编写;

博文并不讨论PWM的基础知识,而是直接去谈对PWM灵活的控制问题;想全面了解的可以看看我写的专门针对PWM的博客: https://blog.csdn.net/wuyuzun/article/details/72851940

如有不足之处还行多多指教;

PWM的两个重要参数

占空比:0~100%;

信号周期:PWM信号里一个高电平和一个低电平的时间和;

对这两个参数的设置是配置PWM输出的核心也是今天要讨论的主要任务;

是什么决定上面这两个重要参数

首先要明白一个知识:STM32的定时器输出的PWM的占空比由定时器的三个寄存器决定,分别是


定时器计数器TIMx_CNT;

定时器自动重装载寄存器TIMx_ARR;

定时器捕获/比较寄存器TIMx_CCRx;

定时器预分频器TIMx_PSC;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CNT和CCRx的对占空比的影响:

对于本实验要满足的前提如下:

6. CNT是向上计数的方式;需设置TIMx_CRx寄存器中的DIR[1:0]=0;

7. CRx输出极性为高;需要设置TIMx_CCER寄存器中的CCxP=1;

8. CHx的模式为输出PWM1模式;需设置TIMx_CCMRx寄存器中的OCxM[2:0]=110;

(上面这三个因素对于PWM的输出至关重要,而且是定时器很难理解的地方)

占空比的形成过程:

计算公式:


当CNT当CNT>=CCRx时,OCxREF=0,Polarity=1,则CHx输出高电平1;

当CNT的值更新后,CHx从高电平再次转为低电平,自此下一个周期就开始了;

满足以上前提的时序图:(令ARR=8,下图中的CCxIF为捕获/比较中断标志位)

在这里插入图片描述

还可以从图中得到另一个结论:PWM的信号周期就等于CNT的更新周期;


占空比的计算:占空比 = CCRx/ARR; (前提不同,公式可能会变成1-(CCRx/ARR));

信号周期的计算:信号周期= (ARR+1)(PSC+1)/PCLKx; (这其实就是CNT的更新周期的计算)


总结

欲改变灯的亮度,只需改变占空比,欲改变占空比,只需改变CCRx的值或者ARR的值,一般都是改变CCRx的值;

PWM的信号周期如果长,整个灯就看不出来渐变的效果了,而是闪烁的效果,根据人的视觉暂留效应,对于信号周期的配置很重要;大于这个值的时候,用肉眼就可以看出闪烁感觉了;

推荐阅读

史海拾趣

奇力新(chilisin)公司的发展小趣事

奇力新公司自创立之初,就专注于电感器的研发与生产。创始人凭借对电感技术的深入理解和市场需求的敏锐洞察,确定了公司的发展方向。在创业初期,奇力新积极引进先进的生产设备和技术人才,建立了一套完整的技术研发和生产体系。通过不断的技术积累和创新,奇力新逐渐在电感器领域取得了领先地位。

Allied Electronic & Semiconductor Technology Inc公司的发展小趣事

随着国内市场的饱和,AE&ST公司开始将目光投向全球。公司积极寻找国际合作伙伴,拓展海外市场。在一次国际电子展上,AE&ST与一家欧洲知名电子公司达成了战略合作协议。双方共同研发了一款针对欧洲市场的特色产品,并成功打开了欧洲市场的大门。此后,AE&ST公司不断深化与国际伙伴的合作,逐步实现了全球化布局。

Compound Photonics公司的发展小趣事

在公司发展初期,Compound Photonics曾专注于一款微投显示模组的研发。然而,这个项目并未如预期般顺利,最终宣告失败。面对挫折,公司并没有放弃,而是迅速调整战略,转向LCoS方向。这一决策不仅让公司避免了进一步的损失,还为其在LCoS领域的发展打开了新的大门。

Anders DX公司的发展小趣事

在Micro LED领域,Compound Photonics同样展现出了强大的实力。公司曾与Plessey合作开发Micro LED产品,双方的合作一度被业界看好。然而,就在合作即将取得突破时,Meta公司突然出手收购了Plessey的产能,使得Compound Photonics失去了一个重要的合作伙伴。面对这一突如其来的竞争压力,Compound Photonics不得不重新调整战略,寻找新的合作伙伴。

Fremont_Micro_Devices_USA公司的发展小趣事

尽管在Micro LED领域遭遇了挫折,但Compound Photonics并没有因此沉沦。相反,公司凭借其在LCoS领域的深厚技术积累和良好的市场口碑,吸引了众多潜在合作伙伴的关注。其中,Snap公司表现出了强烈的收购意向。这一消息传出后,Compound Photonics的市场价值得到了进一步提升,公司的发展前景也变得更加广阔。

这五个故事展示了Compound Photonics公司在电子行业里发展起来的一些关键节点和重大事件。从收购Syntax-Brillian开启微显示领域之路,到微投显示模组项目失利后转向LCoS方向,再到成为业内知名LCoS方案商并与Lumus合作,以及与Plessey合作开发Micro LED产品遭遇Meta竞争,最后到Snap的收购意向,每一个故事都反映了公司在不同阶段的挑战与机遇。通过这些故事,我们可以看到Compound Photonics公司在电子行业里不断进取、创新发展的精神风貌。

Hi-Light Electronic Co Ltd公司的发展小趣事

尽管在Micro LED领域遭遇了挫折,但Compound Photonics并没有因此沉沦。相反,公司凭借其在LCoS领域的深厚技术积累和良好的市场口碑,吸引了众多潜在合作伙伴的关注。其中,Snap公司表现出了强烈的收购意向。这一消息传出后,Compound Photonics的市场价值得到了进一步提升,公司的发展前景也变得更加广阔。

这五个故事展示了Compound Photonics公司在电子行业里发展起来的一些关键节点和重大事件。从收购Syntax-Brillian开启微显示领域之路,到微投显示模组项目失利后转向LCoS方向,再到成为业内知名LCoS方案商并与Lumus合作,以及与Plessey合作开发Micro LED产品遭遇Meta竞争,最后到Snap的收购意向,每一个故事都反映了公司在不同阶段的挑战与机遇。通过这些故事,我们可以看到Compound Photonics公司在电子行业里不断进取、创新发展的精神风貌。

问答坊 | AI 解惑

PLD/FPGA 结构与原理初步

一.基于乘积项(Product-Term)的PLD结构 采用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Flash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺)我们先看一下这种PLD的总体结构(以MAX7000为例,其 ...…

查看全部问答>

SPLL问题(MATLAB)

附图是我的SPLL模型,有问题请教。积分器的输出到了2PI,就将积分器清零,这个模型该怎么修改。 另外这个模型如何离散化处理。 …

查看全部问答>

如何在XPS中定制用户设备的IP

系统组件面板中的总线接口给出了总线、处理器和IP间的互连关系。所以,用户创建的任何IP都必须适应已生成的系统,为满足这一条件,必须做到以下两点: 1)确定IP所需要的接口    对于用户定制的外围设备,必须指出它们所连接的总线,如 ...…

查看全部问答>

wince中如何选择文件路径???

请教 wince中自己使OpenFileDialog string n = op.FileName; 调试时出错,说找不到文件 wince中如何选择文件路径 …

查看全部问答>

急求c51计数器实用编程

#include #define uchar unsigned char; #define uint unsigned int; uchar a[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; uchar e,d,t; void chushihua(); uint x,y,b; main() {           ...…

查看全部问答>

求助GE PLC 系列6 与DC300故障原因

请较哪一位高手对GE PLC 系列6与DC 300驱动器控制系统熟悉一点的,小弟最近碰到一个难题,还没有得到彻底解决。故障现象:各机构的每个驱动器都显示FLA7,]而且系统控制复位无法合上。根据说明书,该故障由于通信出错引起的,但更换 ...…

查看全部问答>

MSP430G2开发板学习(五):IO端口学习

MSP430G2231的基本外设IO端口学习 #include   /*********************************************************************************** * Software Toggle P1.0 * P1DIR:端口输出输入方向设置寄存器 * P1OUT:端口数值寄存器&nbs ...…

查看全部问答>

立帖求助!AD10,PCB走线时的热点捕捉问题!

用altium designer 10画PCB,从一个焊盘向别处引线,但是引线总会以焊盘的中心热点为起点,板选项中把捕获的勾全去掉也不行,烦死了!简直是蛋疼欲碎啊! 怎么才能从鼠标点击的位置起引线? 求大神解惑! …

查看全部问答>