STM32F3 系列的HRTIM 产生PWM理解与应用 (以STM32F334为例,cube,HAL库,附带完整程序)

这几天研究了下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. 而Base Setting  里面和普通的定时器配置没什么区别,主要是选择好周期(会自动告诉你PWM频率)。 Repetition和普通的定时器一样,用于产生多少个波,这个在电机控制方面很有用。

Mode:  是连续模式和单一模式,就是产生连续的波还是单一的脉冲。

Half mode.... :  半波模式下,是输出PWM占空比占据一半的情况,可以选择使能或者不使能。

Start/Reset/ 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 (高电平),什么Reset(低电平)。我上面是在开始是高电平,当CAP1发生时,编程低电平。其他设置发生了Burst 时候,空闲状态是什么(可高可低),Fault事件来了对PWM的影响等等。

 

基本配置就完成了,此时还不能输出PWM波,这个是Cube的一个重要缺点,他为了保护,不给你任何启动信号,所以你需要在主函数的配置之后加上启动函数:

	HAL_HRTIM_WaveformOutputStart(&hhrtim1,HRTIM_OUTPUT_TA1 | HRTIM_OUTPUT_TA2);
	HAL_HRTIM_WaveformCounterStart_IT(&hhrtim1,HRTIM_TIMERINDEX_TIMER_A);

然后就可以输出互补的PWM波啦,I/O口PA8,PA9。

 

让我找找如何分享文件。

https://download.csdn.net/my

本设计是基于STM32F334 数字电源开发板设计,高效同步buck,boost,buck-boost双向DC-DC转换器,支持恒压恒流供电。STM32F334xx 微控制器具有高分辨率定时器 ( HRTIM)外设,可产生多达 10 个信号,能够处理用于控制、同步或保护的各种不同输入信号。其模块化架构允许对大部分转换拓扑和多并联转换器进行处理,并可在运行中重新配置它们。 STM32F334 的HRTIM功能可以产生互补等各PWM波形,该定时器最大计数频率高达4.608G,时间控制精度高达217ps。笔者参考STM32F334设计手册,完成了高精度PID的数字电源。buck,boost,buck-boost均为同步整流技术,输入输出LC滤波,使得重载/轻载纹波均低于100mV,PID响应环路小于10us。STM32F334 数字电源开发板电路功能如下: STC15 PID 数字电源 BUCK/BOOST同步整流开发板视频链接: https://v.youku.com/v_show/id_XMzMzOTA4NzM5Ng==.htm... STM32 PID 数字电源 BUCK/BOOST同步整流开发板视频链接: https://v.youku.com/v_show/id_XMzMzOTM2MjQwOA==.htm... STM32 PID 数字电源 BUCK-BOOST升降压同步整流开发板视频链接: https://v.youku.com/v_show/id_XMzMzOTA4NzUyMA==.htm... 淘宝链接: https://item.taobao.com/item.htm?spm=a1z38n.106770... https://item.taobao.com/item.htm?spm=a1z38n.106770... https://item.taobao.com/item.htm?spm=2013.1.201410... BUCK开发版基本电气 输入端口为A端口 指标输入电压:10~55V,输出电压:5~50V 电流:在良好的散热条件下,最大电流不超过6A 功率:在良好的散热条件下,最大功率不超过200w 高效率设计,支持的最大效率最大96% 输出纹波:LC滤波,低纹波 散热情况:100W无需要散热片;100W以上,需要良好的散热条件 调压调流方式:UART控制,写入相应的格式进行调压调流。或通过按键 进行调整。 显示窗口:IIC OLED12864 电脑串口软件。 Boost开发版基本电气 指标输入电压:10~55V,输出电压:12-60V 电流:在良好的散热条件下,最大电流不超过6A 功率:在良好的散热条件下,最大功率不超过200w 高效率设计,支持的最大效率超过97% 输出纹波:LC滤波,低纹波 支持串口调压调流,PID算法,良好的响应时间。过压过流打嗝保护。 散热情况:100W无需要散热片;100W以上,需要良好的散热条件。 调压调流方式:UART控制,写入相应的格式进行调压调流。或通过按键 进行调整。 显示窗口:IIC OLED12864 电脑串口软件。 Buck-Boost升降压开发版基本电气 指标输入电压:10~55V,输出电压:5~50V,无缝切换,但是尽量避免切换点 电流:在良好的散热条件下,最大电流不超过6A 功率:在良好的散热条件下,最大功率不超过150w 高效率设计,支持的最大效率超过 BUCK 最大92%,Boost 最大93%,如果加入防反接设计,效率会偏低2-3%个点。 输出纹波:LC滤波,低纹波 支持串口调压调流,PID算法,响应时间较差,使用于蓄电池充电。过压过流打嗝保护。 散热情况:100W无需要散热片;100W以上,需要良好的散热条件。 调压调流方式: UART控制,写入相应的格式进行调压调流。或通过按键进行调整。 显示窗口:IIC OLED12864 电脑串口软件。 STM32开发板综述: STC15 开发板综述: 在 STM32 微控制器中, STM32F334xx 产品的目标市场是需要高度精确计时数字信号、尤其是数字功率转换应用的细分市场。包括:数字电源;照明;不间断电源;太阳能逆变器;无线充电器等。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值