全部
  • 全部
  • 解决方案
  • 技术问答
  • 视频中心
  • 知识分享
  • 技术资讯
  • SEED产品
400-048-1230
订阅
  • 首页
  • 解决方案
  • 技术问答
  • 视频中心
  • 知识分享
  • 技术资讯
  • SEED产品
STM32G474xx单片机数字电源设计实例
来源:Arrow 发布:2022/08/31 浏览量:400

STM32G474xx是意法半导体专为数字电源转换应用而开发的高分辨率系列MCU,专门针对数字电源相关应用而来,例如D-SMPS、照明、焊接、太阳能系统逆变器及无线充电

STM32G474xx 是意法半导体专为数字电源转换应用而开发的高分辨率系列MCU,专门针对数字电源相关应用而来,例如D-SMPS、照明、焊接、太阳能系统逆变器及无线充电。

 

· STM32G474xx主要外设 ·

 

STM32G474xx的主要外设有:
  • 高分辨率定时器HRTIM:184 ps,对供电和温度漂移可实现自补偿

  • 5个超快速12位ADC(4M samples/s)

  • 7个12位DAC(15M samples/s)

  • 7个超快速比较器(17ns)

  • 6个具有可编程增益的运算放大器

  • ART、CCM、SRAM、以及数学运算加速器

  • 双bank闪存

  • 多达3个CAN-FD

  • USB 2.0全速数据设备接口

  • USB Type-C™和电力传输控制器(UCPD)

 

高分辨率定时器共由7个定时器组成,包括:

  • 12路PWM输出(可以成对耦合)

  • 10路外部状态输入(逐波限流、过零点检测等)和6路故障输入

 

高分辨率定时器的主要特性如下:

  • 184ps 分辨率(适用于所有操作模式)

  • 可变占空比、可变频率及临界模式
  • 许多可降低CPU负荷的特性

  • Valley skipping模式和斜坡补偿
  • 每个定时器都有一路DMA通道
  • 内置的突发模式控制器和特定拓扑的模式:推挽和谐振。
  • 定时器之间的大量互连用于:

  • 复位/启动相邻定时器
  • 置位 / 复位 / 切换其它输出
  • 等同于5.44 GHz的高分辨率定时器的各项功能,易于编程实现。

 

 

整个STM32G474/STM32G484系列选型如下图所示

 

· 开发软件介绍 ·

 

该系列MCU支持以下三种主流的开发工具:

 

STM32CubeIDE是一体式多操作系统开发工具,是STM32Cube软件生态系统的一部分,由意法半导体官方推出。 

 

STM32CubeIDE是一种高级C/C++开发平台,具有STM32微控制器和微处理器的外设配置、代码生成、代码编译和调试功能。它基于Eclipse®/CDT™框架和用于开发的GCC工具链,以及用于调试的GDB。它支持集成数以百计的现有插件,正是这些插件使Eclipse® IDE的功能趋于完整。


STM32CubeIDE集成了STM32CubeMX的STM32配置与项目创建功能,以便提供一体化工具体验,并节省安装与开发时间。在通过所选板卡或示例选择一个空的STM32 MCU或MPU,或者预配置微控制器或微处理器之后,将创建项目并生成初始化代码。在开发过程的任何时间,用户均可返回外设或中间件的初始化和配置阶段,并重新生成初始化代码,期间不会影响用户代码。


STM32CubeIDE包含相关构建和堆栈分析仪,能够为用户提供有关项目状态和内存要求的有用信息。


STM32CubeIDE还具有标准和高级调试功能,其中包括CPU内核寄存器、存储器和外设寄存器以及实时变量查看、串行线传输监测器接口或故障分析器的视图。

 

该软件拥有以下功能:

  • 通过STM32CubeMX来集成服务:STM32微控制器、微处理器、开发平台和示例项目选择引脚排列、时钟、外设和中间件配置项目创建和初始化代码生成具有增强型STM32Cube扩展包的软件和中间件

  • 基于Eclipse®/CDT™,支持Eclipse®插件、GNU C/C++ for Arm®工具链和GDB调试器

  • STM32MP1 系列:支持OpenSTLinux项目:Linux支持Linux

  • 其他高级调试功能包括:CPU内核、外设寄存器和内存视图实时变量查看视图系统分析与实时跟踪(SWV)CPU故障分析工具支持RTOS感知调试,包括Azure

  • 支持ST-LINK(意法半导体)和J-Link (SEGGER)调试探头

  • 从Atollic® TrueSTUDIO®和AC6 System Workbench for STM32 (SW4STM32)导入项目

  • 支持多种操作系统:Windows®、Linux®和macOS®,仅限64位版本

 

· 设计实例演示 ·

 

下面我们谨以一个简单的数字电源实例来演示HRTIMER,ADC,USART,GPIO等功能的使用。具体代码和配置文件可以从GitHub - pinkmancao/STM32G474_Digital_Power_DEMO 下载。

 

该设计的主要功能是以HRTIM1来产生频率为43KHz的高精度互补PWM信号以驱动功率MOSFET开关,PB12和PB13两个引脚负责分别在各自的半个周期内输出脉宽精确可调的高低电平。而调节信号可以由定时器TIM1驱动的ADC引脚电压采样值产生,也可以由TIM2产生的定时器信号驱动PA1引脚捕捉输入信号的占空比来生成。与此同时为了加入异步通讯功能和电源温度监测功能,还引入了FreeRTOS进行多任务管理。

 

具体芯片配置如下图所示:

 

HRTIM1共有6组相互关联的通道,可以实现复杂的波形,在本设计中仅仅使用了通道C及其输出PB12和PB13。

 

重点部分Timer C的设置如下:

 


其中具体用到的一些具体常数定义如下:

 

引脚输入捕捉脉宽的功能需要把TIM2配置成Channel1的Input Capture indirect mode和Channel2的Input Capture direct mode,以分别捕捉在同一个输入引脚上得到高低电平,注意在需要使用GPIO中断的地方一定要勾选TIMx global interrupt,否则无法编写中断响应函数。

 

由于PWM输出是整个系统的核心功能,我们把它放在主任务循环中运行,另外建立一个任务用来做温度测量(读取ADC),再建一个任务实现在USART3上输出调试信息。任务之间的通讯采用消息队列。

在使用图形界面配置完成后需要在开发环境的Project->Generate Code菜单下生成工程项目文件和具体的代码框架,然后即可开始编辑自己的代码。

 

脉宽输入的响应代码如下图所示:

 

模拟量输入的响应代码如下图所示:

 

测量温度的任务代码如下:

 

调试信息的任务代码如下:

至此,一个具备拥有高精度定时PWM输出的电源代码演示基本完成。

数字电源
请使用浏览器分享功能 请点击右上角,进行分享