STM32F3系列的HRTIM产⽣PWM理解与应⽤(以
STM32F334为例,cube,H。。。
这⼏天研究了下STM32F334的HRTIM,看了STM32F334的单⽚机参考⼿册,基于Cube的HAL库做出以下总结。
F334单⽚机⾃带的HRTIM经过始终配置后可以⾼达144M Hz,经过内部处理后,频率可以⾼达4.608G Hz(144M*32).⽽相对与⾼级定时器TIM1和其他普通的定时器,其配置起来更加复杂,所涉及的东西也更多。
我选的是F334C8T6,准备做⼀个数控电源,就先简单的通过HRTIM产⽣⼀个PWM吧。以后会更新如何配合ADC使⽤。外部晶振8M,2线下载形式,打开HRTIM的Timer A.
怎么隐藏手机桌面图标这个是F334的始终配置,选择外部告诉时钟 HSE,系统时钟72M,⼀定要勾选HRTIM时钟,为144M.客满
好了下⾯开始重点讲解HRTIM配置过程中,各个参数的意义了。
上⾯是你打开HRTIM 最基本的配置,General⾃动匹配你选的Time A..E. ⽽Ba Setting ⾥⾯和普通的定时器配置没什么区别,主要是选择好周期(会⾃动告诉你PWM频率)。 Repetition和普通的定时器⼀样,⽤于产⽣多少个波,这个在电机控制⽅⾯很有⽤。
Mode: 是连续模式和单⼀模式,就是产⽣连续的波还是单⼀的脉冲。
: 半波模式下,是输出PWM占空⽐占据⼀半的情况,可以选择使能或者不使能。
Start/Ret/ on sync⽤于同步定时器,是否是外部事件发⽣的时候开启或者关闭定时器。输出PWM的时候只能选no effect
Preload Enable: 这个没多说的,就是定时器⾃动重装。
造制接下来的降格Update参数,⽤于DMA,不⽤DMA的时候不⽤配置就⾏
Burst Mode: 就是控制定时器输出波形的时间,当开启Burst 模式的时候,波形不能输出,和Delay protection 差不多,不过有区 别,可以百度或者看参考⼿册
Push pull : 不是之前选的I/O输出的推挽输出,是⼀种波形选择⽅式,百度吧,解释起来浪费时间。
恩格尔定律Fault lock : HRTIM 有Fault 事件检测,检测到可以关闭定时器输出等等,所以这个是设置Fault 是否可以写⼊。
Dead timing : 简单的说就是死区时间,如果选择使能,就⼀定输出PWM了,⽽且每个通道的匹配通道不需要配置。
接下来的⼏个参数牵涉到⼏个定时器之间的联系,⽐如 time A update 发⽣了,会对time B 产⽣什么结果等等。
(我上述的配置是为了产⽣互补的PWM波,所以开启了死区)麻雀陈深结局
这个⽤于设置PWM的CMP1,到CMP1 的时候发⽣什么。可以配置多个CAP
这些是捕获,外部事件,DMA等等,根据需要配置,不需要配置的时候Disable就可以刚才
刚才在基础设置中选择了死区,所以下⾯会给死区的配置。和普通的配置差不多,但是这个更⾼级,可以配置死区Sign,是⾼电平多出的死区,还是第电平多出的死区。还可以配置上升沿的死区和下降沿的死区不同,还可以锁定防⽌⼀些外部事件来改变死区时间。
最后,就是配置两个通道啦,由于PWM输出配置了死区,导致了TA2不需要配置,会⾃动互补。⽽配置TA1 和之前的差不多,配置在什么时候Set (⾼电平),什么Ret(低电平)。我上⾯是在开始是⾼电平,当CAP1发⽣时,编程低电平。其他设置发⽣了Burst 时候,空闲状态是什么(可⾼可低),Fa
ult事件来了对PWM的影响等等。
基本配置就完成了,此时还不能输出PWM波,这个是Cube的⼀个重要缺点,他为了保护,不给你任何启动信号,所以你需要在主函数的配置之后加上启动函数:
HAL_HRTIM_WaveformOutputStart(&hhrtim1,HRTIM_OUTPUT_TA1 | HRTIM_OUTPUT_TA2);
垂涎怎么读smart英语HAL_HRTIM_WaveformCounterStart_IT(&hhrtim1,HRTIM_TIMERINDEX_TIMER_A);
然后就可以输出互补的PWM波啦,I/O⼝PA8,PA9。
国子监街
让我找找如何分享⽂件。