[原创] 英飞凌电机套件 EVAL-IMOTION2GO 学习笔记三

我的学号   2023-1-24 10:39 楼主

本帖主要记录脚本的编写和烧录

 

先简单介绍脚本在 MCE系统中的功能

image.png

从截图可知, MCEWizrad 除了设置电机参数,硬件设备和应用参数外,

还可以编写用户脚本,脚本的典型应用是启动过程定制,速度曲线规划,参数配置和特殊故障处理等

电机控制和速度观测器算法是封装在 MCU 中的,芯片工作时MCU 优先执行电机控制和PFC 算法,剩下的空余执行脚本语言

脚本有固定的结构,支持两个独立并行的 task0(1ms)和task1(10ms)任务,前者通过 1ms 的中断进入,后者是空余时间执行;task0 的优先级较高

开发脚本需要通过 MCEWizard或其他文档编辑器编写并保存为 .mcs 文件,配置使能 ADC 和GPIO,编写脚本后编译可生成 .ldf文件

ldf 文件包含有 task0 和task1 脚本指令总数和全局变量列表,两个task 之间的信息交互正是通过这些全局变量运行的

 

下边结合官方的例程序和文档,学习脚本编写

安装 MCEWizard 后,在 PC 的文档处会生成如下的文件:

image.png

另外官方有一份中文教程

Infineon-AN2018-27_How_to_Use_iMOTION_Script_Language-AN-v01_00-CN 

 

先从最简单的 GPIO_Toggle 开始

参照官方对 IMOTION2GO 的参数设置,重新配置一份新的 txt 文件;如果直接使用default 最后生成 ldf 的选项是灰色不可操作的

一路next 和填写数据,进入编写脚本选项,将 GPIO7 选为 ouput , 然后选择 Script Coding 进入脚本编写界面,加入如下代码:

image.png

#SET SCRIPT_USER_VERSION (1.00)  /*Script version value should be 255.255*/
#SET SCRIPT_TASK0_EXECUTION_PERIOD    (100)  /*Script execution time for Task0 in mS, maximum value 65535*/
#SET SCRIPT_TASK1_EXECUTION_PERIOD    (1)  /*Script execution time for Task1 in 10mS, maximum value 65535*/
#SET SCRIPT_START_COMMAND (0x3)  /* Start command, Task0 : Bit0, Task1 : Bit1; if bit is set, script executes after init */
#SET SCRIPT_TASK0_EXECUTION_STEP (1)  /* Script Task0  step, This defines number of lines to be executed every 1mS*/
#SET SCRIPT_TASK1_EXECUTION_STEP (10) /* Script Task1  step, This defines number of lines to be executed every 10mS*/

/*********************************************************************************************************************/
int sVar0;
/*********************************************************************************************************************/
/*Task0 init function*/
Script_Task0_init()
{
  sVar0=0;
  
}
/******************************************************************************************************************/
/*Task0 script function*/
Script_Task0()
{
 sVar0 = sVar0+1;

  if(sVar0<10)
  {
    GPIO7_OUT =0;
  }

  if((sVar0>10)&&(sVar0<20))
  {
    GPIO7_OUT =1;
  }

  if(sVar0>20)
  {
    sVar0 =0;
  }
}
/******************************************************************************************************************/
/*Task1 init function*/
Script_Task1_init()
{

}
/******************************************************************************************************************/
/*Task1 init function*/
Script_Task1()
{

}

设置 task0 的执行周期为 100ms,定义了 sVar0 这个全局变量,1s 令GPIO(LED)输出低电平,1s 输出高电平

脚本属于伪 C 语言,但用起来发现限制挺多的;不支持 else if 的语法,不支持 sVar0++ 写法,也不支持 >= 这类运算

如果执行周期定义为 1ms, sVar0 的判断设置为 1000,闪灯的时间间隔不准,原因未知

 

image.png  可以通过点击 1 引入旧有程序进行修改,点击3 编辑检查是否有语法问题;

检查无误点击 2 可生成 .msc 文件并保存

 

之后一路 next ,进入文件生成操作界面

image.png

Parameters File,  即为之前的硬件配置 .txt 文件

可选项 Script File,为上个步骤编写保存的脚本 .mce文件 

MCE Firmware File, 官方软件包提供的固件

Combine File 会在指定位置生成二进制 xxx.ldf文件,这个就是后续用于烧写的文件

MyTest.txt (6.65 KB)
(下载次数: 0, 2023-1-24 10:37 上传)
My_GPIO_Toggle7.mcs (1.62 KB)
(下载次数: 0, 2023-1-24 10:37 上传)
IMC101T-T038_A_V1.02.20.ldf (272.84 KB)
(下载次数: 0, 2023-1-24 10:37 上传)
MyTest7.ldf (276.64 KB)
(下载次数: 0, 2023-1-24 10:38 上传)

 

 烧录阶段,打开软件 MCEDesigner, 通过 ”file“ 打开 软件包里的 .irc文件

image.png  首次打开需要连接 COM,即PC 可以和板卡通信

点击 ”Tool“ ->"Program" 进入烧写选项

image.png

选择导入固件 和 参数

 

参数即为 txt 文件,导入一次即可;固件为之前 combine 后生成的 ldf 文件,按 "Start" 后开始烧录

等待烧录完成

image.png

 

完成后会提示是否需要更新参数,这里没有修改 irc,选择 否 即可

image.png

初次烧录导入固件和 txt文件,后续若硬件无修改,选择导入脚本文件即可

 

LED 灯已按 1s 的时间闪烁 ,至此点灯程序完成

 

本帖最后由 我的学号 于 2023-1-24 11:07 编辑
君应有语,渺万里层云,千山暮雪,知向谁边?

回复评论 (1)

分享的非常细致,牛逼,感谢博主分享,超赞

点赞  2023-7-8 13:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复