STM32高级定时器死区时间的配置及计算
互补输出和死区插入
1. 死区概念
高级控制定时器(TIM1 和 TIM8)可以输出两路互补信号,并管理输出的关断与接通瞬间。这段时间通常称为死区,用户必须根据与输出相连接的器件及其特性(电平转换器的固有延迟、开关器件产生的延迟…)来调整死区时间。
每路输出可以独立选择输出极性(主输出 OCx 或互补输出 OCxN)。可通过对 TIMx_CCER寄存器中的 CCxP 和 CCxNP 位执行写操作来完成极性选择。
2. TIM1 和 TIM8 断路和死区寄存器 (TIMx_BDTR)
寄存器功能展示
2.1 明确自己定时器系统时钟
系统时钟—>AHB 预分频器 && APB2 预分频器值 得到自己定时器的系统时钟为168M
2.2 计算tDTS
tDTS=1/定时器系统时间
//tDTS=1/168M=5.95228ns
3 设定死区时间
配置修改DTG[7:0]来改变死区时间
位 7:0 DTG[7:0]:配置死区发生器 (Dead-time generator setup)
此位域定义插入到互补输出之间的死区持续时间。 DT 与该持续时间相对应。
DTG[7:5]=0xx => DT=DTG[7:0]x tdtg,其中 tdtg=tDTS。
DTG[7:5]=10x => DT=(64+DTG[5:0])xtdtg,其中 Tdtg=2xtDTS。
DTG[7:5]=110 => DT=(32+DTG[4:0])xtdtg,其中 Tdtg=8xtDTS。
DTG[7:5]=111 => DT=(32+DTG[4:0])xtdtg,其中 Tdtg=16xtDTS。
示例:
如果 TDTS=125ns (8MHz),则可能的死区值为:
0 到 15875 ns(步长为 125 ns),
32 us 到 63us(步长为 1 us),
64 us 到 126 us(步长为 2 us)
注意: 只要编程了 LOCK(TIMx_BDTR 寄存器中的 LOCK 位)级别 1、 2 或 3,此位域即无法修改。
4.软件实现
u32 T_TDS=119;//11.904ns 168M系统时钟// deat_num(0,255)if(death_num >0&& death_num<=127)//公式1death_time=(float)death_num*T_TDS/10000;else if(death_num>=128 && death_num<=191)//公式2death_time=(float)(death_num-128)*2*T_TDS/10000;else if(death_num>=192 && death_num<=223)//公式3death_time=(float)(death_num-160)*8*T_TDS/10000;else if(death_num>=224 && death_num<=255)//公式4death_time=(float)(death_num-192)*16*T_TDS/10000;elsedeath_time=death_time;
软件改进:
u32 T_TDS=168;//11.904ns 168M系统时钟//deat_num--->(0,255)if(death_num >0&& death_num<=127)//公式1death_time=(float)death_num/T_TDS;else if(death_num>=128 && death_num<=191)//公式2death_time=(float)(death_num-128)*2/T_TDS;else if(death_num>=192 && death_num<=223)//公式3death_time=(float)(death_num-160)*8/T_TDS;else if(death_num>=224 && death_num<=255)//公式4death_time=(float)(death_num-192)*16/T_TDS;elsedeath_time=death_time;
5.结果现象展示
STM32高级定时器死区时间的配置及计算相关推荐
- STM32———高级定时器的死区时间计算方法
STM32---高级定时器的死区时间计算方法 1.定时器的时钟分频因子和预分频系数的区别: 1.1 时钟分频因子(Clock division),决定定时器的工作时钟频率. tDTS=fDTS ; t ...
- stm32高级定时器 基础知识
stm32高级定时器 高级定时器时基单元: 包含一个16位自动重装载寄存器 ARR 一个16位的计数器CNT,可向上/下计数 一个16位可编程预分频器PSC,预分频器时钟源有多种可选,有内部的时钟.外 ...
- STM32 高级定时器周期、频率、占空比、对外输出电压详解
STM32 高级定时器 最近在研究电机,对TIM定时器研究了一些,将一些存在疑惑的问题,通过试验和示波器分析,得到以下结论,供大家学习参考 1.介绍输出电压高低判断 输出比较时:OC1对外输出电压为示 ...
- STM32高级定时器TIM1TIM8中断设置提醒
最近要用STM32F103RCT6的TIM8做输入捕获,网上不好找到可以直接搬运的代码,然后就移植TIM2的输入捕获做,然后一直遇到匪夷所思的问题! 出现的问题就是,在主函数进入while循环前配置好 ...
- STM32 TIM高级定时器死区时间的计算
STM32 TIM高级定时器的互补PWM支持插入死区时间,本文将介绍如何计算以及配置正确的死区时间. 文章目录 什么是死区时间? 数据手册的参数 如何计算合理的死区时间? STM32中配置死区时间 什 ...
- STM32F103高级定时器死区时间计算
官方数据手册的说明不容易看懂,举的例子与我的应用场合也不一致,我使用的是72MHz的晶振,讲一讲我的死区时间是怎么算出来的. DT死区时间: TDTS为系统时钟周期时长: TDTG为系统周期时长乘以倍 ...
- STM32F103高级定时器死区时间的计算
看了一些网上讲死区时间计算的教程,觉得讲述的不是很清楚,所以在此用我自己理解的方式讲述一遍,如有错误,请读者赐教. 死区时间的设置:由寄存器"TIM1和TIM8刹车和死区寄存器TIMX_BD ...
- 关于F4高级定时器死区时间的计算
死区时间的计算 高级定时器中相关寄存器 关于死区时间的计算 比较详细的过程推导 高级定时器中相关寄存器 关于高级定时器1和8死区配置的寄存器为TIM_BDTR寄存器 其中对于定时器死区模式的配置(具体 ...
- STM32高级定时器TIM1中断的细节配置
在学习stm32的过程中,了解到定时器是非常核心且实用的一个模块,而定时器的中断更是应用的十分广泛,在学习了中断的一些知识后对普通定时器的中断进行了编写,发现都可以成功.将其移植到高级定时器当中,然而 ...
最新文章
- 【蓝桥java】递归基础之振兴中华
- 独家 | 一份数据工程师必备的学习资源,干货满满(附链接)
- 查看binlog文件的2种方式
- pytest框架安装(MacOS)
- 简单快捷方法:CAJ 文件转 成PDF文件
- 【opencv】22.HOG的原理与详细步骤
- [改善Java代码]使用valueOf前必须进行校验
- Hibernate中的一段批量插入功能的代码
- Java中的状态设计模式
- A3D8的水–WaterMaterial for Alternativa3D 8
- 目标检测之Faster-RCNN的pytorch代码详解(模型准备篇)
- “暖心”腊八节开启中国年 全民喝粥“讨彩头”
- 锐浪报表开发Web版
- 计算机 在哪看是什么32位,如何查看自己的电脑是32位的还是64位
- NYOJ1016(德莱联盟)(判断线段相交)
- 2019-11-12
- 日历javascript代码
- 算术移位 VS 逻辑移位
- 2023最新版easyrecovery数据恢复软件免费版测评
- Linux学习入门-------------------------VMvare与镜像的安装与配置
热门文章
- 2020CSP复赛赛试题答案
- XM5728_IDK_V3 基于AM5728 iperf千兆网络速率测试指南
- .unsqueeze(0)
- 最伟大的操作系统sinox和它的开发者sjm100的故事
- 2011分区联赛模拟试题 积木分发(jzoj提高C组)
- 位移计算是最有效率的计算
- Ftpclient调用retrieveFileStream返回null, docker中下载失败问题
- 使用VMware Workstation安装Windows10虚拟机(超详细,每一步都有)
- 离散时间傅里叶变换(理解推导)
- EIGRP(含汇总,非等价负载均衡,默认等实验)