STM32F407高级定时器-死区时间研究-STM32CubeMX
创始人
2024-05-26 18:08:40
0

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

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

从去年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]×t_{dtg}t_{dtg}=t_{DTS}

例如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])xt_{dtg}t_{dtg}=2t_{DTS}

DT= (64+[0~63])xt_{dtg}  ,t_{dtg}=2t_{DTS}

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

DT= (64+(0011 1001))xt_{dtg} = (64+57)x 2t_{DTS} = (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处即可;另外t_{dtg}取值分别变为8倍t_{DTS}与16倍t_{DTS}

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

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

  DT= (32+(1111 1111))xt_{dtg} = (32+31)x 16t_{DTS} = (32+31)x16x1/72MHz=14.0us

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

 非常关键的t_{DTS}的计算方法

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

 不做特别设置的时候,t_{DTS}=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博客

相关内容

热门资讯

安卓子系统windows11,... 你知道吗?最近科技圈可是炸开了锅,因为安卓子系统在Windows 11上的兼容性成了大家热议的话题。...
电脑里怎么下载安卓系统,电脑端... 你有没有想过,你的电脑里也能装上安卓系统呢?没错,就是那个让你手机不离手的安卓!今天,就让我来带你一...
索尼相机魔改安卓系统,魔改系统... 你知道吗?最近在摄影圈里掀起了一股热潮,那就是索尼相机魔改安卓系统。这可不是一般的改装,而是让这些专...
安卓系统哪家的最流畅,安卓系统... 你有没有想过,为什么你的手机有时候像蜗牛一样慢吞吞的,而别人的手机却能像风一样快?这背后,其实就是安...
安卓最新系统4.42,深度解析... 你有没有发现,你的安卓手机最近是不是有点儿不一样了?没错,就是那个一直在默默更新的安卓最新系统4.4...
android和安卓什么系统最... 你有没有想过,你的安卓手机到底是用的是什么系统呢?是不是有时候觉得手机卡顿,运行缓慢,其实跟这个系统...
平板装安卓xp系统好,探索复古... 你有没有想过,把安卓系统装到平板上,再配上XP系统,这会是怎样一番景象呢?想象一边享受着安卓的便捷,...
投影仪装安卓系统,开启智能投影... 你有没有想过,家里的老式投影仪也能焕发第二春呢?没错,就是那个曾经陪你熬夜看电影的“老伙计”,现在它...
安卓系统无线车载carplay... 你有没有想过,开车的时候也能享受到苹果设备的便利呢?没错,就是那个让你在日常生活中离不开的iOS系统...
谷歌安卓8系统包,系统包解析与... 你有没有发现,手机更新换代的速度简直就像坐上了火箭呢?这不,最近谷歌又发布了安卓8系统包,听说这个新...
微软平板下软件安卓系统,开启全... 你有没有想过,在微软平板上也能畅享安卓系统的乐趣呢?没错,这就是今天我要跟你分享的神奇故事。想象你手...
coloros是基于安卓系统吗... 你有没有想过,手机里的那个色彩斑斓的界面,背后其实有着一个有趣的故事呢?没错,我要说的就是Color...
安卓神盾系统应用市场,一站式智... 你有没有发现,手机里的安卓神盾系统应用市场最近可是火得一塌糊涂啊!这不,我就来给你好好扒一扒,看看这...
黑莓平板安卓系统升级,解锁无限... 亲爱的读者们,你是否还记得那个曾经风靡一时的黑莓手机?那个标志性的全键盘,那个独特的黑莓体验,如今它...
安卓文件系统采用华为,探索高效... 你知道吗?最近安卓系统在文件管理上可是有了大动作呢!华为这个科技巨头,竟然悄悄地给安卓文件系统来了个...
深度系统能用安卓app,探索智... 你知道吗?现在科技的发展真是让人惊叹不已!今天,我要给你揭秘一个超级酷炫的话题——深度系统能用安卓a...
安卓系统的分区类型,深度解析存... 你有没有发现,你的安卓手机里藏着不少秘密?没错,就是那些神秘的分区类型。今天,就让我带你一探究竟,揭...
安卓系统铠无法兑换,揭秘无法兑... 最近是不是有很多小伙伴在玩安卓系统的游戏,突然发现了一个让人头疼的问题——铠无法兑换!别急,今天就来...
汽车安卓系统崩溃怎么刷,一键刷... 亲爱的车主朋友们,你是否曾遇到过汽车安卓系统崩溃的尴尬时刻?手机系统崩溃还能重启,但汽车系统崩溃了,...
miui系统可以刷安卓p系统吗... 亲爱的手机控们,你是否对MIUI系统情有独钟,同时又对安卓P系统的新鲜功能垂涎欲滴?今天,就让我带你...