互补输出和死区插入

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高级定时器死区时间的配置及计算相关推荐

  1. STM32———高级定时器的死区时间计算方法

    STM32---高级定时器的死区时间计算方法 1.定时器的时钟分频因子和预分频系数的区别: 1.1 时钟分频因子(Clock division),决定定时器的工作时钟频率. tDTS=fDTS ; t ...

  2. stm32高级定时器 基础知识

    stm32高级定时器 高级定时器时基单元: 包含一个16位自动重装载寄存器 ARR 一个16位的计数器CNT,可向上/下计数 一个16位可编程预分频器PSC,预分频器时钟源有多种可选,有内部的时钟.外 ...

  3. STM32 高级定时器周期、频率、占空比、对外输出电压详解

    STM32 高级定时器 最近在研究电机,对TIM定时器研究了一些,将一些存在疑惑的问题,通过试验和示波器分析,得到以下结论,供大家学习参考 1.介绍输出电压高低判断 输出比较时:OC1对外输出电压为示 ...

  4. STM32高级定时器TIM1TIM8中断设置提醒

    最近要用STM32F103RCT6的TIM8做输入捕获,网上不好找到可以直接搬运的代码,然后就移植TIM2的输入捕获做,然后一直遇到匪夷所思的问题! 出现的问题就是,在主函数进入while循环前配置好 ...

  5. STM32 TIM高级定时器死区时间的计算

    STM32 TIM高级定时器的互补PWM支持插入死区时间,本文将介绍如何计算以及配置正确的死区时间. 文章目录 什么是死区时间? 数据手册的参数 如何计算合理的死区时间? STM32中配置死区时间 什 ...

  6. STM32F103高级定时器死区时间计算

    官方数据手册的说明不容易看懂,举的例子与我的应用场合也不一致,我使用的是72MHz的晶振,讲一讲我的死区时间是怎么算出来的. DT死区时间: TDTS为系统时钟周期时长: TDTG为系统周期时长乘以倍 ...

  7. STM32F103高级定时器死区时间的计算

    看了一些网上讲死区时间计算的教程,觉得讲述的不是很清楚,所以在此用我自己理解的方式讲述一遍,如有错误,请读者赐教. 死区时间的设置:由寄存器"TIM1和TIM8刹车和死区寄存器TIMX_BD ...

  8. 关于F4高级定时器死区时间的计算

    死区时间的计算 高级定时器中相关寄存器 关于死区时间的计算 比较详细的过程推导 高级定时器中相关寄存器 关于高级定时器1和8死区配置的寄存器为TIM_BDTR寄存器 其中对于定时器死区模式的配置(具体 ...

  9. STM32高级定时器TIM1中断的细节配置

    在学习stm32的过程中,了解到定时器是非常核心且实用的一个模块,而定时器的中断更是应用的十分广泛,在学习了中断的一些知识后对普通定时器的中断进行了编写,发现都可以成功.将其移植到高级定时器当中,然而 ...

最新文章

  1. 【蓝桥java】递归基础之振兴中华
  2. 独家 | 一份数据工程师必备的学习资源,干货满满(附链接)
  3. 查看binlog文件的2种方式
  4. pytest框架安装(MacOS)
  5. 简单快捷方法:CAJ 文件转 成PDF文件
  6. 【opencv】22.HOG的原理与详细步骤
  7. [改善Java代码]使用valueOf前必须进行校验
  8. Hibernate中的一段批量插入功能的代码
  9. Java中的状态设计模式
  10. A3D8的水–WaterMaterial for Alternativa3D 8
  11. 目标检测之Faster-RCNN的pytorch代码详解(模型准备篇)
  12. “暖心”腊八节开启中国年 全民喝粥“讨彩头”
  13. 锐浪报表开发Web版
  14. 计算机 在哪看是什么32位,如何查看自己的电脑是32位的还是64位
  15. NYOJ1016(德莱联盟)(判断线段相交)
  16. 2019-11-12
  17. 日历javascript代码
  18. 算术移位 VS 逻辑移位
  19. 2023最新版easyrecovery数据恢复软件免费版测评
  20. Linux学习入门-------------------------VMvare与镜像的安装与配置

热门文章

  1. 2020CSP复赛赛试题答案
  2. XM5728_IDK_V3 基于AM5728 iperf千兆网络速率测试指南
  3. .unsqueeze(0)
  4. 最伟大的操作系统sinox和它的开发者sjm100的故事
  5. 2011分区联赛模拟试题 积木分发(jzoj提高C组)
  6. 位移计算是最有效率的计算
  7. Ftpclient调用retrieveFileStream返回null, docker中下载失败问题
  8. 使用VMware Workstation安装Windows10虚拟机(超详细,每一步都有)
  9. 离散时间傅里叶变换(理解推导)
  10. EIGRP(含汇总,非等价负载均衡,默认等实验)