本用户指南重点介绍了 AM263x 微控制器如何用于控制 TIDA-01606 基于 SiC 的双向三级、三相逆变器和 PFC 功率级参考设计。TIDA-01606 参考设计可帮助客户在光伏逆变器、电动汽车充电器、电池储能系统、UPS 和电动汽车车载充电器 (OBC) 中实现单向或双向交流/直流和直流/交流功率级。AM263x 可有效地提供经过优化的快速控制环路性能,以便收集数据并处理所收集的数据,还可在定义的时间范围内使用紧密集成的高分辨率 PWM(用于驱动)更新系统,从而生成精确的占空比。
controlCARD™, C2000™, and Code Composer Studio, and E2E™are TMs ofTI corporate name.
Arm® and Cortex®are reg TMs ofArm Limited.
Other TMs
本文档介绍了如何使用 AM263x MCU 来控制 TIDA-01606 基于 SiC 的双向三级、三相逆变器和 PFC 功率级参考设计。该硬件与采用 HSEC controlCARD™ 格式的 MCU 兼容。虽然最初为 C2000™ MCU 产品系列而设计,但该参考设计也接受了 AM263x controlCARD (TMDSCNCD263),只需进行少量修改即可。该参考设计可用于在光伏逆变器、电动汽车充电器、电池储能系统以及 UPS 和电动汽车车载充电器 (OBC) 中实现单向或双向交流/直流和直流/交流功率级。此设计中使用的 T 型三级功率级是提高这些系统的功率密度和效率的理想选择。
TIDA-01606 参考设计由四个独立的板组成,这些板协同工作以形成该三相逆变器参考设计:
有关其他硬件详细信息,请参阅 TIDA-01606:10kW 双向三相三级(T 型)逆变器和 PFC 参考设计 设计指南。
该参考设计包含以下元素:
以下列表显示了用于控制 MCU 上的功率级的重要资源:
对本设计进行供电和评估需要以下测试设备列表:
对于 PFC 模式:
对于逆变器模式:
表 2-1 列出了 MCU 上用于控制功率级的重要资源:
引脚编号 | 说明 | 软件名称 |
---|---|---|
15、31、28 | 电网电压感测 A、B、C 相 | TINV_VGRID_A、B、C |
21、33、30 | 逆变器侧电压 A、B、C 相 | TINV_VINV_A、B、C |
25、37、34 | 逆变器侧电流 A 相 | TINV_IINV_A、B、C |
42 | 总线电压感测 | TINV_VBUS |
40 | 总线电压中点检测 | TINV_VBUS_MID |
12、14、18、20 | A、B、C 相和环境温度 | TINV_TEMP_A、B、C、AMB |
49、50、58 | Q1 PWM A、B、C 相 | TINV_Q1_A、B、C |
51、52、60 | Q3 PWM A、B、C 相 | TINV_Q3_A、B、C |
53、54、62 | Q2 PWM A、B、C 相 | TINV_Q2_A、B、C |
99、103、107 | SDFM 数据 IG A、B、C | TINV_IGRID_A、B、C |
101、105、109 | SDFM 时钟 IG A、B、C | |
57、75 | SDFM 时钟源 | |
89、87、85 | SiC 故障信号 A、B、C(低电平有效) | TINV_FAULT_A、B、C |
86、88、90、92 | A、B、C、N 上的继电器 | TINV_RELAY_A、B、C、N |
61、63 | 栅极驱动器电源 PWM | TINV_GATE_DRIVE |
59 | 风扇的控制 GPIO | TINV_FAN |
108、110 | 用于在启动固件调试时查看扩展坞上的 ISR 嵌套等 | TINV_PROFILING1、2 |
95 | 栅极驱动器使能 | TNV_PWM_EN |
81 | 栅极驱动器复位 | TINV_R |
由于 TIDA-01606 电源板最初是使用 C2000™ MCU 产品系列为 controlCARD 打造的,因此电源板需要进行一些微小更改才能适应 AM263x controlCARD:
需要对 TMDSCNCD263 controlCARD 进行细微更改,以控制电源硬件。所需的第一项更改允许访问 HSEC 板的引脚 92 (GPIO 134),需要该引脚才能连接到逆变器板的继电器 N 引脚。
拆下 R258 电阻器并使用相同值的电阻器 (10kΩ) 填充 R257。或者,使用 I2C2 实例将 I2C0_MUX_SEL 引脚设置为高电平以访问 HSEC_EQEP2_A 引脚。图 2-5 提供了 SysConfig 设置,图后紧跟的是该设置的示例 C 代码。
GPIO 134 配置为 I2C FS 开漏电压缓冲器,因此需要一个外部上拉电阻器来实现高电平有效信号。
以下代码块演示了如何将 I2C0 MUX SEL 设置为高电平。
I2C_Transaction i2cTransaction;
uint8_t buffer[2U];
int32_t status = SystemP_SUCCESS;
I2C_Transaction_init(&i2cTransaction);
i2cTransaction.writeBuf = buffer;
i2cTransaction.writeCount = 2U;
i2cTransaction.slaveAddress = 0x20;
buffer[0] = 0x03U;
buffer[1] = (0x01 << 1);
status += I2C_transfer(I2C_getHandle(CONFIG_I2C2), &i2cTransaction);
buffer[0] = 0x07U;
buffer[1] = ~(0x01 << 1);
status += I2C_transfer(I2C_getHandle(CONFIG_I2C2), &i2cTransaction);
需要进行另一项更改才能访问 HSEC 板的引脚 90 (GPIO 86),以便连接继电器 C。拆下 R139 电阻器并使用相同值的电阻器 (0E) 填充 R146。
该设计的软件可在 MCU+ Academy 内获取。若要打开工程:
工程流程包含使用 AM263x SysConfig 工具和 MCU_PLUS_SDK_AM263x 对片上系统 (SOC) 的所有外设时钟和子模块进行初始化的过程。节 3.2讨论了如何初始化该设计中使用的外设 IP,如 EPWM、ADC、CMPSS、GPIO、SDFM 等。
此软件包含 2 个 ISR 和 1 个后台任务。图 3-2 中介绍了代码流程。ISR1 计划每 20μs 运行一次,ISR2 计划每 1ms 运行一次。ISR1包含节 3.3.1中所述的主控制环路。ISR2 包含辅助控制功能,如计算用于后台监视的相电流和电压的 RMS 值,节 3.3.3对此进行了说明。
该工程有两个版本的 ADC 检测数据,具体取决于 controlCARD 的版本(E1 和 E2)。如果正在使用的电路板是 controlCARD 的 E1 版本,则启用宏 AM263x_CC_E1。或者,如果正在使用的电路板是 controlCARD 的 E2 版本,则启用宏 AM263x_CC_E2。这些宏设置在 Source/Includes 文件夹中的 tinv_user_settings.h 文件中定义。根据使用的电路板版本选择 .syscfg 文件,并从构建中排除另一个文件:对于 E1 controlCARD,此文件为 tinv_AM263x_E1.syscfg;对于 E2 controlCARD,此文件为 tinv_AM263x_E2.syscfg。
后台任务分为四个部分 – A1、B1、B2 和 B3。每次所连接的计时器溢出时,即延迟为由 RTI 计时器控制的 1ms,都会执行 A1。之前在 C2000 架构中使用 A1 来运行 SFRA 环路,目前 A1 保持开路,因为不支持 SFRA。
B1、B2 和 B3 通过带有 RTI 计时器的 1ms 延迟控制器依次执行。节 3.2.3对此配置进行了说明。B2 任务通过捕获 ISR 上的 GPIO 高波形和低波形,使用 ECAP 计算 ISR1 和 ISR2 的 CPU 负载时间和平均 CPU 负载时间。B3 任务监视连接到 TIDA-01606 的风扇和继电器控制。B1 任务更新系统的故障状态。通过将宏 TINV_PROTECTION 设置为 TINV_PROTECTION_ENABLED,可启用此设置。默认情况下,实验 1 禁用此步骤,而其他实验则启用此步骤。有关这方面的更多信息,请参阅节 3.4。
以下库取自 C2000 Digital Power SDK 工具套件,并集成了逆变器演示工程。
图 3-6 显示了项目的总体结构。导入工程之后,CCS 内将显示 Project Explorer。
特定于设计并且独立于器件的文件位于 Source 文件夹中,其中含有核心算法代码。与数字电源应用相关的库和控制算法位于 libraries 文件夹中。特定于电路板和特定于驱动程序的更改在 SysConfig 中配置,此代码由 Release/SysCfg 文件夹中的 SysConfig 自动生成。main.c 文件包含工程的主要框架。该文件包括对电路板和文件的调用(有助于构建系统框架),以及中断服务例程 (ISR) 和慢速后台任务。图 3-6 介绍了详细的文件夹结构。
所有变量和函数调用都以 TINV 名称开头(例如,TINV_vSecSensed_pu)。这种命名规则让用户能够将不同的设计组合在一起,同时避免命名冲突。
AM263x controlCARD 有两个已发布版本:E1 和 E2。ADC 至 CMPSS 的映射中的版本有所不同。根据使用的电路板版本选择 .syscfg 文件,并从构建中排除另一个文件。
tinv_AM263x_E1.syscfg 或 tinv_Am263x_E2.syscfg 用于配置串式逆变器演示中的所有模块。要运行控制环路,需要使用 ADC、SDFM 和 EPWM 模块。对于电路板保护相关的应用,需要 CMPSS 配置。
最后,要将这些模块从一个元件链接到另一个元件,需要配置一些 XBAR。下一节将单独介绍这些模块中的每一个。
PWM 是逆变器软件配置的核心部分之一。AM263x 的 PWM 模块继承了 TI 经典 C28 控制器的特性。总共需要 12 个 PWM 通道来控制逆变器输出。
创建了六个 EPWM 实例,用于控制逆变器的三个臂:TINV_Q1_Q3_A_PWM_BASE、TINV_Q2_Q4_A_PWM_BASE、TINV_Q1_Q3_B_PWM_BASE、TINV_Q2_Q4_B_PWM_BASE、TINV_Q1_Q3_C_PWM_BASE、TINV_Q2_Q4_C_PWM_BASE。EPWM 外设时钟以 200MHz 的频率运行。在向上/向下计数模式下,每个 EPWM 都配置为 50kHz 频率。
从方程式 1 可以看出,当高速时钟和时基时钟分频器为 1 时,每个 EPWM 时基周期为 2000。本节仅介绍了 TINV_Q1_Q3_A_PWM_BASE 的初始化。不过,对于其他 5 个 PWM 实例,也需要重复相同的初始化过程。图 3-7 显示了 TINV_Q1_Q3_A_PWM_BASE 的完整时基配置。
通过修改计数器比较 A,可在 ISR 中每 20μs 改变一次每个 EPWM 的脉冲宽度。放置在 CMPA 寄存器中的值是通过 PLL 环路计算的,更多相关信息将在以后的章节中讨论。目前,CMPA 初始化为 0。
EPWM 脉冲配置为变为高电平和低电平,具体取决于计数器达到 CMPA 值时的事件。如果计数器在递增计数时达到 CMPA,EPWM 脉冲变为低电平。类似地,如果计数器在递减计数时达到 CMPA 值,EPWM 将设置为高电平。这样就可以为高 CMPA 值提供较高的占空比,并为低 CMPA 值提供较低的占空比。
这些动作会在发生下一个 CTR = 0 事件时加载到所有 EPWM 中。当动作限定符设置中的 CTR = 0 时,这是“影子到活动”加载选项。将加载模式选为全局模式,以确保同时加载到所有 PWM。有关“影子到活动”加载的详细信息,请参阅 AM263x Sitara™ 微控制器技术参考手册的 AQCTLA 和 AQCTLB 影子模式操作 一节。
EPWMB 通过死区进行配置,上升沿和下降沿延迟为 20(20 × 5 = 100ns 延迟)。
用于过流和过压保护的数字比较和跳闸区 EPWM 模块在文档的 CMPSS 部分中进行了配置。
在递增计数时,ISR1 由 TINV_Q1_Q3_A_PWM 的计数器 = CMPC 事件触发。对于 CMPC = 100 事件,它是在 EPWM 的事件触发器子模块中进行配置,如图 3-13 所示。因此,ISR1 每 20μs 触发一次。
这些设置可根据设计要求进行调整。AM263 中共有 32 个不同的中断 XBAR。此 EPWM 事件将路由到中断 XBAR0。稍后会构建中断,并将 ISR 例程添加到同一 XBAR0 中。
ISR2 计时器用于实现以下功能:
使用 RTI 计时器中断每 1ms 触发一次此 ISR2。图 3-15 显示了使用名为 ISR2 的计时器回调例程配置计时器中断所需的 SysConfig 选项。
同样,对于 TASK_A 和 TASK_B 操作,为 TASK_A_TIMER 和 TASK_B_TIMER 配置了 1ms 的时钟周期。这些任务监测用于电路板保护的过流事件并计算 ISR1 和 ISR2 的负载平均值。
在全部三个相位 A、B 和 C 中配置三个 SDFM 通道进行电流检测,如图 3-16 所示。