登录/注册

STM32单脉冲通道PWM

STM32单脉冲通道PWM

更多

STM32 中的 单脉冲模式 (One-Pulse Mode - OPM) 是一种特殊的 PWM 工作模式,它允许定时器在接收到一个有效的 触发信号 (Trigger) 后,只输出一个预设宽度(占空比)的脉冲,然后自动停止输出(输出引脚回到空闲电平)。该脉冲的宽度是通过比较寄存器 (CCRx) 和自动重载寄存器 (ARR) 共同决定的。

核心特点与工作原理:

  1. 单次性: 这是该模式最核心的特点。定时器在触发后只产生一个完整的 PWM 脉冲周期。
  2. 触发启动: 定时器不会像连续 PWM 模式那样自动开始计数输出。它需要等待一个特定的触发事件来启动计数。触发源可以是:
    • TI1F_ED: TIMx_CH1 输入引脚上的边沿(上升沿、下降沿或双边沿)。
    • TI2FP2: TIMx_CH2 输入引脚上的滤波后边沿。
    • TI1FP1: TIMx_CH1 输入引脚上的滤波后边沿。
    • ETRF: 外部触发输入 (ETR) 引脚上的滤波后边沿。
    • 软件触发 (UG bit)。
    • 其他定时器的输出触发信号 (ITRx)。
  3. 脉冲宽度定义: 输出的单脉冲宽度(高电平时间或低电平时间)由 CCRx 寄存器和 ARR 寄存器共同设定,配置方式与连续 PWM 模式相同:
    • 脉冲宽度 (高电平时间): CCRx 寄存器的值决定了输出翻转的时刻(通常从 CNT = 0 开始计数,当 CNT < CCRx 时为有效电平,之后变为无效电平)。
    • 周期 (决定何时停止): ARR 寄存器的值决定了脉冲周期的结束时刻(也是计数器停止的时刻)。当计数器 CNT 达到 ARR 时,定时器认为一个周期完成。
  4. 自动停止: 关键点!当计数器 CNT 达到 ARR 值后:
    • 计数器立即停止计数 (CEN bit 被硬件清零)。
    • 相应的 PWM 输出通道根据配置回到无效电平/空闲电平。
    • 更新事件标志 (UIF) 置位(如果更新中断使能,则会触发中断)。
  5. 通道配置:
    • 需要选择一个或多个 输出比较 (OC) 通道(如 TIMx_CH1, CH2, CH3, CH4)配置为 PWM 模式(模式 PWM1PWM2)。
    • 如果使用互补输出(如高级定时器 TIM1/TIM8 驱动电机),主通道和互补通道都可以配置为 OPM。
    • 输入通道(如 CH1, CH2 配置为输入捕获模式)通常用于检测触发信号源(边沿)。
  6. 空闲状态 (IDLE): 在未触发(等待状态)和单脉冲输出结束后,定时器输出引脚的电平由 GPIO 的配置决定(通常是复位后的默认状态,或配置为 AF_PP)。但在 OPM 期间,输出电平由定时器的 CCxPCCxNPMOEOSSI 等位控制,通常在脉冲结束后会回到“无效电平”(由 OCxM 模式和 CCxP 极性设置定义)。

典型配置步骤 (以高级定时器 TIM1 为例):

  1. 使能时钟: 使能 TIM1 和相关 GPIO 的时钟。
  2. GPIO 配置:
    • 配置 PWM 输出通道(如 PA8, PA9)为复用推挽输出 (AF_PP)。
    • (如果使用外部触发)配置触发源输入通道(如 PA0)为输入模式(浮空输入、上拉/下拉输入或复用功能)。
  3. 定时器基本配置:
    • 设置预分频器 (PSC),确定计数频率。
    • 设置自动重装载值 (ARR),定义脉冲周期(也决定了何时停止)。
    • 设置时钟分频 (CKD)。
    • 设置计数器模式(通常为向上计数 Up)。
    • 禁止自动重装载预装载 (ARPE = 0) 或根据需要开启。
  4. 输出比较通道配置:
    • 选择通道(如 TIM_CHANNEL_1)。
    • 设置模式 (OCMode) 为 TIM_OCMODE_PWM1TIM_OCMODE_PWM2
    • 设置脉冲宽度(捕获比较值 CCR1)。
    • 设置输出极性 (OCPolarity) 和互补输出极性 (OCNPolarity),决定有效电平是高电平还是低电平。
    • 设置空闲状态极性 (OCIdleState, OCNIdleState)。
    • TIM_CCxChannelCmd 使能该通道。
  5. 单脉冲模式配置:
    • 设置控制寄存器 1 (CR1) 的 OPM 位为 1(使能单脉冲模式)。
  6. 触发源配置:
    • 设置从模式控制寄存器 (SMCR):
      • 选择触发源 (TS bits),例如 TIM_TS_TI1F_ED(TI1 边沿)。
      • 选择触发模式 (SMS bits) 为 TIM_SLAVEMODE_TRIGGER(触发模式)。
  7. (高级定时器)主输出使能: 设置刹车和死区寄存器 (BDTR) 的 MOE 位为 1(使能主输出)。
  8. (可选)中断/事件配置: 如果需要知道脉冲何时结束,使能更新中断 (UIE)。
  9. 启动定时器计数(准备就绪): 调用 HAL_TIM_Base_Start() / TIM_Cmd(ENABLE)HAL_TIM_PWM_Start()注意: 此时计数器 CNT 开始运行(通常从 0 开始),但因为 OPM 模式且没有触发,它不会产生输出,会一直计数等待触发信号到达。
  10. 发出触发信号:
    • 如果使用外部硬件触发(如边沿),当该信号到达配置的输入引脚时,定时器触发。
    • 如果使用软件触发,调用 TIM_GenerateEvent(TIMx, TIM_EventSource_Update)HAL_TIM_GenerateEvent(&htimx, TIM_EVENTSOURCE_UPDATE)

触发后发生了什么?

  1. 触发信号到达。
  2. 定时器硬件立即执行以下动作(几乎同时):
    • 将计数器 CNT 复位为 0(如果 URS=0,同时置位 UIF)。
    • 将输出置为有效电平(基于 OCxM, CCxP, CCxNP)。
  3. 计数器从 0 开始向上计数。
  4. CNT == CCR1 时,输出引脚根据 PWM 模式翻转(通常变为无效电平)。
  5. CNT == ARR 时:
    • 计数器立即停止(CEN bit 被清除)。
    • 输出引脚回到无效电平/空闲电平。
    • UIF 标志置位(如果使能,产生中断)。
  6. 定时器停止,等待下一次触发。

应用场景:

总结:

STM32 定时器的单脉冲模式 (OPM) 是一种强大的功能,它结合了 PWM 的精确脉宽控制和触发启动、自动停止机制,使其非常适合需要外部事件触发、且只需输出单次脉冲的应用。其核心在于 一次触发 -> 一个完整脉冲 -> 自动停止。配置的关键点在于选择正确的触发源、设置好 CCRx(脉宽)和 ARR(周期/停止点)、并确保 CR1.OPM=1

STM32F103高级定时器中,开启单脉冲模式是不是会立刻清除计数器使能位?

因为STM32F103的高级定时器重复计数寄存器(RCR)的有效位只有8位,而我需要输出超过256个PWM脉冲,且保证每个

2025-03-10 07:34:43

什么是单脉冲点焊和双脉冲点焊?

什么是单脉冲点焊和双脉冲点焊? 单脉冲点焊和双脉冲点焊是常用于金属焊接的

2024-02-18 09:29:19

单脉冲和连续的时钟信号有什么区别?

单脉冲和连续的时钟信号有什么区别?  时钟信号在数字电路以及分布式计算系统等工业与科技领域中有广泛应用。根据应用的不同,时钟信号可以被分为单脉冲和连续的两种类型。这两种时钟信号有很多区别

2023-09-15 16:28:23

数字单脉冲多普勒雷达与DSP教学

电子发烧友网站提供《数字单脉冲多普勒雷达与DSP教学.pdf》资料免费下载

资料下载 俞舟群 2024-10-28 10:17:50

STM32定时器单脉冲输出模式

STM32定时器单脉冲输出模式

资料下载 佚名 2021-12-08 20:51:17

STM32定时器单脉冲模式及其应用

STM32的定时器可以配置为单脉冲模式,所谓的单脉冲就是通过配置定时器使其在一个可控延时后,产生一个脉宽可控的

资料下载 佚名 2021-11-25 11:06:16

单脉冲控制转换开关基本电路原理图免费下载

本文档的主要内容详细介绍的是单脉冲控制转换开关基本电路原理图免费下载。

资料下载 佚名 2021-03-18 17:21:38

单脉冲控制转换开关电路图

介绍一款单脉冲控制转换开关电路图。

资料下载 姚小熊27 2021-03-17 10:01:19

单脉冲捕获驱动电路设计

【任务】在工业控制中,为了防止误动作及延长主令元件(按钮、行程开关等)的使用寿命,主令元件发出的主令信号通常是一个脉冲(正脉冲或负脉冲)。值得注

2023-03-30 11:26:52

请问如何生成可重复的单脉冲波形?

我希望在一定的延迟后生成脉冲。我已经生成了两个相移的非对称 PWM 波形。现在我想在单脉冲模式下触发另一个定时器。我怎样才能做到这一点?我不知道

2022-12-26 07:23:33

单脉冲模式的介绍

先看看官方资料对单脉冲模式的介绍下面看C代码的实现void PWM_GPIO_Init( void ){ PC_DDR_DDR6 = 1; //输出管脚PC6TIM1_CH1 PC_CR1_C16 = 1;//推挽输

2022-01-13 07:08:45

STM32通用定时器PWM概述

捕获、输出比较、PWM输出、单脉冲模式输出等。STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生

2021-12-09 08:29:42

STM32定时器单脉冲模式的相关资料分享

STM32的定时器可以配置为单脉冲模式,所谓的单脉冲就是通过配置定时器使其在一个可控延时后,产生一个脉宽可控的

2021-12-08 06:05:34

如何用STM32F0产生一定数量不同占空比的单脉冲信号呢

如何用STM32F0产生一定数量不同占空比的单脉冲信号呢?有哪几种方法去实现单脉冲信号呢?

2021-11-15 07:47:52

STM32F0产生一定数量不同占空比的单脉冲信号

软件环境:Keil5硬件环境:STM32F103C8T6最近有个项目需要用到STM32F0产生一定数量不同占空比的单脉冲信号,初步构思了一下。以

2021-08-09 06:53:13
7天热门专题 换一换
相关标签