# 快速评估立功科技基于S32K324的TMS方案

news2024/7/6 18:05:37

文章目录

    • 1.前言
    • 2.立功科技的TMS方案介绍
      • 2.1 介绍资料
      • 2.2 简要介绍
    • 3.S32K3_TriMotor评估板测试
      • 3.1 环境搭建
        • S32 Design Studio for S32 Platform 3.4安装
        • RTD 2.0.0安装
        • Freemaster 3.2
      • 3.2 例程测试
      • 3.3 例程适配
      • 3.4 双核烧录
      • 3.5 测试

1.前言

最近和一些做汽车水泵/风机的客户交流时,都提到要预研TMS(热管理域控制器)方案。希望使用一个高性能的车规MCU,同时控制三个无刷电机(水泵/风扇)、多个有刷电机(空调风门)和多个步进电机(空调出风口/进气格栅/电子膨胀阀)。

NXP主推的S32K3系列中的双核MCU—S32K324(主频160MHz * 2)能够符合该要求,正好笔者手上有一套立功科技的基于S32K324的TMS方案评估板—S32K3_TriMotor,所以记录下使用的过程,方便申请了该评估板的读者快速上手。

2.立功科技的TMS方案介绍

2.1 介绍资料

关于立功科技的TMS方案的特点和演示视频,如下两篇文章介绍的比较详细,推荐阅读。

  • 热管理域控制器方案:三电机控制实战

  • 【解决方案】单芯片TMS域控方案,热管理应用新趋势

2.2 简要介绍

对立功科技的TMS方案进行下简要介绍。

  • 整体的方案框图如下:

  • 功能特性:

    • 支持三个BLDC的无感FOC速度电流双闭环控制;
    • 针对热管理系统支持多路温度、电压电流采集;
    • 支持多路直流有刷电机有感位置控制;
    • 支持多路步进电机微步控制;
    • 支持多路High Side阀门控制;
    • 完善的保护功能,过压欠压,过流、限流、堵转、过温、缺相保护等;
    • 上位机FreeMASTER已适配,三电机独立配置界面。
  • 优势亮点:

    • 控制效率高,极大提高热量的能量利用效率;
    • 器件集成化,极大精简电子系统布局;
    • 大幅减少MCU、线束等数量,降低车辆生产成本;
    • 多个系统集成,方便系统管理;
    • 响应速度快,增强安全性。

3.S32K3_TriMotor评估板测试

立功科技的S32K3_TriMotor有两种配套程序,

  • 一套用于客户前期评估,基于NXP官方的S32K324三电机例程进行移植(主要是适配外围的三相驱动),签订保密协议后免费提供。
  • 一套用于客户量产使用,需要付费购买。

3.1 环境搭建

使用S32K3_TriMotor对应的免费例程需要准备的环境如下:

  • IDE:S32 Design Studio for S32 Platform 3.4 或 3.5
  • 软件包:RTD 2.0.0
  • 调试器:Jlink(推荐安装下J-Flash V7.70a) 或 multilink
  • 调试工具:Freemaster 3.2

推荐使用S32DS 3.5 + RTD 2.0.0,但是笔者在S32DS 3.5已经安装了RTD 3.0.0,如果安装RTD 2.0.0会导致原本基于RTD 3.0.0的工程不可用。所以后文使用S32DS 3.4 + RTD 2.0.0进行演示,S32DS 3.5 + RTD 2.0.0类似。

S32 Design Studio for S32 Platform 3.4安装

  1. S32DS 3.4下载地址为:https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=S32DS-3-4,浏览器打开并登录NXP账号,选择如下版本:

  1. 点击Previous选择S32DS3.4版本。

  2. 选择windows版本的安装包并下载。

  3. 点击License Keys,在弹出的界面找到激活码并保存好,在安装时会用上。(一个激活码最多使用101台机器)

  4. 点击安装包进行安装,安装过程中需要输入激活码时使用前面保存的激活码即可,并选择online激活的方式。

RTD 2.0.0安装

  1. 打开S32DS 3.4,选择好workspace,并勾选作为默认工作区。

  2. 等待S32DS 3.4检查更新。

  3. 更新检查完之后,会弹出可更新以及已安装的组件。勾选S32K3 RTD AUTOSAR 4.4 Version 2.0.0,点击install/update。同时去掉always show的勾选,这样就不会每次打开弹出更新检查的界面。

  4. 所有相关的组件都会自动加入更新列表,点击next,再点击finish进行更新。

  5. 更新完之后重启下S32DS 3.4,点击Help->S32DS Extensions and Updates

  6. 点击Installed,查看已安装的组件是否齐全。

Freemaster 3.2

Freemaster 3.2的下载地址如下,https://www.nxp.com/design/software/development-software/freemaster-run-time-debugging-tool:FREEMASTER,选择3.2版本即可(笔者试过2.5版本打开例程的.pmpx文件会有问题)。

3.2 例程测试

  1. 解压立功科技提供的例程,名称为:
  • MCTPTX1AK324_Triple_PMSM_RDB_230526a.zip
  1. 将解压后的文件夹复制到S32DS 3.4的workspace,并复制其所在的路径。

  2. 打开S32DS 3.4,按下图方式打开例程。

  3. 两个工程分别是内核0和内核1的工程,依次选择两个工程并点击Debug Flash,如果工程ok,会在控制台看到编译生成的elf文件。

  1. 双击打开S32K_PMSM_Sensorless.pmpx文件(如果无法打开,可以先打开freemaster,再选择File->Open Project,选择对应的工程),整体界面如下:

立功科技提供的免费例程用于驱动三个参数相同的电机,只需要在MCAT界面输入对应的电机参数、电流环参数、速度环参数等,在Output File界面就可以更新/生成工程需要的PMSM_appconfig.h文件。

关于MCAT界面的参数,NXP官网有一份应用笔记AN4642详细介绍如何使用和修改。链接为:https://www.nxp.com/webapp/Download?colCode=AN4642&location=null

关于电机本体参数的测试方法,可以参考NXP官网的AN4680应用笔记,链接为:https://www.nxp.com/webapp/Download?colCode=AN4680&location=null

3.3 例程适配

目前笔者手上有两个参数不同的电机,需要对立功科技提供的例程进行一些适配工作才能正常运转。具体适配工作如下:

  1. 结合两个电机M1、M2的参数,使用MCAT工具配置生成对应的文件,分别为M1_PMSM_appconfig.hM1_PMSM_appconfig.h,并添加到内核0工程下的src/config文件夹下:

  2. 然后将M1_PMSM_appconfig.hM1_PMSM_appconfig.h中的宏定义分别加上M1和M2前缀,方便后续调用。

  3. 整个例程中需要用到MCAT生成的参数有如下四个函数,都在mianc.c中定义的:

static tBool CalcOpenLoop(openLoopPospe_t *openLoop, tFloat speedReqRamp);
static void M1_MCAT_Init(motorControl_t *pMC);
static void M2_MCAT_Init(motorControl_t *pMC);
static void M3_MCAT_Init(motorControl_t *pMC);
  1. MCAT初始化函数改起来比较方便,只需要将内部的赋值宏定义加上M1或者M2的前缀即可。

M1_MCAT_Init函数修改

M2_MCAT_Init函数修改

  1. CalcOpenLoop函数实现如下所示,里面调用了WEL_MAX变量,但是因为三个电机的状态机中都使用了该函数,但是函数参数中没有和WEL_MAX参数相关的,无法实现每个电机的状态机调用的是匹配自己的WEL_MAX。
static tBool CalcOpenLoop(openLoopPospe_t *openLoop, tFloat speedReqRamp)
{
    openLoop->wRotEl = speedReqRamp;
    openLoop->thRotEl = MLIB_Mul(MLIB_ConvertPU_FLTF32(GFLIB_IntegratorTR_F32(MLIB_ConvertPU_F32FLT(MLIB_Div(speedReqRamp, WEL_MAX)),
                                                                              &(openLoop->integ))),
                                 FLOAT_PI);

    return (true);
}
  1. 所以需要修改下CalcOpenLoop函数,同时调用该函数的地方也需要做相应的修改。整个的调用关系如下图:

  2. 同时在MCAT初始化函数的最后进行对应电机的WEL_MAX参数赋值以及增加结构体的成员:

static void M1_MCAT_Init(motorControl_t *pMC)
{
......
    pMC->MotorParamInof.Wel_Max = M1_WEL_MAX; //增加
}

static void M1_MCAT_Init(motorControl_t *pMC)
{
......
    pMC->MotorParamInof.Wel_Max = M2_WEL_MAX; //增加
}

  1. 然后保存编译,生成新的内核0的elf文件。

3.4 双核烧录

  1. 将使用jlink连接PC和demo板,打开j-flash,选择S32K324,如下图。

  2. 点击Open data file,选择M0内核的elf文件。

  3. 等待M0内核的elf加载完之后,选择Merge data file,选择M1内核的elf文件。

  4. 两个elf合并成功会在log窗口有提示,接着点击connect,成功之后按F7烧录即可。

3.5 测试

将demo板连接上M1和M2电机,注意代码中的M1,M2电机参数要和实际硬件连接的匹配上,然后按如下步骤进行测试。
测试现场

  1. 使用freemaster打开pmp文件;
  2. 选择刚刚编译的内核0的elf文件;
  3. 将PC和评估板通过USB-TypeC线连接上,并在freemaster界面选择对应的COM口(如果只显示为串行设备,没有XR的字样,需要装一下驱动);
  4. 忽略弹出的警告,并点击Go按钮连接评估板;
  5. 设置两个电机的目标速度,并打开电机,运行一段时间之后的界面如下图:

关于freemaster详细的操作,可以参考之前的文章:

  • FreeMASTER快速入门

如果觉得本文对你有用,不妨给个一键三连!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux命令详解 | wget命令】 wget命令用于从网络下载文件,支持HTTP、HTTPS和FTP协议

文章标题 简介一,参数列表二,使用介绍1. 基本文件下载2. 递归下载整个网站3. 限制下载速率4. 防止SSL证书校验5. 断点续传6. 指定保存目录7. 自定义保存文件名8. 增量下载9. 使用HTTP代理10. 后台下载 总结 简介 在编程世界中,处理网络资源是…

python 各种疑难杂包安装方法与踩坑记录

常用招数: 网络问题:切换网络线路/开关科学、启用/不用国内镜像 包找不到:启用/不用国内镜像、尝试conda、pip、source等多种安装方式 gdal、rasterio 参考链接: python rasterio库安装具体流程 - 知乎 Python安装gdal,raster…

JavaScript读取文件夹和文件、输出文件内容到控制台、showDirectoryPicker、getFile、FileReader、readAsText

文章目录 读取文件夹并输出某个文件内容读取文件及输出内容 读取文件夹并输出某个文件内容 效果图 html <button id"idFolder" class"fs_30 cursor_pointer">选择文件夹</button>JavaScript idFolder.onclick async function () {try {let …

获取excel中的图片(包含wps中嵌入单元格图片)

项目中有excel导入功能,并且需要导入excel中的图片;模板如图: 已知office中插入的图片为浮动形式;如图: wps中可以插入浮动图片,也可以插入嵌入单元格图片;如图: 并且在wps嵌入单元格形式的图片可以看到使用的是公式;如图: 问题来了,如何获取图片 并且将图片与单元格进行对应 …

一篇文章带你搞懂KMP算法

28. 找出字符串中第一个匹配项的下标 首先说明一点&#xff0c;这道力扣题背后所对应的思想就是KMP算法 我们先看看题目&#xff1a; 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 …

进军网络安全的小白们,千万别学偏了!!!

随着互联网时代的日益进步&#xff0c;网络安全在近几年进入了蓬勃发展期。由于处于行业的红利期&#xff0c;很多人选择转行想跻身网络安全行业。 那么这些转行的人&#xff0c;对于网络安全的理解有深有浅&#xff0c;当然小白也是一大批。这就导致了很多人特比容易遇到到学…

5G无人露天矿山解决方案

1、5G无人露天矿山解决方案背景 ①2010.10&#xff0c;国家安监总局《金属非金属地下矿山安全避险“六大系统”安装使用和监督检查暂行规定》 ②2016.03&#xff0c;国家发改委《能源技术革命创新行动计划&#xff08;2016-2030&#xff09;》&#xff0c;2025 年重点煤矿区采…

在ubuntu中将dict.txt导入到数据库sqlite3

将dict.txt导入到数据库 #include <head.h> #include <sqlite3.h> int do_insert(int i,char *str,sqlite3 *db); int main(int argc, const char *argv[]) {//创建泵打开一个数据库sqlite3 *db NULL;if(sqlite3_open("./my.db",&db) ! SQLITE_OK){…

springboot+vue项目在国产机东方通部署详细教程!

文章目录 一、部署东方通TongWeb二、部署TongHttpServer三、springboot多模块后端打包四、vue前端打包&#xff08;TongWeb部署&#xff09;五、TongWeb部署&#xff08;前后端一样&#xff09; 一、部署东方通TongWeb 上传安装包&#xff1a;TongWeb7.0.4.9_Enterprise_Linux.…

Java内存区域(运行时数据区域)和内存模型(JMM)

Java 内存区域和内存模型是不一样的东西&#xff0c;内存区域是指 Jvm 运行时将数据分区域存储&#xff0c;强调对内存空间的划分。 而内存模型&#xff08;Java Memory Model&#xff0c;简称 JMM &#xff09;是定义了线程和主内存之间的抽象关系&#xff0c;即 JMM 定义了 …

随机改名并一键导出表格,让你的文件整理更高效

在日常工作中&#xff0c;文件的命名和归类是一个常见的繁琐任务。随着文件数量的不断增加&#xff0c;手动改名和整理变得异常耗时且容易出错。但是&#xff0c;现在有了一款创意文件改名归类利器&#xff0c;让你能够轻松将文件随机改名并一键导出表格&#xff0c;让文件整理…

Google Earth中的KML文件转换为CSV文件存放经纬度

最近进行一个小工作是在google earth中选择一系列点坐标,然后保存为csv文件或txt文件。我在Google Earth Pro在左上方的“文件”–>“保存”–>“将位置另存为”选项。 弹出的窗口中只有“kmz”与“kml”两种格式,这两种格式均是google earth内置的格式(KMZ文件是KML的…

运动路径规划,ROS发布期望运动轨迹

目录 一、Python实现&#xff08;推荐方法&#xff09; 1.1代码cubic_spline_path.py 1.2使用方法 二、C实现 参考博客 想让机器人/智能车无人驾驶&#xff0c;要有期望路径&#xff0c;最简单的是一条直线&#xff0c;或者是一条光滑曲线。 生成路径的方法有两种&#xf…

RSA加密解密算法原理以及实现

文章目录 前言一、RSA加密算法是什么&#xff1f;加密过程1、选择一对不相等且足够大的质数2、计算p、q的乘积3、计算n的欧拉函数4、选择一个与 φ ( n ) \varphi(n) φ(n)互质的整数e5、计算出e对于 φ ( n ) \varphi(n) φ(n)的模反元素d6、将e、n公开作为公钥进行加密7、将d…

步入React正殿 - 生命周期

目录 资料 三个阶段的生命周期函数 创建阶段 初始化阶段constructor 挂载阶段componentWillMount 挂载阶段render 挂载阶段componentDidMount 更新阶段【props或state改变】 更新阶段componentWillReceiveProps 更新阶段shouldComponentUpdate【可不使用&#xff0c;…

Mysql事务篇——Day02

Mysql事务篇——Day02 事务有哪些特性并发事务引发的问题脏读不可重复读幻读 事务隔离级别Read View 在 MVCC里如何工作 事务有哪些特性 事务是依赖MySQL的储存引擎是实现的&#xff0c;我们常见的Innodb引擎就是支持事务的。 不过并不是所有的存储引擎都可以支持事务&#xf…

SecureCRT8.5安装教程

第一步&#xff1a; 将文件下载解压 第二步&#xff1a; 双击进行安装&#xff0c;或者右键以管理员的方式运行 第三步&#xff1a; 直接点下一步 第四步&#xff1a; 选择接受协议&#xff0c;然后点下一步 第五步&#xff1a; 我这里选择所有用户&#xff0c;然后点下一…

js实现按创建时间戳1609459200000 开始往后开始显示运行时长-demo

运行时长 00日 00时 17分 59秒 代码 function calculateRuntime(timestamp) {const startTime Date.now(); // 获取当前时间戳//const runtimeElement document.getElementById(runtime); // 获取显示运行时长的元素function updateRuntime() {const currentTimestamp Date…

spring入门基本介绍及注入方式---详细介绍

一&#xff0c;spring的简介 Spring是一个开源框架&#xff0c;它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 提供了许多功能强大且易于使用的特性&#xff0c;使得开发者能够更加轻松地构建可维护且可扩展的应用程序&#xff0c;简单来说: Spring使用基…

攻击LNMP架构Web应用

环境配置(centos7) 1.php56 php56-fpm //配置epel yum install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm//安装php56&#xff0c;php56-fpm及其依赖 yum --enablereporemi install php56-php yum --enablereporemi install php…