基于瑞萨 RZ/T2L 及 RA8T1 从零实现 FOC (下):RA8T1 配置与算法实现
《基于瑞萨 RZ/T2L 与 RA8T1 从零实现FOC》将分为上、下两篇,系统性介绍如何基于瑞萨 RA8T1 微控制器 (Arm® Cortex®-M85 内核) 以及 RZ/T2L (Arm® Cortex®-R52内核),使用 FSP (Flexible Software Package) 配置磁场定向控制 (FOC) 驱动三相永磁同步电机 (PMSM) 的流程。
本文为下篇,将重点讲解 RA8T1 平台的 FSP 配置流程,详细剖析开环 VF 启动的 SVPWM 算法原理与 Matlab/Simulink 实现,展示在双平台上的关键驱动程序代码,呈现实验现象与性能测试对比,为完整实现 FOC 控制提供技术参考。
一、RA8T1 的 FSP 配置步骤
RA8T1 的 FSP 配置流程与上篇介绍的 RZ/T2L 高度相似,均通过 e²studio 的图形化界面完成。本节将重点说明两者在关键参数上的差异,相同操作步骤将简要带过。
(一) 配置时钟
RA8T1 的时钟源同样使用外部晶振 (20MHz),但 PLL 配置与 RZ/T2L 不同:
- 倍频输出:480MHz (CPU 主频)
- PWM 时钟:120MHz (GPT 定时器)
(二) PWM 模块配置 (GPT)
1、核心参数一致:
计数模式 (三角波中心对齐)、PWM 频率 (20kHz)、死区时间 (500ns) 等配置与 RZ/T2L 相同。
2、主要差异:
- 三相互补输出定时器:U、V、W 通道分别设置 5、2、3
- 引脚分配不同:各引脚配置如下图 (图4)、(图5)、(图6) 所示:
| Phase | Timer Ch | Pin | |
| Phase_U | GPT32_5 | UH | P115 |
| UL | P609 | ||
| Phase_V | GPT32_2 | VH | P113 |
| VL | P114 | ||
| Phase_W | GPT32_3 | WH | P300 |
| WL | P112 | ||
表1 输出通道引脚
(三) ADC 配置 (相电流采样)
采样模式 (同步触发+PWM 中断)、通道分配策略 (开环阶段暂不配置电流采样) 均与 RZ/T2L 一致。主要有以下两点差异:
- 触发源定时器:使用 GPT32_5 的波峰溢出触发 (RZ/T2L 使用 GPT32_0)
- ELC 事件链接:需要相应调整,链接到 GPT32_5 事件
(四) 串口配置
配置完全一致:波特率 921600,用于 VOFA 波形显示。
二、关键代码实现
(一) 开环 FOC 之 SVPWM VF 算法——基于 matlab-simulink
该工程 VF 强拖电机的算法采用 simulink 建模,通过软件设置 Q 轴电压 (D 轴设为 0),通过反 Park 变换得到两相静止坐标系 (αβ) 下的U_alpha、U_beta 值,以及角度信息 θ。这些信息输入到 SVPWM 算法,分别计算出 U、V、W 对应的定时器比较值,最终通过三个定时器比较输出转化为 PWM 占空比,驱动电机旋转。
SVPWM VF 算法通过 matlab 的 simulink 生成的代码,放置于 20KHz 频率的 ADC 中断中执行,详见下一节相关代码。
(二) 驱动程序代码
RZ/T2L 和 RA8T1 都采用 FSP,基本框架一样,这里做统一说明。
1、主程序
程序入口主要完成定时器、ADC、串口、GPIO 的初始化。主循环主要用千将定时器的比较值通过串口上传到 VOFA 上位机,即输出马鞍波。
2、FOC ADC 中断服务程序 (PWM 同步)
ADC 中断由 U 相定时器波峰溢出触发,每 1/20KHz=50uS 进入中断,执行 foc_algorithm_step();,计算出各相定时器比较值,然后由 R_ GPT_THREE_PHASE_DutyCycleSet 函数输出 PWM,驱动电机。
在 foc_algorithm_step(); 会进行反 park 变换、UVW 各相占空比计算、扇区判断等操作,会涉及大量三角函数 sin, cos 以及浮点运算,在下文会作初步的计算时间性能测试。
三、实验现象
(一) 转电机
通过上述配置与代码,成功驱动三相永磁同步电机旋转。
(二) VOFA 显示 SWPWM 波形
通过串口将计算出的三相 PWM 比较值实时发送至 VOFA 上位机软件,可以清晰观察到标准的 SVPWM 马鞍形波形,验证了算法与配置的正确性。
四、性能测试比较
为评估 RZ/T2L 与 RA8T1 在 FOC 算法中的实时计算性能,通过示波器抓取 IO 低电平得到在 ADC 中断中执行开环 SVPWM FOC 算法计算时间,使用 CMSIS-DSP 的 arm_sin_f32 和 arm_cos_f32 进行对比。
下图 (图13) 为 RA8T1 的测试结果,从图中可以看到算法执行时间为 1.2us 左右:
下图 (图14) 为 RZT2L 的测试结果,从图中可以看到 100MHz 1GS/s 的示波器已经跟不上了,另外由于本次 T2L 实验涉及到的三角函数计算均用的 sin, cos 函数,未使用 CMSIS-DSP,执行时间已小于 1us。
为了提供更直观的性能参考,还另外做了一个实验,即:使用 STM32F407 执行 foc_algorithm_step(); 。在分别使用 arm_sin_f32、 arm_cos_f32 和 sin cos 计算时间差距很大,RA8T1、RZT2L 几乎无差别,跟上面得到的结果几乎一样,下图 (图16)、(图17) 分别为 STM32F407 实验结果:
当然 STM32 主频 168Mhz 无法与 RA8T1、RZ/T2L 比较,但从是否使用 CMSIS-DSP 计算三角函数,可以反应瑞萨这两款产品的强劲性能。
五、总结
《基于瑞萨 RZ/T2L 及 RA8T1 从零实现 FOC》通过上下两篇,完整展示了基于瑞萨 RZ/T2L (MPU) 和 RA8T1 (MCU) 从零开始实现 FOC 控制中开环 VF 启动的全过程。上篇聚焦于硬件平台解析与 RZ/T2L 的 FSP 底层驱动配置;本下篇则详细讲解了 RA8T1 的配置、SVPWM 算法的原理与实现、双平台的代码集成,并通过严格的性能测试对比,验证了两款芯片在实时电机控制领域的卓越性能。
关于 simulink 生成 SVPWM 算法的完整代码获取,或欲了解关于更多瑞萨相关方案和技术信息,请与骏龙科技当地的办事处联系或点击下方「联系我们」,提交您的需求,骏龙科技公司愿意为您提供更详细的技术解答。
更多信息: