文章目錄
- 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安裝
- S32DS 3.4下載地址為:https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=S32DS-3-4,瀏覽器打開并登錄NXP賬號,選擇如下版本:
-
點擊Previous選擇S32DS3.4版本。
-
選擇windows版本的安裝包并下載。
-
點擊License Keys,在彈出的界面找到激活碼并保存好,在安裝時會用上。(一個激活碼最多使用101臺機器)
-
點擊安裝包進行安裝,安裝過程中需要輸入激活碼時使用前面保存的激活碼即可,并選擇online激活的方式。
RTD 2.0.0安裝
-
打開S32DS 3.4,選擇好workspace,并勾選作為默認工作區。
-
等待S32DS 3.4檢查更新。
-
更新檢查完之后,會彈出可更新以及已安裝的組件。勾選S32K3 RTD AUTOSAR 4.4 Version 2.0.0,點擊install/update。同時去掉always show的勾選,這樣就不會每次打開彈出更新檢查的界面。
-
所有相關的組件都會自動加入更新列表,點擊next,再點擊finish進行更新。
-
更新完之后重啟下S32DS 3.4,點擊Help->S32DS Extensions and Updates
-
點擊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 例程測試
- 解壓立功科技提供的例程,名稱為:
- MCTPTX1AK324_Triple_PMSM_RDB_230526a.zip
-
將解壓后的文件夾復制到S32DS 3.4的workspace,并復制其所在的路徑。
-
打開S32DS 3.4,按下圖方式打開例程。
-
兩個工程分別是內核0和內核1的工程,依次選擇兩個工程并點擊Debug Flash,如果工程ok,會在控制臺看到編譯生成的elf文件。
- 雙擊打開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 例程適配
目前筆者手上有兩個參數不同的電機,需要對立功科技提供的例程進行一些適配工作才能正常運轉。具體適配工作如下:
-
結合兩個電機M1、M2的參數,使用MCAT工具配置生成對應的文件,分別為M1_PMSM_appconfig.h和M1_PMSM_appconfig.h,并添加到內核0工程下的src/config文件夾下:
-
然后將M1_PMSM_appconfig.h和M1_PMSM_appconfig.h中的宏定義分別加上M1和M2前綴,方便后續調用。
-
整個例程中需要用到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);
- MCAT初始化函數改起來比較方便,只需要將內部的賦值宏定義加上M1或者M2的前綴即可。
- 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);
}
-
所以需要修改下CalcOpenLoop函數,同時調用該函數的地方也需要做相應的修改。整個的調用關系如下圖:
-
同時在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; //增加
}
- 然后保存編譯,生成新的內核0的elf文件。
3.4 雙核燒錄
-
將使用jlink連接PC和demo板,打開j-flash,選擇S32K324,如下圖。
-
點擊Open data file,選擇M0內核的elf文件。
-
等待M0內核的elf加載完之后,選擇Merge data file,選擇M1內核的elf文件。
-
兩個elf合并成功會在log窗口有提示,接著點擊connect,成功之后按F7燒錄即可。
3.5 測試
將demo板連接上M1和M2電機,注意代碼中的M1,M2電機參數要和實際硬件連接的匹配上,然后按如下步驟進行測試。
- 使用freemaster打開pmp文件;
- 選擇剛剛編譯的內核0的elf文件;
- 將PC和評估板通過USB-TypeC線連接上,并在freemaster界面選擇對應的COM口(如果只顯示為串行設備,沒有XR的字樣,需要裝一下驅動);
- 忽略彈出的警告,并點擊Go按鈕連接評估板;
- 設置兩個電機的目標速度,并打開電機,運行一段時間之后的界面如下圖:
關于freemaster詳細的操作,可以參考之前的文章:
- FreeMASTER快速入門
如果覺得本文對你有用,不妨給個一鍵三連!!!