历史上的今天
返回首页

历史上的今天

今天是:2025年08月12日(星期二)

正在发生

2019年08月12日 | STM32-(24):PWM基础

2019-08-12 来源:eefocus

PWM是Pulse Width Modulation的缩写,即脉冲宽度调制。其通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。

PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制,用来对一个具体模拟信号的电平进行编码。等效的实现是基于采样定理中的一个重要的结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。冲量即指窄脉冲的面积。这里所说的效果基本相同,是指该环节的输出响应波形基本相同。

如把各输出波形用傅里叶变换分析,则它们的低频段特性非常接近,仅在高频段略有差异。

在这里插入图片描述
为了实现a的效果,可以通过b这种正弦波去模拟达到这种效果。(通过每一段的面积相同去模拟)

PWM信号是数字的,在给定的任何时刻,满幅值的直流供电要么完全有(0N),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。

改变脉冲的周期可以达到调频的效果,改变脉冲的宽度或占空比可以达到调压的效果,因此,采用适当控制方法即可使电压或电流与频率协调变化。

PWM控制技术获得了空前的发展,并且广泛的运用在从测量、通信到功率控制与变换的许多领域中。
PWM具有很多的优点,主要优点如下:
①从处理器到被控系统信号都是数字形式的,无需进行数模转换;
②让信号保持为数字形式可将噪声影响降到最小,噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响,这是PWM用于通信的主要原因。

STM32的定时器除了 TIM6和7。其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出!

应用举例:

步进电机驱动
舵机控制器

1) PWM输出模式

STM32的PWM输出有两种模式,模式1和模式2,由TIMx CCMRx寄存器中的OCxM位确定的(“110”为模式1, “111”为模式2)。模式i和模式2的区别如下:

110 PWM模式1一在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(0C1REF=1)。

111: PWM模式2-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。

而从计数模式上来看,PWM也和TIMX在作定时器时一样,也有向上计数模式、向下计数模式和中心对齐模式。

举例分析:
在这里插入图片描述
比如上方 自动重装载寄存器(ARR)、计数器(CNT)、捕获/比较1寄存器(CCR1),比如将ARR的值设为50,然后CNT由0开始数,数到50之后(这里举例默认是向上计数的),又开始从0开始数,又假设CCR1的值设定为25,PWM的输出模式为 110,当计数值CNT小于25时,输出的OC1REF 为高电平,大于25时,输出低电平。这个波形的占空比为1:1,比较有规律,可以通过控制几个寄存器的值来得到我想要的波形。

2) PWM输出管脚

PWM的输出管脚是确定好的:
23:10
不同的TIMx有分配不同的引脚,但是考虑到管脚复用功能,STM32提出了一个重映像的概念,就是说通过设置某一些相关的寄存器,来使得在其他非原始指定的管脚上也能输出PWM.
比如说TIM3的第2个通道,在没有重映像的时候,指定的管脚是 PA.7,如果设置部分重映像之后,TIM3_CH2的输出就被映射到 PB.5上了,如果设置了完全重映像的话,TIM_CH2的输出就被映射到 PC.7上了。

3) PWM输出信号

PWM输出的是一个方波信号,信号的频率是由 TIMx 的时钟频率和 TIMx_ARR 预分频器所决定的,具体设置方法在前面一个定时器中有详细介绍。而输出信号的占空比则是由 TIMx_CRRx寄存器确定的。其公式为“占空比 = (TIMx_CRRx/TIMx_ARR)*100%”,因此,可以通过向CRR中填入适当的数来输出自己所需的频率和占空比的方波信号。

4) 操作步骤

1.设罝RCC时钟;
2.设置GPIO时钟;
3.设罝TIMx定时器的相关寄存器;
4.设罝TIMx定时器的PWM相关寄存器。

第2步设置GPIO时钟时,GPIO模式应该设置为复用推挽输出GPIO_Mode_AF_PP,如果需要引脚重映像的话,则需要用GPIO_PinRemapConfig()函数进行设置。

第3步设罝TIMx定时器的相关寄存器时,和之前介绍的一样。

第4步设罝PWM相关寄存器,首先要设罝PWM模式(默认情况下PWM是冻结的),然后设置占空比(根据前面所述公式进行计算),再设置输出比较极性:当设罝为High时,输出信号不反相,当设置为Low时,输出信号反相之后再输出。最重要是是要使能TIMx的输出状态和使能TIMx的PWM输出使能。

相关设置完成之后,就可以通过TIM_Cmd()来打开TIMx定时器,从而得到PWM输出了。

边沿对齐的PWM波形(ARR=8)
在这里插入图片描述
分析:向上计数模式,比如自动重装载寄存器(ARR=8),就是计数寄存器(CNT)会从0数到8,当比较单元CCRx=4时,计数器的值小于4时,输出高电平,大于等于时会发生跳变,变为低电平,当计数到8又从0开始计数时又会跳变为高电平。
中央对齐的PWM波形(ARR=8)
在这里插入图片描述


推荐阅读

史海拾趣

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

作为淄博市的重大项目,宝乘公司得到了各级政府的大力支持。这些支持不仅体现在资金扶持上,还包括政策优惠、人才引进等多个方面。在政府的助力下,宝乘公司得以快速发展,不断壮大。同时,公司也积极响应政府的号召,参与新旧动能转换等重大项目,为地方经济的发展做出了贡献。

Cal Crystal Lab Inc / Comclok Inc公司的发展小趣事

Cal Crystal Lab Inc起初是一家专注于电子晶体管研发的小型实验室。在电子行业的早期,晶体管的性能直接决定了电子设备的质量和性能。创始人张先生凭借对电子技术的深厚理解,带领团队不断攻克技术难关,成功研发出性能更稳定、寿命更长的晶体管。这一创新不仅让Cal Crystal Lab Inc在业内崭露头角,还吸引了大批合作伙伴的青睐。随着市场需求的不断增长,公司逐渐扩大规模,从一个小型实验室成长为拥有多条生产线的大型企业。

Bytesonic Corporation公司的发展小趣事

随着台湾本土市场的逐渐饱和,Bytesonic Corporation开始将目光投向更广阔的大陆市场。1996年7月,公司在中国广东省东莞市石街镇成立了分公司,迈出了进军大陆市场的第一步。这一决策不仅为公司带来了更多的商机,也为其在亚洲乃至全球市场的布局打下了坚实的基础。

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

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

CML Microcircuits公司的发展小趣事

面对未来电子行业的挑战和机遇,CML Microcircuits公司制定了可持续发展的未来规划。公司将继续加大在研发和创新方面的投入,推动技术的不断进步。同时,CML还将关注环保和可持续发展的问题,积极采用环保材料和节能技术,降低生产过程中的能耗和排放。此外,公司还将加强与全球合作伙伴的合作,共同推动电子行业的可持续发展。

这些故事虽然基于虚构,但它们展示了CML Microcircuits公司可能经历的发展路径和关键事件。在实际情况下,公司的发展可能受到多种因素的影响,包括市场环境、技术趋势、竞争态势等。因此,对于CML Microcircuits公司的真实历史和发展情况,还需要进一步了解和分析相关资料。

Communications公司的发展小趣事

在全球化的大背景下,一家名为“全球通信”的公司积极实施国际化发展战略,成功拓展了海外市场。他们不仅将产品和技术推向全球,还积极参与国际标准和规范的制定,提升了公司在国际通信行业的影响力。

通过与海外企业的合作与交流,“全球通信”不断吸收国际先进技术和管理经验,提升了自身的竞争力。同时,他们还积极参与国际公益事业,树立了良好的企业形象。

问答坊 | AI 解惑

税控行业获生产资质名单

税控行业获生产资质名单税控收款机产品生产资质申请企业情况表                                                序号 ...…

查看全部问答>

嵌入式GSM短信息接口的软硬件设计

引 言   SMS(Short Message Service)短信息服务是GSM(Global System for Mobile Communication)系统中提供的一种GSM终端(手机)之间,通过服务中心(Service Center)进行文本信息收发的应用服务,其中服务中心完成信息的存储和转发功能。短 ...…

查看全部问答>

DM9000的ip可以任意设置么?

在DM9000所给的web例子中,设定DM9000的IP地址为: 172,20,24,42,然后将对接的PC的IP也设在该网段就行了,我想问的是,是不是DM9000的IP可以任意设置,只要保证同和它连接的PC的IP在一个网段就行了?…

查看全部问答>

关于max232CPE的小问题

我用了max232cpe做了个串口烧录器,主要烧录STC51单片机,但是就是不行,我在max232里看到max232周围的电容用的是1u的,max232A用的电容是0.1U的,我想问一下max232可以用0.1u的电容吗?我的就是无法烧录,你们谁有完整的线路图给我个,谢谢。…

查看全部问答>

pci2040+dsp无中断响应

我的dsp里设置HPIC寄存器为0x0B0B,即产生HINT中断,但用表测HINT脚一直是高电平。难道是要在HPI_CSR里的Interrupt Event Register和Interrupt Mask Register这两个寄存器进行相关设置?还是其他什么要设置?我调了一个礼拜了,还是老样子,现在快疯 ...…

查看全部问答>

为什么在WinCE上DirectDraw用不了?

我的开发环境是VS2005,用的是PocketPC2003, 代码如下: #include \"ddraw.h\" #pragma comment(lib,\"ddraw.lib\") ......     IDirectDraw* pclDirectDraw;     if (FAILED(DirectDrawCreate(NULL, &pclDirectDraw, N ...…

查看全部问答>

定时器a求助

各位兄弟 我写了一个简单的程序不能执行 在tt==20的地方,请教高手?谢谢 #include <msp430x14x.h> #define uint unsigned int #define uchar unsigned char uchar num,tt; uchar ta××e[]={ 0xc0,0xfc,0x24,0x4f, 0x66,0x6 ...…

查看全部问答>

初学FPGA (4)不完整条件语句与时序电路(EEFPGA学习计划)

…… BEGIN IF CLK’EVENT AND CLK=’1’   THEN Q1<=D; END IF; 不完整的条件语句:即在条件语句中,没有将所有可能发生的情况给出对应的处理方式。对于这种现象,VHDL综合器理解为:对于不满足的条件,跳过Q1<=D不执行,但是需要保 ...…

查看全部问答>

数码管显示

小弟初学!请求各位帮我一下。共阳数码管 module LED(data,sel);     output[7:0] data;   output[7:0] sel;    wire [7:0] data;wire [7:0] sel;assign sel=8\'b11111111;    //位 ...…

查看全部问答>

为什么不能单步执行左移右移的操作

如题,,,,我发现在单步执行的时候,有左移或者右移的命令都跳过去了。这是怎么回事呢??…

查看全部问答>