wkhn
认证:优质创作者
作者动态
一种采用CAN总线方式升级F28035芯片Flash的方法(三)
05-13 15:31
一种采用CAN总线方式升级F28035芯片Flash的方法(二)
05-13 15:31
一种采用CAN总线方式升级F28035芯片Flash的方法(一)
05-13 15:31
STM32G4系列MCU——数字电源入门(4)
2023-03-14 10:46
STM32G4系列MCU——数字电源入门(3)
2023-03-13 20:05

STM32G4系列MCU——数字电源入门(1)

     前段时间在学习STM32G4系列的MCU的过程中,想找个实际的项目来练练手,所以就用笔者上一篇文章中提到的2KW交错并联+同步整流DC-DC的主板,加上STM32G474VE的MCU做主控芯片操练了一下,也有了一些心得,想与大家分享一下。

     笔者初次使用ST平台的产品,如有理解不对的地方,还请读者赐教!

      STM32G4系列的产品是ST公司最近推出主流的面向数字电源、电机控制应用的MCU。最高支持170MHz的主频,PWM最高分辨率184ps,12路PWM输出。DAC带斜率补偿输出,5个ADC,可以成对采样,带有丰富的ADC触发模式,ADC最高采样速度4MSPS。7个比较器,最低19ns的输出延时,为功率电路提供更快的保护。具体参数就不再详述了,可以去自行搜索。  

先介绍STM32平台的搭建:

下载STM32CubeIDE和STM32CubeMX,安装好。其中STM32CubeIDE是集成开发环境,STM32CubeMX是芯片的图形配置开发包和代码生成器。笔者用的集成开发环境是ST官方的,当然也可以选择第三方的产品。还要说一句,安装好STM32CubeMX后,最好也装上MX中的数字电源插件(X-CUBE-DPower)。这个插件中有许多值得仔细阅读的例程代码,而且配合ST官方的开发板B-G474-DPOW1,能进行数字电源的开发工作。笔者本项目中的许多代码就从这些例程代码中移植而来。

如果环境搭建和IDE使用过程中有什么问题,请自行搜索。

笔者用的仿真器是ST-LINK/V2,在网上可以很方便的买到,但最好买隔离版本的。

      笔者用的是STM32G474VE这枚芯片,现将该练手的数字电源主要输入输出参数列出来:

输入电压:38VDC——58VDC

输出电压:26VDC±0.5VDC

输出电流:77A

功率电路拓普:两相交错并联+同步整流BUCK电路。

控制环路模式:峰值电流型全数字控制环路,恒压恒流输出。

功率电路的框图如下:

下面介绍STM32G474VE外设资源的分配:

PWM输出:     TA1——PWM1A

                        TA2——PWM1B

                        TB1——PWM2A

                        TB2——PWM2B

ADC采样:       输出电压采样Vout_FB——ADC3的IN11通道

                        输出电流采样Iout_FB——ADC1的IN3通道

比较器:           输入电流互感器信号CS1+——COMP1+

                        输入电流互感器信号CS2+——COMP3+

DMA:            连接ADC3的IN11通道,传送输出电压采样值。

串口:              USART2

FMAC(滤波计算加速器):用硬件来做环路算法,只提供了一个。分配给稳压环路计算,稳流环路就只能用软件计算了。

外设中断:     FMAC中断(计算电压环路)、ADC1采样中断(计算电流环路)、串口中断。

系统中断:       系统tick定时器中断,用来产生1ms的系统定时心跳。默认优先级最低,为了不被其它的中断干扰,将其改为0(最高)优先级。

DAC:              DAC1——COMP1-(带斜率补偿)

                        DAC3——COMP3-(带斜率补偿)

下图就是芯片外设的配置及互连框图:

接下来,在MX中先配置系统时钟。

本例中,用的是外接12MHz的晶振,所以这样配置:

再选择编程接口,笔者用的是Serial Wire接口。

选择系统外接晶振选项:

接下来,详细说明外设的配置过程。

1)PWM输出

      在STM32G474VE中PWM输出是由HRTIM(高精度定时器)来完成的。HRTIM又包含多个定时器子模块:MasterTimer、TimerA至TimerF,总共7个独立定时器,其中MasterTimer不能输出PWM,其它的TimerA至TimerF每个定时器都能输出一组(两路)PWM。笔者用到的是TimerA(TA1和TA2)、TimerB(TB1和TB2)共四路PWM输出。TA1和TA2互补,TB1和TB2互补。因为TA和TB交错180°,所以要用MasterTimer同步TA和TB的相位。下图是PWM产生的原理。

本例中每路PWM的工作频率为150KHz。先配置MasterTimer

周期寄存器的计算公式:

MasterTimer中的Compare1寄存器的值为周期寄存器的1/2,设为18133。

然后开始配置TA和TB。

TA

然后是TA1输出高电平或低电平的条件:

设置TA1和TA2之间的死区时间:

死区时间的计算公式(设死区时间为200ns):

TB

TB1输出的高低电平的配置与TA1相似,主要区别是TB1高电平是由MasterTimer的Compare1事件触发的,以实现与TA1交错180°相位差。

TB1和TB2的死区:

说明一下:在前面的配置中周期寄存器和Compare1寄存器本应设定一个具体的数值,但为了以后修改方便,笔者将这些寄存器的内容在程序文件中用#define XXX   XXX的形式表示出来,这样就可以通过修改预定义的值来达到修改寄存器内容的目地,会方便很多。

且该寄存器内容的选项中要勾选“No check”,否则MX会认为该寄存器内容格式错误。

然后就可以生成代码了。

生成的代码是基于ST官方的HAL库。因为G474VE芯片不再支持以前的标准库函数了,只支持ST的HAL库和LL库。至于HAL库函数的优缺点网上有详细的说明,这里不再展开。

生成的代码目录结构如下:

*.ioc文件就是MX的图形配置文件,直接双击就可以进入MX,进行配置的修改。

Drivers目录中是HAL库相关的驱动文件,包含了大量的功能函数,并进行了多次的封装。这些文件不需要修改,也不能修改,否则系统将无法正常工作。

Core目录就是用户添加功能代码的地方。

生成的PWM配置,还需要用户添加相应的启动代码后,才能开始工作。

完成上述代码后,PWM就可以输出波形了。

下图是控制板,原理图在附件可以下载。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
本篇所含全部资料,点击此处留下邮箱我会发给你
资料明细:S2301s1.rar
觉得内容不错的朋友,别忘了一键三连哦!
赞 10
收藏 18
关注 455
成为作者 赚取收益
全部留言
0/200
  • ouxinhi 3小时前
    老师,能不能发我一下资料,谢谢! ou****@****.com
    回复 1条回复
  • 老师,能不能发我一下资料,谢谢! 10****@****.com
    回复 1条回复
  • 天安大树 05-09 21:04
    老师,能不能发我一下资料,谢谢! 15****@****.com
    回复 1条回复
  • dy-ynl7vm2a 05-04 19:10
    老师,能不能发我一下资料,谢谢! 82****@****.com
    回复 1条回复
  • dy-DJRYP28P 04-24 11:15
    老师,能不能发我一下资料,谢谢! xc****@****.com
    回复 1条回复
  • Yangdx 04-20 10:42
    老师,能不能发我一下资料,谢谢! 38****@****.com
    回复 1条回复
  • 无双叶子 04-13 09:28
    老师,能不能发我一下资料,谢谢! 84****@****.com
    回复
  • 无双叶子 03-11 09:57
    老师,能不能发我一下资料,谢谢! 84****@****.com
    回复 1条回复
  • dy-XhiiUS1Z 02-23 23:09
    老师,能不能发我一下资料,谢谢! 30****@****.com
    回复 1条回复
  • dy-sh2zv67r 02-03 09:55
    老师,能不能发我一下资料,谢谢! el****@****.com
    回复 1条回复
  • dy-iGugTBNk 01-30 10:43
    老师,能不能发我一下资料,谢谢! pe****@****.com
    回复 1条回复
  • 杨晓华6688 01-27 16:15
    老师,能不能发我一下资料,谢谢! 53****@****.com
    回复 1条回复
  • Free election pair 01-26 16:40
    老师,能不能发我一下资料,谢谢! 15****@****.com
    回复 1条回复
  • dy-XHeGgAvl 01-05 11:36
    老师,能不能发我一下资料,谢谢! go****@****.com
    回复 1条回复
  • dy-fr7bqalt 01-04 14:58
    老师,能不能发我一下资料,谢谢! da****@****.com
    回复 1条回复
  • jyxu053 2023-12-08 13:44
    老师,能不能发我一下资料,谢谢!
    回复
  • jyxu053 2023-12-08 13:43
    老师,能不能发我一下资料,谢谢! xu****@****.com
    回复 1条回复
  • funny_2017 2023-12-04 16:34
    老师,能不能发我一下资料,谢谢! 71****@****.com
    回复 1条回复
  • funny_2017 2023-12-04 16:34
    老师,能不能发我一下资料,谢谢! 71****@****.com
    回复 1条回复
  • dy-ZTCluVnv 2023-12-02 15:16
    老师,能不能发我一下资料,谢谢! 99****@****.com
    回复 1条回复