STM32单脉冲通道PWM
STM32单脉冲通道PWM
STM32 中的 单脉冲模式 (One-Pulse Mode - OPM) 是一种特殊的 PWM 工作模式,它允许定时器在接收到一个有效的 触发信号 (Trigger) 后,只输出一个预设宽度(占空比)的脉冲,然后自动停止输出(输出引脚回到空闲电平)。该脉冲的宽度是通过比较寄存器 (CCRx) 和自动重载寄存器 (ARR) 共同决定的。
核心特点与工作原理:
- 单次性: 这是该模式最核心的特点。定时器在触发后只产生一个完整的 PWM 脉冲周期。
- 触发启动: 定时器不会像连续 PWM 模式那样自动开始计数输出。它需要等待一个特定的触发事件来启动计数。触发源可以是:
TI1F_ED: TIMx_CH1 输入引脚上的边沿(上升沿、下降沿或双边沿)。TI2FP2: TIMx_CH2 输入引脚上的滤波后边沿。TI1FP1: TIMx_CH1 输入引脚上的滤波后边沿。ETRF: 外部触发输入 (ETR) 引脚上的滤波后边沿。- 软件触发 (
UGbit)。 - 其他定时器的输出触发信号 (
ITRx)。
- 脉冲宽度定义: 输出的单脉冲宽度(高电平时间或低电平时间)由
CCRx寄存器和ARR寄存器共同设定,配置方式与连续 PWM 模式相同:- 脉冲宽度 (高电平时间):
CCRx寄存器的值决定了输出翻转的时刻(通常从CNT= 0 开始计数,当CNT<CCRx时为有效电平,之后变为无效电平)。 - 周期 (决定何时停止):
ARR寄存器的值决定了脉冲周期的结束时刻(也是计数器停止的时刻)。当计数器CNT达到ARR时,定时器认为一个周期完成。
- 脉冲宽度 (高电平时间):
- 自动停止: 关键点!当计数器
CNT达到ARR值后:- 计数器立即停止计数 (
CENbit 被硬件清零)。 - 相应的 PWM 输出通道根据配置回到无效电平/空闲电平。
- 更新事件标志 (
UIF) 置位(如果更新中断使能,则会触发中断)。
- 计数器立即停止计数 (
- 通道配置:
- 需要选择一个或多个 输出比较 (OC) 通道(如 TIMx_CH1, CH2, CH3, CH4)配置为 PWM 模式(模式
PWM1或PWM2)。 - 如果使用互补输出(如高级定时器 TIM1/TIM8 驱动电机),主通道和互补通道都可以配置为 OPM。
- 输入通道(如 CH1, CH2 配置为输入捕获模式)通常用于检测触发信号源(边沿)。
- 需要选择一个或多个 输出比较 (OC) 通道(如 TIMx_CH1, CH2, CH3, CH4)配置为 PWM 模式(模式
- 空闲状态 (
IDLE): 在未触发(等待状态)和单脉冲输出结束后,定时器输出引脚的电平由 GPIO 的配置决定(通常是复位后的默认状态,或配置为 AF_PP)。但在 OPM 期间,输出电平由定时器的CCxP、CCxNP、MOE、OSSI等位控制,通常在脉冲结束后会回到“无效电平”(由OCxM模式和CCxP极性设置定义)。
典型配置步骤 (以高级定时器 TIM1 为例):
- 使能时钟: 使能 TIM1 和相关 GPIO 的时钟。
- GPIO 配置:
- 配置 PWM 输出通道(如 PA8, PA9)为复用推挽输出 (
AF_PP)。 - (如果使用外部触发)配置触发源输入通道(如 PA0)为输入模式(浮空输入、上拉/下拉输入或复用功能)。
- 配置 PWM 输出通道(如 PA8, PA9)为复用推挽输出 (
- 定时器基本配置:
- 设置预分频器 (
PSC),确定计数频率。 - 设置自动重装载值 (
ARR),定义脉冲周期(也决定了何时停止)。 - 设置时钟分频 (
CKD)。 - 设置计数器模式(通常为向上计数
Up)。 - 禁止自动重装载预装载 (
ARPE= 0) 或根据需要开启。
- 设置预分频器 (
- 输出比较通道配置:
- 选择通道(如 TIM_CHANNEL_1)。
- 设置模式 (
OCMode) 为TIM_OCMODE_PWM1或TIM_OCMODE_PWM2。 - 设置脉冲宽度(捕获比较值
CCR1)。 - 设置输出极性 (
OCPolarity) 和互补输出极性 (OCNPolarity),决定有效电平是高电平还是低电平。 - 设置空闲状态极性 (
OCIdleState,OCNIdleState)。 TIM_CCxChannelCmd使能该通道。
- 单脉冲模式配置:
- 设置控制寄存器 1 (
CR1) 的OPM位为 1(使能单脉冲模式)。
- 设置控制寄存器 1 (
- 触发源配置:
- 设置从模式控制寄存器 (
SMCR):- 选择触发源 (
TSbits),例如TIM_TS_TI1F_ED(TI1 边沿)。 - 选择触发模式 (
SMSbits) 为TIM_SLAVEMODE_TRIGGER(触发模式)。
- 选择触发源 (
- 设置从模式控制寄存器 (
- (高级定时器)主输出使能: 设置刹车和死区寄存器 (
BDTR) 的MOE位为 1(使能主输出)。 - (可选)中断/事件配置: 如果需要知道脉冲何时结束,使能更新中断 (
UIE)。 - 启动定时器计数(准备就绪): 调用
HAL_TIM_Base_Start()/TIM_Cmd(ENABLE)或HAL_TIM_PWM_Start()。注意: 此时计数器CNT开始运行(通常从 0 开始),但因为 OPM 模式且没有触发,它不会产生输出,会一直计数等待触发信号到达。 - 发出触发信号:
- 如果使用外部硬件触发(如边沿),当该信号到达配置的输入引脚时,定时器触发。
- 如果使用软件触发,调用
TIM_GenerateEvent(TIMx, TIM_EventSource_Update)或HAL_TIM_GenerateEvent(&htimx, TIM_EVENTSOURCE_UPDATE)。
触发后发生了什么?
- 触发信号到达。
- 定时器硬件立即执行以下动作(几乎同时):
- 将计数器
CNT复位为 0(如果URS=0,同时置位UIF)。 - 将输出置为有效电平(基于
OCxM,CCxP,CCxNP)。
- 将计数器
- 计数器从 0 开始向上计数。
- 当
CNT == CCR1时,输出引脚根据 PWM 模式翻转(通常变为无效电平)。 - 当
CNT == ARR时:- 计数器立即停止(
CENbit 被清除)。 - 输出引脚回到无效电平/空闲电平。
UIF标志置位(如果使能,产生中断)。
- 计数器立即停止(
- 定时器停止,等待下一次触发。
应用场景:
- 需要精确控制单个脉冲宽度(高精度定时)。
- 需要由外部事件触发才能产生脉冲(如按键触发、传感器信号触发)。
- 需要限制输出的脉冲数量(如驱动步进电机一次、控制继电器吸合一次)。
- 需要减少软件干预,由硬件自动完成单次脉冲输出。
- 产生精确的延时脉冲。
- 脉冲宽度测量(作为已知宽度脉冲源)。
总结:
STM32 定时器的单脉冲模式 (OPM) 是一种强大的功能,它结合了 PWM 的精确脉宽控制和触发启动、自动停止机制,使其非常适合需要外部事件触发、且只需输出单次脉冲的应用。其核心在于 一次触发 -> 一个完整脉冲 -> 自动停止。配置的关键点在于选择正确的触发源、设置好 CCRx(脉宽)和 ARR(周期/停止点)、并确保 CR1.OPM=1。
STM32F103高级定时器中,开启单脉冲模式是不是会立刻清除计数器使能位?
因为STM32F103的高级定时器重复计数寄存器(RCR)的有效位只有8位,而我需要输出超过256个PWM脉冲,且保证每个
单脉冲和连续的时钟信号有什么区别?
单脉冲和连续的时钟信号有什么区别? 时钟信号在数字电路以及分布式计算系统等工业与科技领域中有广泛应用。根据应用的不同,时钟信号可以被分为单脉冲和连续的两种类型。这两种时钟信号有很多区别
2023-09-15 16:28:23
STM32定时器单脉冲模式及其应用
STM32的定时器可以配置为单脉冲模式,所谓的单脉冲就是通过配置定时器使其在一个可控延时后,产生一个脉宽可控的
资料下载
佚名
2021-11-25 11:06:16
单脉冲捕获驱动电路设计
【任务】在工业控制中,为了防止误动作及延长主令元件(按钮、行程开关等)的使用寿命,主令元件发出的主令信号通常是一个脉冲(正脉冲或负脉冲)。值得注
2023-03-30 11:26:52
请问如何生成可重复的单脉冲波形?
我希望在一定的延迟后生成脉冲。我已经生成了两个相移的非对称 PWM 波形。现在我想在单脉冲模式下触发另一个定时器。我怎样才能做到这一点?我不知道
对单脉冲模式的介绍
先看看官方资料对单脉冲模式的介绍下面看C代码的实现void PWM_GPIO_Init( void ){ PC_DDR_DDR6 = 1; //输出管脚PC6TIM1_CH1 PC_CR1_C16 = 1;//推挽输
STM32通用定时器PWM概述
捕获、输出比较、PWM输出、单脉冲模式输出等。STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生
用STM32F0产生一定数量不同占空比的单脉冲信号
软件环境:Keil5硬件环境:STM32F103C8T6最近有个项目需要用到STM32F0产生一定数量不同占空比的单脉冲信号,初步构思了一下。以
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机