当前位置:职场发展 > stm32的PWM

stm32的PWM

  • 发布:2023-09-30 06:56

-->

  PWM是Pulse Width Modulation的缩写,即脉宽调制。对一系列脉冲的宽度进行调制,等效得到需要的波形;

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

  2。如果对每个输出波形进行傅立叶分析,它们的低频特性非常接近,仅在高频段有细微差别;

PWM 信号是数字信号,在任何给定时刻,全直流电源要么完全存在(开),要么根本不存在(关)。以重复的开或关脉冲序列将电压或电流源施加到模拟负载。 (简单来说就是用数字信号控制负载,达到模拟信号控制负载的效果;负载比如舵机)

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

  PWM控制有很多优点:

    1。从处理器到被控系统的信号均为数字形式,无需进行数模转换;

    2。保持信号为数字形式可以最大限度地减少噪声的影响。只有当噪声强到足以将逻辑1变为逻辑0或逻辑0变为逻辑1时,噪声才会影响数字信号。这就是使用PWM进行通信的主要原因;

STM32 脉宽调制:

  Stm32 定时器(TIM6 和 7 除外)。其他定时器可用于生成 PWM 输出。其中,高级定时器TIM1和TIM8可以同时产生7个PWM输出。

  通用定时器还可以同时生成最多4个PWM输出。这样stm32最多可以同时产生30个PWM输出; (如果添加重新映像,还可以添加更多)

  为了使用STM32下的通用定时器TIMx来产生PWM输出,我们将使用3个寄存器来控制PWM。这三个寄存器分别是:捕捉/比较模式寄存器(TIMx_CCMR1/2)、捕捉/比较使能寄存器(TIMx_CCER)、捕捉/比较寄存器(TIMx_CCR1~4)。请注意,还有一个 TIMx ARR 寄存器用于控制 PWM 输出频率

PWM输出模式:

 STM32的pwm输出采用两种模式,模式1和模式2,由TIMx_CCMRx寄存器的OCxM位决定(“110”为模式1,“111”为模式2)。模式1和模式2的区别如下:

  “110”:pwm 模式 1-----向上计数时,一次 TIMx_CNTTIMx_CCR1,通道 1 为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。

  “111”:pwm模式2-----向上计数时,一次TIMx_CNTTIMx_CCR1,通道1为有效电平,否则为无效电平;

  从计数模式来看,PWM用作定时器时与TIMx相同。还有向上计数模式、向下计数模式和居中对齐模式;

PWM输出引脚:

  pwm的输出引脚确定:

    

不同的TIMx分配不同的管脚,但考虑到管脚复用功能,STM32提出了重映射的概念,即通过设置某些相关寄存器,可以使用其他非原来指定的管子。该脚还可以输出PWM。

  例如TIM3的第二通道,没有重映射时,指定管脚为PA.7。如果设置了部分重映射,则TIM3_CH2的输出将映射到PB.5;如果设置为完全重新映像,则TIM3_CH2的输出将映射到PC.7;

PWM输出信号:

  pwm 输出方波信号。信号的频率由 TIMx 的时钟频率和 TIMx_ARR 预分频器决定。具体设置方法在前面定时器部分详细讲解;第二个输出信号的占空比由 TIMx_CRRx 寄存器决定。计算公式如下:

      占空比=(TIMx_CRRx/TIMx_ARR)*100%

   因此,您可以通过在CRR中填写适当的值来输出您需要的频率和占空比的方波信号;

具体步骤:

  1。设置RCC时钟;

  2。设置GPIO时钟; GPIO 模式应设置为复用推挽输出 GPIO_Model_AF_PP。如果需要引脚重新映射,则需要使用GPIO_PinRemapConfig()函数进行设置;

  3。设置TIMx定时器的相关寄存器;与之前的定时器寄存器设置相同;

  4。设置TIMx定时器的PWM相关寄存器;

      a。设置PWM模式(PWM默认是东杰的)

      b。设置占空比(通过公式计算)

      c。设置输出比较极性(之前介绍过)

      d。最重要的是使能TIMx的输出状态,以及使能TIMx的PWM输出使能;

 相关设置完成后,使用TIMx_Cmd()打开TIMx定时器即可得到PWM输出;

-->

相关文章