MCXA153 電機(jī)控制應(yīng)用框架
電機(jī)控制框架是根據(jù)客戶需求設(shè)計(jì)的,旨在提供一個(gè)簡(jiǎn)單易用的示例,用于構(gòu)建更復(fù)雜的解決方案。本示例幾乎涵蓋了運(yùn)行基于三相電壓逆變器應(yīng)用程序所需的所有功能。重要外設(shè)無(wú)需額外的 API,所有操作均在底層完成。本示例提供了兩個(gè)中斷、ADC 采樣、FreeMASTER 和 RTCESL 庫(kù)的實(shí)現(xiàn)。?本示例本身并不支持電機(jī)旋轉(zhuǎn)。它是開(kāi)發(fā)能夠旋轉(zhuǎn)電機(jī)的應(yīng)用程序的基礎(chǔ)。?更多詳情,請(qǐng)參閱應(yīng)用程序概述。
主板:FRDM-MCXA153
類(lèi)別:電機(jī)控制
外設(shè):ADC、時(shí)鐘、GPIO、PWM、定時(shí)器、UART
工具鏈:MCUXpresso IDE
目錄
1.軟件
- 最新的MCUXpresso IDE
- MCXA153 SDK 包括 FreeMASTER(可通過(guò) MCUXpresso IDE 下載)
- FreeMASTER實(shí)時(shí)調(diào)試器
2.硬件
- 電源適配器 24-48 VDC
3. 設(shè)置
要運(yùn)行示例軟件,需要將 FRDM-MC-LVPMSM 插入 FRDM-MCXA153 開(kāi)發(fā)板。如果沒(méi)有 FRDM-MC-LVPMSM,軟件可以工作,但由于功率級(jí)缺少電壓偏移,ADC 的模擬測(cè)量將無(wú)法給出正確的數(shù)值。您可以在 IDE 和/或 FreeMASTER 中調(diào)試軟件。
3.1 步驟 1
將項(xiàng)目導(dǎo)入 MCUXpresso IDE。
3.2 第 2 步
構(gòu)建項(xiàng)目并將其刷入 FRDM-MCXA153 板。
3.2 步驟 3
從motor_control文件夾運(yùn)行 FreeMASTER .pmpx 項(xiàng)目并連接到電路板。
在某些情況下,需要在刷機(jī)后或計(jì)算機(jī)從睡眠狀態(tài)喚醒后拔出/插入 EVK USB。修改代碼后,F(xiàn)reeMASTER 彈出窗口會(huì)更改為在 MAP 文件中接受。
4.結(jié)果
您可以觀察實(shí)時(shí)模擬值,并根據(jù)連接到 FRDM-MC-LVPMSM 板的電源電平正確測(cè)量直流總線電壓。將 設(shè)置ui16Run
為 1 后,應(yīng)該可以明顯看到校準(zhǔn)程序正確檢測(cè)并減去了電流通道上的偏移量。
5. 應(yīng)用概述
5.1 外設(shè)初始化
初始化函數(shù)位于mcperiphinit.c源文件中。
5.2 端口和引腳
基本引腳初始化使用該工具生成的board/pinmux.c源文件中的BOARDInit_Pins函數(shù)。
5.3 脈寬調(diào)制
使用eFlexPWM模塊驅(qū)動(dòng)三相電壓源逆變器。PWM 頻率在?peripheral_init.h.?文件中通過(guò)設(shè)置PWM_FREQ
定義進(jìn)行配置。根據(jù)此頻率值,可以通過(guò)預(yù)處理器值計(jì)算PWM_MODULO
eFlexPWM 模塊。PWM
配置為以對(duì)稱(chēng)、中心對(duì)齊模式運(yùn)行。這是通過(guò)將INIT
寄存器值設(shè)置為-MODULO/2
并將VAL1
寄存器值設(shè)置為 來(lái)實(shí)現(xiàn)的MODULO/2 – 1
。死區(qū)時(shí)間值寄存器 DTCNTn 根據(jù) 進(jìn)行配置M1_PWM_DEADTIME
。 VAL4
寄存器用作 ADC 的觸發(fā)事件,以在零矢量(所有底部開(kāi)關(guān)都處于開(kāi)啟狀態(tài))期間對(duì)分流電阻器電壓降進(jìn)行采樣。ADC 的觸發(fā)輸出在寄存器中啟用PWM_TCTRL_OUT_TRIG_EN
。
5.4 模數(shù)轉(zhuǎn)換器
ADC0 模塊在框架中初始化。啟用時(shí)鐘后,使用默認(rèn)校準(zhǔn)功能。大多數(shù)情況下,用戶需要更新或調(diào)整通道采樣序列。為此,我們準(zhǔn)備了額外的支持性定義,以幫助理解此類(lèi) ADC 的命令配置。
5.4.1 ADC命令
對(duì)命令序列低級(jí)編碼的主要誤解在于通過(guò)配置 CMDL 和 CMDH 寄存器來(lái)對(duì)實(shí)際命令和下一個(gè)命令的偏移量進(jìn)行編號(hào)。為此,在mcxa153lowleveladc.h 文件中定義了實(shí)際命令 (ACTCMDx) 和下一個(gè)命令 (NEXTCMDy) 。使用它們可以使用戶更清晰地理解低級(jí)配置,因?yàn)槠屏勘欢x名稱(chēng)所掩蓋。根據(jù)參考手冊(cè),還創(chuàng)建了其他定義來(lái)表達(dá)配置參數(shù),請(qǐng)參閱 mcxa153lowleveladc.h
```
ADC0->CMD[ACTCMD1].CMDL = ADCCMDLADCH(20U)
| ADCCMDLCTYPE(CMDLCTYPESINGLEENDEDA)
| ADCCMDLMODE(CMDLMODE_STANDARD);
ADC0->CMD[ACTCMD1].CMDH = ADCCMDHCMPEN(0)
| ADCCMDHWAITTRIG(0)
| ADCCMDHLWI(0)
| ADCCMDHSTS(CMDHSAMPLETIME35)
| ADCCMDHAVGS(CMDHAVERAGE1)
| ADCCMDHLOOP(0)
| ADCCMDHNEXT(NEXTCMD2);
```
5.4.2 ADC FIFO
初始化的重要部分是FIFO配置。MCXA153有一個(gè)FIFO,用于存儲(chǔ)ADC通道的結(jié)果。
了解結(jié)果 FIFO 中的結(jié)果數(shù)量非常重要。為此,還需要為 ADC 中斷設(shè)置正確的水印。建議在讀取 FIFO 之前讀取 FIFO 中的結(jié)果數(shù)量,并將其與配置的預(yù)期轉(zhuǎn)換次數(shù)進(jìn)行比較。
5.4.3 LPCMP
低功耗比較器設(shè)置為連續(xù)模式。MSEL 多路復(fù)用器設(shè)置為內(nèi)部 8 位 DAC。PSEL 多路復(fù)用器設(shè)置為通道 3,在本例中為直流總線電流。LPCMP 輸出作為故障信號(hào)路由至 eFlexPWM 模塊。
5.4.4 定時(shí)器
Ctimer 0 用作帶中斷的慢循環(huán)(1kHz)周期定時(shí)器。
5.4.5 輸入復(fù)用器
該多路復(fù)用器允許在外設(shè)之間路由信號(hào)。在項(xiàng)目中,它使用引腳工具進(jìn)行配置。路由信號(hào)顯示為“n/a”引腳。
5.5 ADC 結(jié)果處理
為了更好地理解 ADC 的功能,本例中將 ADC 結(jié)果存儲(chǔ)在 32 位變量中,以便觀察其他狀態(tài)位。然后,32 位結(jié)果被屏蔽ADC_RESFIFO_D_MASK
并存儲(chǔ)到 16 位變量中。對(duì)于特定結(jié)果,需要減去一個(gè)偏移量,并使用 RTCESL 移位至完整的 16 位范圍。ADC 結(jié)果存儲(chǔ)在AdcGetResults()
函數(shù)中并進(jìn)行調(diào)節(jié)。
5.6 應(yīng)用狀態(tài)機(jī)
應(yīng)用程序狀態(tài)機(jī)實(shí)現(xiàn)為指向該應(yīng)用程序狀態(tài)函數(shù)的指針數(shù)組。
```
typedef void (tPointerFcn)(void); / pointer to function */
static tPointerFcn AppStateMachineFast[] = {AppInitFast,AppStopFast,AppStartFast,AppRunFast,AppErrorFast};
```
main.c源代碼 中有兩個(gè)狀態(tài)機(jī)調(diào)用:AppStateMachineSlow
在 CTIMER ISR(慢循環(huán))中 AppStateMachineFast
在 ADC ISR(快循環(huán))中
具體的狀態(tài)機(jī)函數(shù)位于motor_control.c中,除快速循環(huán)的 INIT、STOP 和 RUN 狀態(tài)外,大多數(shù)函數(shù)為空。狀態(tài)由ui8MotorState
用于兩個(gè)狀態(tài)機(jī)的變量控制和指示。狀態(tài)變量的更改嚴(yán)格在轉(zhuǎn)換函數(shù)中完成。轉(zhuǎn)換函數(shù)不屬于數(shù)組指針,它們是獨(dú)立的,并且易于根據(jù)用戶所需的轉(zhuǎn)換進(jìn)行重寫(xiě)和更新。
在快速循環(huán)的 INIT 狀態(tài)下,有一個(gè)變量初始化的示例。在快速循環(huán)的 Stop 狀態(tài)下,應(yīng)用程序正在等待ui16Run > 0
條件。然后,它會(huì)轉(zhuǎn)換到 START 狀態(tài)。START 狀態(tài)用于例如對(duì)齊目的,根據(jù)狀態(tài)圖,它會(huì)轉(zhuǎn)到 RUN 狀態(tài)。
6. 常見(jiàn)問(wèn)題解答
尚未發(fā)現(xiàn)針對(duì)該項(xiàng)目的常見(jiàn)問(wèn)題解答。
7. 支持
項(xiàng)目元數(shù)據(jù)
來(lái)源:恩智浦appcodehub