PWM控制原理

一、 基础知识

参数 定义 公式 示例
频率 f 1 秒内信号从高到低再回到高电平的次数(周期个数) f = 1 / T 50 Hz
周期 T 一个完整脉冲的时间长度 T = 1 / f 20 ms
占空比 高电平时间占整个周期的比例 占空比 = (高电平时间 / T) × 100% 50%(高电平 10ms,低电平 10ms)

1.1 PWM 工作原理(以递增计数为例)

设置两个关键寄存器:

  • ARR(自动重载寄存器):计数器累加的最大值

  • 比较值(CCR):与当前计数值进行比较的阈值

  • CNT(计数器寄存器):计数器当前计数的值

工作过程

  • CNT 从 0 开始递增

  • 当 CNT < 比较值时,输出高电平

  • 当 CNT ≥ 比较值时,输出低电平

  • 当 CNT 计数到 ARR 时,清零并重新从 0 开始

  • 所以一个周期就为CNT的值从0开始加,加到ARR,这个过程中与比较值比较的结果

结论

  • ARR 决定 PWM 周期(一个周期 = CNT 从 0 加到 ARR 的时间)

  • 比较值决定 PWM 占空比(高电平时间 = 比较值 × 每个计数步长的时间)

下面是PWM的时序图

1.2 PWM输出比较内部结构

条件 说明
完成对预装载寄存器的写入 用户通过 CCR1H/CCR1L 成功写入比较值
通道配置为输出模式 CC1S1:0 设置为输出模式(非输入捕获)
OC1PE 决定传输时机 OC1PE=0 时立即传输;OC1PE=1 时等待更新事件(UEV)

CCR1H 和 CCR1L 是两个 8 位寄存器,合起来组成一个 16 位的捕获/比较寄存器 1(CCR1),用于存放与计数器 CNT 比较的数值(输出模式)。

写入比较值的过程

  • 用户通过总线写入 CCR1H 和 CCR1L 时,写控制逻辑会产生一个 "write_in_progress" 的内部状态信号,
  • write_in_progress 的高电平表示正在写入,其下降沿才代表写入成功;
  • 未写入时信号一直为低电平且无下降沿,通过检测边沿而非电平来区分"从未写入"和"写入已完成"。。

1.3 PWM输出控制内部结构

类别 项目 说明
输入信号 OCREF_CLR 当ETRF(TIMx_SMCR 配置的外部触发信号)检测到高电平时,强制清零 OC1REF,实现逐周期电流管理(如刹车或过流保护)
CNT > CCR1 来自时基单元(CNT 与 CCR1 比较结果),判断当前计数值是否大于比较值,用于决定输出电平
CNT = CCR1 来自时基单元(CNT 与 CCR1 比较结果),判断当前计数值是否等于比较值,用于产生匹配事件
控制参数 OC1M2:0 来自 TIMx_CCMR1,决定当 CNT 与 CCR1 判断时 OC1REF 的行为(置高、置低、翻转或强制固定电平)
输出信号 OC1REF 输出模式控制器产生的中间参考信号,决定 PWM 或比较输出的原始波形形态,再经输出控制单元送到芯片引脚

CC1P 位(来自 TIMx_CCER)用于选择输出极性;选择高/低电平有效

CC1E是输出使能

1.4 两种中断

类别 状态标志 含义 置1条件 中断控制位 作用
捕获/比较 CC1IF 捕获/比较1中断标志 TIMx_CNT = TIMx_CCR1 CC1IE 决定 PWM 占空比
更新 UIF 更新中断标志 计数器溢出时(UDIS=0 允许 UEV 更新) UIE 决定 PWM 频率

二、输入脉宽捕获

2.1 基本原理

  1. 捕获过程:你把 TIMx 的某个通道(比如通道1)配置为输入捕获模式,并选择要捕获的边沿(比如上升沿)。

  2. 事件发生 :当外部信号引脚的上升沿到来时,当前计数器的值 会立刻被自动锁存 到对应的捕获/比较寄存器 TIMx_CCR1 里。

  3. 软件介入 :同时,硬件会触发捕获中断(如果使能了)。你可以在中断服务程序里读出 TIMx_CCR1 里的值。

  4. 计算脉宽

    • 捕获第一次上升沿:记录值 t1

    • 捕获紧接着的下降沿:记录值 t2

    • 脉宽 = t2 - t1(乘以计数周期就是实际时间)

Nuev是溢出次数

2.2 内部结构

2.3 输入捕获中断

输入捕获中断包含两种主要中断来源:

  1. 捕获/比较中断(为了先检测上升沿后转下降沿)

    • 触发条件:CH通道发生输入捕获事件

    • 标志位:CC1IF(捕获/比较中断标志)置 1

    • 使能控制:CCxIE

    • 产生条件:捕获事件发生

  2. 更新中断(为了获取溢出次数)

    • 触发条件:计数器溢出(且 UDIS = 0 允许 UEV 更新)

    • 标志位:UIF(更新中断标志)置 1

    • 使能控制:UIE

    • 产生条件:计数器溢出

表格简记:

状态标志 中断控制 状态名称 含义
CCxF CCxIE 捕获/比较x中断标志 发生捕获事件
UIF UIE 更新中断标志 计数器溢出

三、脉冲计数

3.1 基本原理

3.1.1 从模式

允许定时器根据外部信号或内部事件来同步或控制其计数行为

SMS 模式 描述
000 禁止从模式 CEN=1 时,预分频器时钟直接由内部时钟提供
100 复位模式 所选触发输入(TRGI)上升沿时,重新初始化计数器并生成更新事件
101 门控模式 TRGI 为高电平时使能计数器时钟;低电平时立即停止(不复位)
110 触发模式 TRGI 上升沿时启动计数器(不复位)
111 外部时钟模式1 由 TRGI 的上升沿提供计数器时钟

3.1.2 定时器内部同步(级联)

定时器可通过内部硬件连接实现同步或级联 :一个定时器作为主模式 ,另一个作为从模式 ,主定时器可以对从定时器的计数器执行复位、启动、停止提供时钟

典型应用场景

  • 多个定时器级联实现更长位数的计数器

  • 一个定时器触发另一个定时器开始计数

  • 一个定时器的更新事件作为另一个定时器的时钟源

3.2 输入脉冲计数中断

两种中断来源:

1. 触发中断

  • 触发条件:CH通道出现选定的输入信号(上升沿或下降沿)

  • 标志位TIF(触发中断标志)置1

  • 使能控制TIE

  • 产生事件:外部通道出现选定信号

2. 更新中断

  • 触发条件 :计数器溢出(且 UDIS = 0 允许 UEV 更新)

  • 标志位UIF(更新中断标志)置1

  • 使能控制UIE

  • 产生事件:计数器溢出

状态标志 中断控制 状态名称 含义
TIF TIE 触发中断标志 外部通道出现选定信号
UIF UIE 更新中断标志 计数器溢出
相关推荐
周周记笔记3 小时前
【元器件专题】用阻抗等效分析法来分析开关电路
单片机·嵌入式硬件
leoFY1234 小时前
STM32H750配置LAN PHY芯片LAN8742
网络·stm32·嵌入式硬件
iCxhust4 小时前
如何利用iret修改cs ip
汇编·单片机·嵌入式硬件·微机原理·8088单板机
m0_377108145 小时前
stm32平衡车
stm32·单片机·嵌入式硬件
小+不通文墨6 小时前
把树莓派外接的DHT11接收的温湿度发送到emqx上
经验分享·笔记·嵌入式硬件·学习·树莓派
Deitymoon6 小时前
FreeRTOS——列表与列表项
stm32·单片机·嵌入式硬件
总结所学6 小时前
电路定理 叠加定理 基尔霍夫定律
单片机·嵌入式硬件
雪度娃娃10 小时前
存储器层次结构——随机访问存储器
单片机·嵌入式硬件·计算机组成原理
项目題供诗11 小时前
STM32-PWM驱动LED呼吸灯&PWM驱动直流电机(十三)
stm32·单片机·嵌入式硬件