STM32G474_PWM输出的抖动模式

看到哪记到哪

抖动模式(Dithering mode)

在查看手册的时候发现了这个模式,第一次看没看懂(可能是太困了),今天又看了一遍手册,大致理解了这个模式的作用。
抖动模式的功能就是增加PWM的分辨率。
手册的介绍是这样的:
在这里插入图片描述

抖动模式
PWM的有效分辨率可以通过启动抖动模式来提高,使能TIMx_CR1寄存器中的DITHEN位来启动抖动模式。这适用于CCR(占空比分辨率增加)和ARR(PWM频率分辨率增加)。
其工作原理是在16个连续的脉宽调制周期内稍微改变实际的CCR(或ARR)值(增加或不增加一个定时器时钟周期),并预先确定模型。这个考虑到平均占空比或PWM周期,可将分辨率提高16倍。下图显示了应用于4个连续PWM周期的抖动原理。

图中就可以看到启动了抖动模式后,增加了分辨率。

默认的平均 占空比 = (7+7+7+7) / (12×4) = 0.5833333333333333
DC = (7+¼)/5 的平均 占空比 = (8+7+7+7) / (12×4)= 0.6041666666666667
DC = (7+½)/5 的平均 占空比 = (8+7+8+7) / (12×4)= 0.625
DC = (7+¾)/5 的平均 占空比 = (8+8+8+7) / (12×4)= 0.6458333333333333
DC = 8/5 的平均 占空比 = (8+8+8+8)/ (12×4)= 0.6666666666666667

上述例子只是¼的步进,16个PWM一组的话就是在这里插入图片描述
的步进。

因此这个功能应该有些作用!
抖动模式时,16bit定时器和32bit定时器的ARR和CCRx数据格式如下:
在这里插入图片描述
可以看到:32bit定时器的数据被砍到了28bit,而16bit的定时器数据没有什么影响,因此抖动模式的使用应当考虑数据被砍的问题。同时,抖动模式下选择ARR抖动还是CCRx抖动只需要调整小数位就可以选择谁抖动了。
寄存器描述中也提到上述数据格式:
在这里插入图片描述
仅以上述寄存器举例,其它的都介绍了抖动模式和非抖动模式的数据格式。
最后列表:边沿对齐模式的PWM的抖动模式
在这里插入图片描述
中心对齐PWM模式的抖动模式
在这里插入图片描述

STM32G474是一款基于Arm Cortex-M4F内核的微控制器,它内置了丰富的外设资源,其中包括PWM(脉宽调制)发生器,可以用于生成方波信号,控制电机速度或其他设备的占空比。要利用STM32G474输出PWM波,你需要按照以下步骤操作: 1. **配置GPIO**:首先,你需要配置GPIO口作为PWM输出口,设置其模式为推挽输出,并将GPIO功能映射到对应的PWM通道。 2. **初始化PWM**:通过HAL库提供的函数对PWM定时器进行初始化,选择合适的定时器(比如TIM2或TIM3),并设置周期(周期 = 分频系数 * 定时器预分频器值)和占空比。 3. **启动PWM**:激活定时器,并启用输出通道,开始发送PWM信号。 4. **调整频率和占空比**:如果你需要改变PWM的频率或输出的占空比,可以通过更改预分频器和计数器值来实现。 5. **编写主循环**:在程序主循环中持续更新定时器,保持PWM输出稳定。 示例代码可能如下所示(以TIM2为例): ```c #include "stm32g4xx_hal.h" // ... 其他头文件和全局变量 void setup_pwm(void) { TIM_HandleTypeDef htim2; // 初始化TIM2 htim2.Instance = TIM2; htim2.Init.Prescaler = ...; // 根据系统时钟计算预分频 htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = ...; // 设置周期 HAL_TIM_PWM_Init(&htim2); HAL_TIM_PWM_MspInit(&htim2); // 开启TIM2 HAL_TIM_Base_Start_IT(&htim2); } int main(void) { ... (其他初始化) setup_pwm(); while (1) { // 更新PWM占空比,例如每秒改变一次 if (some_condition) { htim2.Instance->CCR1 = ...; // 更新CC寄存器值 } } return 0; } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值