距离上次写笔记,已经过去好长时间了

中间也折腾过不少东西,但是都没咋整理,主要是这中间都是在干活儿,不是自己想要研究的,也没想着要写。

从去年10月份开始想要学习FOC,10月份研究了一个月,到11月初,实现了SVPWM驱动BLDC电机,使用串口实现开环下转速和力矩调节。基本上算是刚刚入门, 但是后来一直去忙别的各种事情了,搁置了一年,最近想重新捡起来,发现去年的代码折腾的已经跑不起来了,于是重新开始看去年收藏夹里的教程——从最基础的高级定时器开始。高级定时器这块儿的知识,比较基础的就不赘述了,我会在文章末尾附上几个我个人认为比较好的文章,供有需要的同学学习。

之前关于死区时间的设定,一直没搞清楚,CubeMX中DeadTime就一个孤零零的文本框,也没有注释,似乎很不起眼,这次花了点儿时间,研究整理了一下,有理论计算,有上机试验,希望能帮助到有需要的同学吧。

DTG配置死区发生器详解

回归正题!下图截自《STM32F4xx中文编程手册》RM0090,DTG寄存器为TIM1 和 TIM8 断路和死区寄存器 (TIMx_BDTR)的低8位,高八位咱们暂时不用关心哈,咱们只关心低8位。DTG寄存器中的值不同,决定了死区时间的计算方法也不同。DTG寄存器的设置方法非常简单,直接通过CubeMX中DeadTime处写入即可。

 根据上图可以知道,设置死区时间的时候,根据输入到DTG的值不同,会被分为4种情况,分别是:

1.当最高位为0 低7位为任意值,即CubeMX中DeadTime值输入为0-127时,死区时间为

[0~127]×=

例如CubeMX中 DeadTime输入100时,理论得到死区时间DT=100×1/72MHz=1.38889us

CubeMX设置截图如下,使用TIM8高级定时器,使用通道CH1和CH1N输出互补PWM波,预分频值PSC为72-1,自动重装载值ARR为1000-1(图中DeadTime输入的为十六进制0x64,转为为十进制后即为100)

将程序下载到正点F103ZET6核心板上,使用示波器检测PC5(CH1)与PA7(CH1N)互补方波的死区时间,得到如下截图

图中两方波的时间差即为死区时间,测量值为1.38us,与计算值1.38889us几乎一致。

2.当DTG[7:6]为10  而DTG[5:0]为任意值时(10xx xxxx),此时死区时间DT计算公式为

DT=(64+DTG[5:0])x=2

DT= (64+[0~63])x  ,=2

例如CubeMX中 DeadTime输入0xb9(1011 1001)时,理论得到死区时间

DT= (64+(0011 1001))x = (64+57)x 2 = (64+57)x2x1/72MHz=3.61111us

设置CubeMX中DeadTime值为0xb9

下载烧录,示波器检测死区时间

实际检测出死区时间为3.36us,与理论时间3.36111us基本吻合。

3.和4. 两种情况与2计算方式基本相同,不过就是需要注意,DTG[7:5]三位值已经固定,DTG[4:0]取值范围缩小至【0~31】,在确定DTG[4:0]取值数值之后,将DTG[7:5]与DTG[4:0]进行按位与操作,组成一个字节,最后将该值填入Cube MX中DeadTime处即可;另外取值分别变为8倍与16倍

实际3 4两种情况试验我都做过了,3不放了,只把第4种情形,DTG[4:0]取值最大的情况贴图在下面吧。

设置CubeMX中DeadTime值为0xff (1111 1111)

DT= (32+(1111 1111))x = (32+31)x 16 = (32+31)x16x1/72MHz=14.0us

经过实测,死区时间同样为14us,与计算结果一致。

非常关键的的计算方法

有的同学可能会好奇,  =N倍,那这个又是怎么来的呢,其实关于的取值方法,官方的编程手册中同样提到了,我贴上来供大家参考。

不做特别设置的时候,=tCK_INT,即与内部时钟相同。即内部时钟频率,72MHz。

参考文章推荐

STM32F407配置STM32CubeMX通过高级定时器TIM8产生PWM互补输出(带死区和刹车)实验_xuechanba的博客-CSDN博客

STM32CUBEMX配置教程(五)高级定时器输出两路PWM波_怡步晓心l的博客-CSDN博客

STM32CubeMX的TIM1互补PWM输出,HAL库(2路,带死区)_小李(李宏松)的博客-CSDN博客

STM32 HAL库PWM回调函数的特性_Wake_Dream_2333的博客-CSDN博客_callback stm32

STM32CubeIDE 统计及控制PWM产生个数_sudaroot的博客-CSDN博客

STM32F407高级定时器-死区时间研究-STM32CubeMX相关推荐

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

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

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

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

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

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

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

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

  5. STM32F407高级定时器TIM8_CH1N输出PWM配置

    STM32的TIM1和TIM8是两个高级定时器,TIM8_CH1N和TIM8_CH1如果两路都需要输出PWM则不能独立输出不同的占空比,他们只能输出可以带死区控制的互补波形.这里只讨论如何在TIM8_ ...

  6. STM32高级定时器死区时间的配置及计算

    互补输出和死区插入 1. 死区概念 高级控制定时器(TIM1 和 TIM8)可以输出两路互补信号,并管理输出的关断与接通瞬间.这段时间通常称为死区,用户必须根据与输出相连接的器件及其特性(电平转换器的 ...

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

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

  8. STM32高级定时器TIM1生成互补PWM

    硬件:stm32f103zet6 开发工具:Keil uVision V5.26.2.0 下载调试工具:J-Link 最近在研究三相无刷电机FOC控制,肯定要对互补PWM了解透彻.记录一下学习过程. ...

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

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

最新文章

  1. 小记 | 从 0 到 1,看我玩弄千万日志于股掌
  2. python通过ip获取mac地址_通过IP或socket获取对方的MAC地址
  3. 服务器无法执行该事务_分布式事务、MVCC、事务隔离级别
  4. boost::detail::sp_typeinfo用法实例
  5. javascript:this 关键字
  6. P2257 YY的GCD
  7. JDK源码解析之java.util.Iterator和java.lang.Iterable
  8. C#中的 Stream
  9. 吴恩达团队最新成果:用深度学习预测死亡概率,改善临终关怀
  10. markdown统一设置图片格式_Markdown教程
  11. 一名Java开发人员装机必备软件
  12. C++句柄类(智能指针)小结
  13. 关于浏览器缓存,版本更新问题
  14. 高性能服务器天梯,2019服务器CPU天梯图 多路CPU性能排名
  15. ssh-keygen 指定路径
  16. java 对象 转为繁体,java调用opencc,将简体中文转换成繁体
  17. 微信小程序 -对应的服务器证书无效
  18. 怎么恢复计算机文件查看方式,win7电脑打开方式怎么还原?win7电脑还原打开方式的方法...
  19. 记忆英语单词方法20种
  20. 银河麒麟V10忘记密码

热门文章

  1. 文档化Python代码完全指南(翻译)
  2. SQL性能优化以及性能测试
  3. 世界顶级黑客,都有哪些神仙操作?这篇文章带你了解一下!
  4. [HSI论文阅读] | SSRN:Spectral-Spatial residual network for HSI classification
  5. 【Linux】内核驱动篇九--设备模型
  6. 关于手机系统。。。。
  7. 在VMware上,ubuntu和windows之间如何复制文本、拖拽文件?
  8. 手把手教你用python几行代码打造人工智能对话机器人,还说说话!
  9. [百家号]铁流:华为Hi1620发布 自研内核还是ARM改?
  10. Excel中如果对合并单元格求和