1. 概述
1.1 功能描述
本範例將使用 S32DS 添加 NXP 車用馬達 / 數學程式庫 AMMCLIB,並示範如何在城市中使用 AMMCLIB。
1.2 硬體工具
MPC5777C-DEVB 評估板
PEmicro Multilink Universal 燒錄器
1.3 軟體工具
S32 Design Studio IDE for Power Architecture , 版本 2017.R1 , Build id: 171018
AMMCLIB , 版本 1.1.15
1.4 相關範例程式
..\MPC5777C_AMMCLIB.zip
2. AMMCLIB 簡介
2.1 概述
AMMCLIB 全稱為 Automotive Math and Motor Control Library Set,是用於實現電機控制或運算的現成程式庫,具有可量產,高度優化的優點,提供快速的程式開發,支援 16-bit定點、32-bit定點與單精度浮點數的小數運算。
2.2 MLIB
MLIB 包含了多種不同功能的加減乘除、絕對值、乘法累加、負數、四捨五入……等等,一共數十種基礎數學運算函式。
2.3 GFLIB
提供了特殊的數學函數 ( Limit、Integrator、Log、平方 ……)、三角函數、基礎控制器 ( PI、PID、Hysteresis、Ramp ……)等等,一共數十種運算函數。
2.4 GMCLIB
空間矢量調變,轉換和電機控制的特定功能。
2.5 GDFLIB
各種數位濾波器 ( FIR、IIR、Moving Average ……) 可以提供信號處理使用。
2.6 AMCLIB
Sensor-less 電機使用的 BEMF 觀測器、PMSM 弱磁控制的控制器等等特定應用的 Library。
3. AMMCLIB 文檔
3.1 說明文檔
使用 S32DS PA 的 AMMCLIB 說明文件標準位置為
"(S32DS 安裝路徑)" \AMMCLIB_ "(Library 版本)" \ "(MCU 名稱)"_AMMCLIB_ "(Library 版本)" \doc
以預設安裝路徑的 MPC5777C AMMCLIB v 1.1.15為例,路徑如下:
C:\NXP\S32DS_Power_v2017.R1\S32DS\AMMCLIB_1.1.15\MPC577xC_AMMCLIB_v1.1.15\doc
3.2 模擬模型 ( bam 格式 )
以預設安裝路徑的 MPC5777C AMMCLIB v 1.1.15為例,路徑如下:
C:\NXP\S32DS_Power_v2017.R1\S32DS\AMMCLIB_1.1.15\MPC577xC_AMMCLIB_v1.1.15\bam
3.3 Header 檔案
以預設安裝路徑的 MPC5777C AMMCLIB v 1.1.15為例,路徑如下:
C:\NXP\S32DS_Power_v2017.R1\S32DS\AMMCLIB_1.1.15\MPC577xC_AMMCLIB_v1.1.15\include
3.4 SWLIBS_Config.h 檔案
在使用 AMMCLIB 以前,必須要針對數學的運算進行設置。
資料夾中存有樣板檔案,當 AMMCLIB 被添加到專案時會複製到專案的 include 資料夾中。以預設安裝路徑的 MPC5777C AMMCLIB v 1.1.15為例,路徑如下:
C:\NXP\S32DS_Power_v2017.R1\S32DS\AMMCLIB_1.1.15\MPC577xC_AMMCLIB_v1.1.15\SWLIBS_Config
4. 為專案添加 AMMCLIB
4.1 添加 AMMCLIB 到專案中
- 選取 Project -> Properties
- 選取
C/C++ Build -> Settings -> Target Processor -> generate SPE SIMD instructions
- 選取 SDKs -> MPC577xC_AMMCLIB_s32ds 1.1.15 -> Attach/Detach
- 點擊圖中 的位置,在出現 符號後按 OK
- 按 OK 設置並關閉專案選項頁面
4.2 透過 SWLIBS_Config.h 設置 AMMCLIB
- 在專案資料夾 Include 下找到檔案,雙擊打開。
- 設置16-bit、32-bit 定點小數運算或浮點運算 (FLT) 的支援
SWLIBS_STD_ON 為啟用,SWLIBS_STD_OFF 為關閉。 - 設置預設的支援
此處要輸入欲設置為預設值的選項,範例如下:
4.3 AMMCLIB 使用範例
使用前需要先 #include 相應的 header 檔案,各 Library 的 header 如下:
- MLIB : mlib.h
- GFLIB : gflib.h
- GMCLIB : gmclib.h
- GDFLIB : gdflib.h
- AMCLIB : amclib.h
完成 include 動作後便可以呼叫 header 中的函數使用。
#include “mlib.h”
int main(void)
{
tFrac16 a = FRAC16(0.125);
tFrac16 b = FRAC16(0.25);
a = MLIB_Add_F16(a,b);
b = MLIB_Div_F16(a,b);
}
5. 參考資料
- MPC5777C Reference Manual , Rev. 8.1
https://www.nxp.com/docs/en/reference-manual/MPC5777CRM.pdf - AMMCLIB v1.1.15 User Guide
file:///C:/NXP/S32DS_Power_v2017.R1/S32DS/AMMCLIB_1.1.15/MPC577xC_AMMCLIB_v1.1.15/doc/MPC577XCMCLUG.pdf