当前位置:首页 > > strongerHuang
[导读]PWM的应用可以说非常广泛,控制电机速度、灯光亮度、通信调制等众多领域。PWM的问题小伙伴问的比较多,最近也在用PWM,这里就分享一下关于PWM的一些内容。什么是PWM?PWM:PulseWidthModulation,脉冲宽度调制。网上的解释很多,通过下图,你就能直观的理解PW...

PWM的应用可以说非常广泛,控制电机速度、灯光亮度、通信调制等众多领域。


PWM的问题小伙伴问的比较多,最近也在用PWM,这里就分享一下关于PWM的一些内容。

什么是PWM?

PWM:Pulse Width Modulation,脉冲宽度调制。
网上的解释很多,通过下图,你就能直观的理解PWM,其实就是高低电平组成的脉冲信号。


通过改变其中频率(脉冲周期)、占空比,就能应用在很多场合。


PWM常见输出方式

通过上面描述,PWM就是一个IO口以不同的时间周期输出高、低电平。
1.新手(菜鸟)级别while循环中,阻塞延时,控制IO口高低输出:
while(1){ IO口高电平 Delay阻塞延时 IO口低电平 Delay阻塞延时}阻塞延时可以是:软件模拟延时,定时器阻塞延时等。

2.入门(初级)级别while循环中,非阻赛延时,控制IO口高低输出:
while(1){ IO口高电平 Delay非阻塞延时 IO口低电平 Delay非阻塞延时}
非阻赛延时可以是:定时器标识检测、RTOS(系统)延时等。
3.熟悉(中级)级别定时器中断控制IO高低电平输出:
定时器中断配置 ——> 启动定时器 ——> 响应中断,控制IO高低电平···

4.熟练(中级 )级别定时器PWM硬件控制输出:
配置PWM对应的IO,以及定时器PWM输出 ——> 启动PWM自动输出···

void AppTask(void *p_arg){ PWM_TIM_Configuration();
PWM_Output(频率, 占空比);
while(1) { //自己的应用代码 }}

比较:

上面几种PWM输出方式,前面三种都会CPU干预PWM的输出,也就是会占用CPU资源,特别是前面两种方式,不仅占用CPU,误差还比较大。
使用第三种中断方式,如果频率比较高,CPU消耗的也比较严重。这种情况适合于没有硬件PWM输出的单片机。
第四种就是单片机自带硬件PWM输出功能,只需要简单配置就可以自动输出PWM波形,无需CPU干预。
硬件输出PWM例子

这里以大家熟悉的STM32F1为例:为大家简单分享一下硬件定时器输出PWM波形。
PWM定时器相关宏定义:
//定时器计数时钟(1M次/秒)#define PWM_COUNTER_CLOCK 1000000
//预分频值(与系统时钟、计数值有关)#define PWM_PRESCALER_VALUE (SystemCoreClock/PWM_COUNTER_CLOCK - 1)
PWM配置:
/** * @brief 定时器PWM输出配置 * @param 无 * @retval 无 */void PWM_TIM_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure;
/* 时钟配置 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
/* 引脚配置 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA,
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在工业伺服驱动系统中,PWM信号的精度直接决定电机的转速平稳性和定位精度。传统MCU受限于定时器位数和中断响应延迟,在需要高分辨率(如16位以上)或多通道同步输出时往往力不从心。FPGA凭借硬件并行性和可编程的计数器结构...

关键字: FPGA PWM 伺服电机

在工业电源、汽车电子、新能源电力电子等中高端控制场景中,Microchip推出的dsPIC33C系列数字信号控制器,是当前应用最广泛的核心控制芯片之一。很多工程师在使用这款芯片时,往往只用到了基础的定频PWM输出功能,完...

关键字: PWM 数字信号控制器

在之前我们深入探讨dsPIC33C的PWM专属I/O输出模式、Boost变换器右半平面零点优化、工业级MCU复位可靠性设计的过程中,多次提到全桥硬开关拓扑是大功率工业电源、储能变流器、高频焊接电源的主流架构,而同步整流技...

关键字: PWM 整流拓扑

在之前我们深入探讨数字电源高速PWM更新、全桥硬开关同步整流驱动设计的过程中,多次提到高性能数字控制器是实现复杂电源控制策略的核心载体,而Microchip推出的dsPIC33C系列数字信号控制器,正是当前工业电源、汽车...

关键字: PWM MCU

在之前解析手机无线充电混合PWM控制策略、峰值电流模式BOOST小信号特性的过程中,我们多次提到数字控制技术对电源性能的提升作用,而高速PWM更新正是数字电源控制器突破传统模拟控制性能边界的核心技术支点。很多工程师在使用...

关键字: 电源 PWM

在大功率组合电源、多模块并联供电系统以及集成多通道变换的复杂电源设备中,不同PWM通道之间的频率同步早已不是一项锦上添花的优化功能,而是决定整机稳定性、电磁兼容性和运行效率的核心关键设计。很多工程师在调试多模块电源系统时...

关键字: 电源 PWM

几乎所有嵌入式开发者都用过PWM,从控制LED亮度、调节电机转速,到开关电源输出稳压,PWM是数字系统里实现模拟控制最常用的手段。但绝大多数人只知道“PWM是占空比可调的方波”,却很少真正理清它的底层运行逻辑:为什么一串...

关键字: PWM 频率

电机驱动和数字电源应用中,PWM保护逻辑直接关系到系统的安全运行。传统方案依赖外部CPLD或FPGA实现故障响应和死区管理,增加了BOM成本和PCB面积。C2000系列MCU内嵌的可配置逻辑块(CLB),使工程师能够在芯...

关键字: C2000 PWM

电机控制系统中,测速精度直接决定了速度环的调节品质。编码器脉冲的频率与电机转速成正比,而定时器捕获模块能够在硬件层面精确记录相邻脉冲的时间间隔,避免了软件查询方式固有的时序不确定性。将PWM输出与定时器捕获联动起来,就构...

关键字: PWM 定时器

引言:生成脉宽调制(PWM)信号是嵌入式系统中最基本的需求之一,无论您是在驱动舵机、调光LED,还是控制电机驱动器。尽管高层抽象层(如HAL或Arduino)可以通过一行代码实现PWM信号,但这些层会掩盖底层的硅片逻辑。

关键字: 定时器 嵌入式系统 PWM STM32F411CEU6
关闭