当前位置: 首页 > article >正文

初学STM32 ---高级定时器互补输出带死区控制

互补输出,还带死区控制,什么意思?

带死区控制的互补输出应用之H 

 

 捕获/比较通道的输出部分(通道13

 死区时间计算

举个栗子(F1为例):DTG[7:0]=250,250即二进制:1111 1010,选第四条

DT = (32+26)*16*55.56 ns=51.55968us

TIMx_CR1

这里的CKD[1:0]这个位是在HAL_TIM_PWM_Init中进行设置:TIM_Handle_complementary_output_struct.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4;

 TIMx_BDTR

 刹车(断路)功能

使能刹车功能:将TIMx_BDTRBKE位置1,刹车输入信号极性由BKP位设置

使能刹车功能后:由TIMx_BDTRMOEOSSIOSSR位,TIMx_CR2的OISxOISxN位,TIMx_CCERCCxECCxNE位控制OCxOCxN输出状态

无论何时,OCxOCxN输出都不能同时处在有效电平

 发生刹车后,会怎么样?

1MOE位被清零,OCxOCxN为无效、空闲或复位状态(OSSI位选择)

2 OCxOCxN的状态:由相关控制位状态决定,当使用互补输出时:根据情况自动控制输出电平,参考参考手册使用刹车(断路)功能小节

3BIF位置1,如果使能了BIE位,还会产生刹车中断;如果使能了TDE位,会产生DMA请求

4,如果AOE位置 1,在下一个 更新事件UEV时,MOE位被自动置 1

高级定时器互补输出带死区控制实验配置步骤

1,配置定时器基础工作参数        HAL_TIM_PWM_Init()

2,定时器PWM输出MSP初始化        HAL_TIM_PWM_MspInit()     配置NVICCLOCKGPIO

3,配置PWM模式/比较值等        HAL_TIM_PWM_ConfigChannel()

4,配置刹车功能、死区时间等        HAL_TIMEx_ConfigBreakDeadTime()

5,使能输出、主输出、计数器        HAL_TIM_PWM_Start()

6,使能互补输出、主输出、计数器        HAL_TIMEx_PWMN_Start()

相关HAL库函数介绍

 关键结构体介绍

typedef struct 
{ 
   uint32_t OCMode; 	  /* 输出比较模式选择 */
   uint32_t Pulse; 	            /* 设置比较值 */
   uint32_t OCPolarity;       /* 设置输出比较极性 */
   uint32_t OCNPolarity;    /* 设置互补输出比较极性 */
   uint32_t OCFastMode;   /* 使能或失能输出比较快速模式 */
   uint32_t OCIdleState;     /* 空闲状态下OCx输出 */
   uint32_t OCNIdleState;  /* 空闲状态下OCxN输出 */ 
} TIM_OC_InitTypeDef;
typedef struct 
{
    uint32_t OffStateRunMode;    /* 运行模式下的关闭状态选择 */ 
    uint32_t OffStateIDLEMode;   /* 空闲模式下的关闭状态选择 */ 
    uint32_t LockLevel; 		 /* 寄存器锁定设置 */ 
    uint32_t DeadTime; 	          /* 死区时间设置 */ 
    uint32_t BreakState; 	          /* 是否使能刹车功能 */ 
    uint32_t BreakPolarity;		 /* 刹车输入极性 */ 
    uint32_t BreakFilter; 		 /* 刹车输入滤波器(F1/F4系列没有) */ 
    uint32_t AutomaticOutput; 	/* 自动恢复输出使能,即使能AOE位 */
} TIM_BreakDeadTimeConfigTypeDef;

注释:

OffStateRunModeOffStateIDLEMode 是用于配置定时器在不同工作状态下的输出行为的两个重要成员。它们的作用是决定当定时器处于运行模式空闲模式时,输出引脚的状态是否被设置为关闭(Off State),以确保系统的安全性或特定的运行需求。

作用和区别

1. OffStateRunMode
  • 含义
    设置当定时器处于**运行模式(Run Mode)**时,输出引脚是否进入“关断状态(Off State)”。
    • 运行模式通常是指定时器正在正常计数、产生PWM信号或其他功能时的状态。
  • 作用
    如果需要在定时器工作时遇到特定条件(如MOE位被清除或发生断路信号时),保证输出引脚能够进入安全的关闭状态
  • 应用场景
    • 电机控制:当某种错误(如过流或断路)发生时,需要关闭所有输出引脚以保护电机或功率电子设备。
    • 需要在运行状态下触发“保护性”关断的场景。
2. OffStateIDLEMode
  • 含义
    设置当定时器处于**空闲模式(Idle Mode)**时,输出引脚是否进入“关断状态(Off State)”。
    • 空闲模式通常是指定时器未运行或被停止时的状态(即计数器未运行)。
  • 作用
    如果需要在定时器停止后,确保输出引脚进入安全的“关闭状态”,以防止悬空信号对外部电路造成意外影响。
  • 应用场景
    • 系统在空闲时防止输出引脚出现意外信号。
    • 例如在PWM输出停止时,将引脚状态拉低或设置为安全状态。

配置选项(参考 @ref

两者的配置选项通常包括以下内容:

  • TIM_OSSR_ENABLETIM_OSSI_ENABLE
    使能在对应模式下的“关断状态”。当MOE位(主输出使能)被清除时,输出信号会强制进入低电平或高阻态(取决于配置)。
  • TIM_OSSR_DISABLETIM_OSSI_DISABLE
    禁用在对应模式下的“关断状态”。即使发生错误,输出引脚也会保持其当前状态。

总结

  • OffStateRunMode 用于运行模式下的输出安全关断控制,保证在定时器正常工作时遇到问题能立即关闭输出,避免损坏设备。
  • OffStateIDLEMode 用于空闲模式下的输出安全关断控制,确保定时器停止后引脚进入安全状态。

实际案例:

  • 在电机控制应用中:
    • OffStateRunMode 可以确保在运行时发生过流或过温等故障时,输出信号被关闭以保护电机。
    • OffStateIDLEMode 确保系统停止工作时,PWM输出关闭,防止电机意外启动或出现噪声信号。

这两个设置对于电机控制器、逆变器或任何需要可靠输出信号管理的系统都是非常重要的配置项。


http://www.kler.cn/a/464565.html

相关文章:

  • Eplan 项目结构(高层代号、安装地点、位置代号)
  • asp.net core mvc的 ViewBag 和 ViewData 和 Module
  • Maven项目集成SQL Server的完整教程:从驱动配置到封装优化
  • 云效流水线使用Node构建部署前端web项目
  • zookeeper+kafka
  • ACM算法模板
  • antd-vue - - - - - a-date-picker限制选择范围
  • 【SOC 芯片设计 DFT 学习专栏 -- DFT 为何需要在综合之后插入】
  • 如何通过API接入电竞数据
  • 检测碳化硅外延晶片表面痕量金属的方法
  • 大模型系列17-RAGFlow搭建本地知识库
  • Linux-Redis哨兵搭建
  • 34.键盘1 C#例子 WPF例子
  • strapi中使用Documentation插件
  • [XCTF/网络安全] Python之Django模块+curl 攻防世界 Cat 解题详析
  • 2011-2020年各省粗离婚率数据
  • 谷粒商城项目125-spring整合high-level-client
  • C++简明教程(14)动态库和静态库的内存共享机制
  • 在基于Centos7的服务器上启用【Gateway】的【Clion Nova】(即 ReSharper C++ 引擎)
  • 文件查找工具locate和find
  • 【ShuQiHere】 集成学习:提升模型性能的有效策略
  • [Qt] 常用控件 | QWidget | “表白程序2.0”
  • 按字段拆分多个工作表到独立的工作簿并增加合计-Excel易用宝
  • 2024年社区高光时刻总结!
  • 【git】git stash相关指令
  • Spring 中的 @ExceptionHandler 注解详解与应用