找回密码
 注册
关于网站域名变更的通知
查看: 898|回复: 3
打印 上一主题 下一主题

STM32 PWM输出

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-8-10 13:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本文将介绍通过STM32的定时器输出PWM,关于定时器的基础功能不再详解。
+ b1 g$ K% g9 w" h

该用户从未签到

2#
发表于 2021-8-10 14:09 | 只看该作者
01、PWM介绍
. y$ i. c& S+ V3 K. O( E" z" }3 aPWM定义:脉冲宽度调制(PulseWidthModulation,PWM)简称脉宽调制。通俗讲,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。
0 ?7 H/ A1 G! N2 {: Q% H& {4 K占空比定义:占空比就是高电平所占整个周期的时间) R4 W& P) a! ?( b" f
第一个PWM波,周期为10ms,高电平的时间为4ms,所以占空比为40%,同理第二个PWM波为60%,第三个为80%。. G. T& o# g/ G- D
PWM的频率: PWM的频率的整个周期的倒数,所以说上图PWM的周期为1/0.01,也就是100HZ。改变PWM的频率是通过改变整个的周期实现的。所以通过改变高低电平总共的时间、改变高电平占总周期的比例就可以实现任意频率、任意占空比的PWM波。* y  r  y9 D) A1 x5 T7 E
PWM的用途和优点:电机调速、功率调制、PID调节、通信等等,配置简单、抗干扰能力强,从处理器到被控系统信号都是数字形式的,无需进行数模转换。并且让信号保持为数字形式可将噪声影响降到最小,噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响,这是PWM用于通信的主要原因

该用户从未签到

3#
发表于 2021-8-10 14:26 | 只看该作者
02、STM32的管脚复用
* y3 `' p4 p( ]; @' z8 t$ m" BSTM32没有专门的PWM引脚,所以使用IO口的复用模式。首先确认PWM功能的输出管脚,使用定时器9。从下面的框图中得知,timer9只有两个输出通道,所以timer9只能输出两路PWM。在STM32F207数据手册中的Alternatefunction mapping图片中,timer9的两个通道分别可以复用为PA2,PA3,PE5和PE6。
  \; V+ U' a+ Y* {' N5 b
! g+ ]. n- t/ q8 I7 ^

该用户从未签到

4#
发表于 2021-8-10 15:05 | 只看该作者
03、STM32输出PWM原理本文将重点在②部分,捕获/对比通道讲解,其中STM32的PWM就是利用对比通道实现的。脉冲宽度调制模式可以生成一个信号,该信号频率由TIMx_ARR 寄存器值决定,其占空比则由TIMx_CCRx 寄存器值决定。" [# Z0 [3 x# [
+ G6 ?/ F" E3 K& x
从下图可以看出,当CCR寄存器和CNT计数器数值一样时,会产生动作(改变通道对应的GPIO电平)。由于CNT溢出时,重载值由TIMx_ARR寄存器值决定的。所以说TIMx_ARR寄存器值决定周期,而TIMx_CCRx寄存器值决定CNT溢出时,经过多久会产生动作(改变通道对应的GPIO电平),也就是决定了占空比。以向上计数为例,重载值为ARR,比较值为CRRx
3 J( P' \( w9 }STM32输出PWM的过程:
8 s, [8 O& B6 |, w6 |' t! p# l* H' t% ^0 |9 e
1、首先配置GPIO,配置定时器,具体参考一下代码。定时器配置参考《STM32基础定时器详解》。
( @& @' c0 m; d& ]8 k5 z! O: P  H
" |; s0 s7 Q8 V# q& h0 P2、捕获/比较通道使能比较通道: B* ]' T. S6 u& v4 z9 {4 t
3、使能完输出,就要配置PWM输出了
" ]5 V4 o2 H9 G: \  z4 S. [①TIMx_CCMR1寄存器的OC1M[2:0]位,设置输出模式控制器' j/ f) ^3 g( ~$ a6 a% E
. o) t, B* z5 v0 e
110:PWM模式1,111:PWM模式2。
; d4 S- p) K4 Y  j* d8 u; D, W# V( }( c' B  X% f- g% L8 c
②计数器值TIMx_CNT与通道1捕获比较寄存器CCR1进行比较,通过比较结果输出有效电平和无效电平。. U" X: L; G# K4 l9 T' P  w

: ~) B8 A+ n* w4 f. ~, _' zOC1REF=0 无效电平,OC1REF=1无效电平。  E* K5 V! u( F- n
; O. j. J2 o' |1 k# T; Q
③通过输出模式控制器产生的信号。TIMx_CCER寄存器的CC1P位,设置输入/捕获通道1输出极性。: _  w+ G+ ]" N+ R( p
# i4 D1 X+ [5 {% [+ ^7 t& B
0:高电平有效,1:低电平有效。
' |  d8 u7 k( x: b6 K& J
  }* _8 f6 @, O3 `& n; |# ^. A④TIMx_CCER:CC1E位控制输出使能电路,信号由此输出到对应引脚。
) Q: `' `' A* d
. L* Q  o6 c5 b" N9 k6 d! }, L0:关闭,1:打开。
+ E% w! v7 `$ e1 v
9 s) [8 \. O% W+ {" X- v+ B首先对PWM模式1和PWM模式2进行介绍:4 U# ^1 Q  B4 C) `, Y# O7 W

7 D, G2 r0 X) g9 ?* z模式1% i/ x; ?# u# Z6 E4 O8 i. o" e( A
# W, b+ j3 ~! ^
在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平;在向上计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。
! g+ B. {* }- }* c, P
$ {' Y( o! \( H+ Z% c* a2 o/ v) j模式2
2 q% [" m. d9 B: r1 ^, w
9 {  c5 L# Z" ~1 z在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。
0 t5 ~9 |9 W' e* ^4 w; f( f) X/ m. I1 p0 H" y* }
TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。
! i$ S& n4 j1 z5 |
7 q4 q+ W9 W9 N. X1 S0 V! PPWM输出高低电平由TIMx_CCMR1:OC1M位和TIMx_CCER:CC1P位共同决定。# U' y, m; n1 b1 _

3 w( q& G( \# \9 d总结下来:
1 I) [3 `, I* P# W
" r' a  a+ A* I  T# B# k! M模式1:
2 f. n- {5 H2 k" t2 _  }( x' b- }6 G$ o( k; t- D7 B, {
CNT<CCR为有效电平//(OC1REF =1)
+ D* o: ?0 V8 G& r
+ F& b6 B2 N. Q9 XCNT>CCR为无效电平//(OC1REF =0)
7 b4 D+ w5 Y' T3 O
$ \" @6 v5 _9 I, K. R模式2:' i# Q9 {1 W1 a+ F$ |' \$ b

' c; b8 n7 G+ RCNT<CCR为无效电平//(OC1REF =0)
3 b! U7 f5 ^. l+ @) `" \0 H$ L  T) I2 |- k4 r1 p' l5 y
CNT>CCR为有效电平//(OC1REF =1)
! @; z1 _! Y  O+ B
- z) J! u" Y7 m6 qCC1P:
2 ^+ }$ J3 B- b- T  S1 u9 X1 p: D
3 L4 A& g7 T0 t, b: {/ J) N; n+ h8 E- w0:高电平有效6 R7 T8 ^" u' U$ j& \: z
+ m0 ^' f" y2 U- ~, F5 I
1:低电平有效
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-21 15:41 , Processed in 0.062500 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表