打印
[其他ST产品]

STM32CubeIde中互补PWM配置项的详细解读

[复制链接]
1393|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qn7a12|  楼主 | 2023-12-26 12:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本文旨在记录和说明STM32CubeIde中互补PWM的配置项含义。本人作为STM32新手,在配置互补PWM时,太多的意义不明的配置项让我摸不着头脑,查阅资料并在这里记录,如果有不对的,欢迎各位大佬指正。

        本文硬件使用ST官方提供的NUCLEO-G474RE,记录互补PWM的产生过程。

一、调试方式
        使用SW的调试方式

使用特权

评论回复
沙发
qn7a12|  楼主 | 2023-12-26 12:17 | 只看该作者
Timebase Source:

        时基:时基就是为运行程序提供一个时间。比如在HAL库中,存在一些需要提供时钟的函数,比如延时函数,而时基就是为这些需要时钟的函数提供一个时间线,或者说给他计时。裸机运行时,默认使用SysTick作为时钟源,当有操作系统运行时,才会使用其他定时器作为时基。

        当使用SysTick作为时基时,stm32g4xx_hal.c中的HAL_Init(void)这样定义:使用systick作为时基源来配置1ms的tick,该函数是一个弱化函数。  /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
  if(HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)
  {
    return HAL_ERROR;
  }

使用特权

评论回复
板凳
qn7a12|  楼主 | 2023-12-26 12:19 | 只看该作者
二、时钟配置
        使用外部24MHz晶振

使用特权

评论回复
地板
qn7a12|  楼主 | 2023-12-26 12:23 | 只看该作者
  时钟频率配置乘最快的170MHz

使用特权

评论回复
5
qn7a12|  楼主 | 2023-12-26 12:23 | 只看该作者
三、配置TIM1高级定时器
高级定时器功能很强大,配置相对复杂,且需要针对对应的硬件去做配置。这里我们主要介绍高级定时器产生6路互补PWM来驱动MOS管,高级定时器1通道1、2、3用于产生6路互补的PWM,配置如下:

使用特权

评论回复
6
qn7a12|  楼主 | 2023-12-26 12:23 | 只看该作者
选择PWM Generation CHx CHxN,会产生两个引脚,TIM1_CHx产生一路PWM波,TIM1_CHxN产生它的PWM互补波,这样就可以驱动MOS管的上下开关,使得上下开关交替开通。

使用特权

评论回复
7
qn7a12|  楼主 | 2023-12-26 12:27 | 只看该作者
Prescaler(PSC)
预分频器:TIM1挂在APB2上,频率为170MHz,通过设置预分频器的值,可以分频出不同频率的时钟源,具体公式如下 PSC为填写的Prescaler的值,如想获取1MHz的时钟,则填写PSC的值为170-1即可,这里我们选择不分频。

使用特权

评论回复
8
qn7a12|  楼主 | 2023-12-26 12:27 | 只看该作者
Counter Mode
高级定时器的计数模式有三种: 递增计数模式、 递减计数模式和中心对齐模式,我们可以把定时器理解为一个计数器,根据计数模式的不同,计数器有不同的计数形式。

递增计数模式:每过一个时钟周期,计数器的值+1,当计数器的值等于ARR寄存器值时,产生更新事件,称为定时器上溢。

递减计数模式:从ARR寄存器的值开始,每过一个时钟周期,计数器的值-1,当计数器的值等于0时,产生更新事件,称为定时器下溢。

使用特权

评论回复
9
qn7a12|  楼主 | 2023-12-26 12:28 | 只看该作者
中心对齐模式:该模式下,计数器先从0开始递增,直到计数器值等于ARR-1时,定时器上溢,然后从ARR值开始递减,当计数器值为1时,定时器下溢,依此循环。

中心对齐模式的周期数为2*ARR,而递增和递减计数模式的周期数为ARR+1。

下面通过一张图展示定时器在不同计数模式下,更新事件发生的情况。

使用特权

评论回复
10
qn7a12|  楼主 | 2023-12-26 12:28 | 只看该作者
中心对齐模式又分为3种模式,其通过TIMx_CR1寄存器的位CMS进行设置,其与占空比无关,只是输出比较中断标志的置位有关。

01:中央对齐模式1 ,计数器交替地向上和向下计数。输出比较中断标志位,只在计数器向下计数时被设置。

使用特权

评论回复
11
qn7a12|  楼主 | 2023-12-26 12:28 | 只看该作者
10:中央对齐模式2, 计数器交替地向上和向下计数。输出比较中断标志位,只在计数器向上计数时被设置。
11:中央对齐模式3 ,计数器交替地向上和向下计数。输出比较中断标志位,只在计数器向下和向上计数时均被设置。

使用特权

评论回复
12
qn7a12|  楼主 | 2023-12-26 12:29 | 只看该作者
如图所示:ARR为自动重载寄存器,设置为8;CCR为比较寄存器,设置为4;tim_ocxref为PWM波,其在计数器为CCR时改变输出极性。CCxIF为比较标志,其根据不同的中央对齐模式在向上计数和向下计数到CCR时置位,向上的黑色箭头表示置位发生。

使用特权

评论回复
13
qn7a12|  楼主 | 2023-12-26 12:30 | 只看该作者
Dithering
抖动模式:PWM模式的有效分辨率可以通过启用抖动模式来提高,使用TIMx_CR1寄存器中的DITHEN位。这适用于CCR(占空比分辨率增加)和ARR (PWM频率分辨率增加)。

使用特权

评论回复
14
qn7a12|  楼主 | 2023-12-26 12:30 | 只看该作者
简单来说,原本CCR和ARR只有16bit的位数,现在增加4位有效位来表示小数,可以增加他们的分辨率,具体效果如图所示,更详细的使用方式可参考芯片手册。

使用特权

评论回复
15
qn7a12|  楼主 | 2023-12-26 12:31 | 只看该作者
Counter Period(AutoReload Register)
计数周期(自动重载寄存器/ARR寄存器),当选择递增计数模式时,定时器可以理解为一个跟随时钟不断递增的计数器,每过一个时钟周期,该计数器的值就+1,当计数器的值等于ARR的值时,就会产生更新事件。更新事件的产生时间基本的计算公式为: 递增/递减计数模式的时钟周期数为:ARR+1

中央对齐计数模式的时钟周期数为:2*ARR

Internal Clock Division
内部时钟分频:表示定时器时钟频率与死区时间发生器和数字滤波器使用的死区时间和采样时钟等内部时钟之间的分频比,称为CKD,一般设置为不分频。

使用特权

评论回复
16
qn7a12|  楼主 | 2023-12-26 12:31 | 只看该作者
Repetition Counter
重复计数器:我们知道定时器发生上溢或者下溢时,会直接生成更新事件。但是有重复计数器的定时器并不完全是这样的,定时器每次发生上溢或下溢时,重复计数器的值会减一,当重复计数器的值为 0 时,再发生一次上溢或者下溢才会生成定时器更新事件。

如果我们设置重复计数器寄存器 RCR 的值为 N,那么更新事件将在定时器发生 N+1 次上溢或下溢时发生。

使用特权

评论回复
17
qn7a12|  楼主 | 2023-12-26 12:31 | 只看该作者
auto-reload preload
自动重载预装载:ARR寄存器是否具有缓存作用

Disable:在运行过程修改ARR寄存器的值时,ARR 寄存器不进行缓冲,该值会马上被写入 ARR 影子寄存器中,从而直接生效。

使用特权

评论回复
18
qn7a12|  楼主 | 2023-12-26 12:31 | 只看该作者
Enable:在运行过程修改ARR寄存器的值时,ARR 寄存器进行缓冲,该值不会马上被写入 ARR 影子寄存器中,而是要等到更新事件发生才会被写入 ARR 影子寄存器,这时才生效。

Trigger Output(TRGO) Parameters 暂不清楚

使用特权

评论回复
19
qn7a12|  楼主 | 2023-12-26 12:32 | 只看该作者
Break(刹车)
刹车模式:所谓刹车(Break, Shut-Down)是指在PWM信号输出过程中,接收到触发信号,停止PWM信号的输出。而PWM信号停止之前之后输出什么状态,则是需要明确设定,避免负载端出现异常。而刹车以及再出发也有相应的控制机制。

使用特权

评论回复
20
qn7a12|  楼主 | 2023-12-26 12:32 | 只看该作者
上面的参考资料已经说的很清楚了,这里对配置项进行一个简单归纳

BPK Polarity
选择BRK的刹车有效电平,也就是选择BKIN管脚作为刹车输入的有效电平。BRK Polarity为High时,BKIN管脚收到上升沿电平后会产生PWM信号输出的刹车;BRK Polarity为Low时,BKIN管脚收到下降沿电平后会产生PWM信号输出的刹车。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

533

帖子

1

粉丝