ZHCUBZ5A September 2021 – April 2024
PWMDAC 模塊使用 ePWM 6A、6B、7A 和 7B 將軟件變量轉(zhuǎn)換為 PWM 信號(hào),如圖 3-25 所示。PWMDAC 模塊只受高壓套件 (TMDSHVMTRINSPIN) 支持,因?yàn)樵撃K具有額外的 PWM 輸出,電路板上提供 RC 濾波器。如果將 PWMDAC 模塊與不支持 PWMDAC 模塊的電機(jī)驅(qū)動(dòng)器板一起使用,那么 PWM 信號(hào)被路由到 C2000 LaunchPad 上的備用 PWM,并且用戶(hù)需要在這些引腳上添加 RC 濾波器才能利用 PWMDAC 解決方案。
PWMDAC 模塊可被用于通過(guò)外部低通濾波器來(lái)查看相關(guān)引腳輸出上的信號(hào),此信號(hào)由變量表示。因此,需要使用外部低通濾波器來(lái)查看圖 3-26 中所示的實(shí)際信號(hào)波形。(1 階)RC 低通濾波器用于濾除嵌入在實(shí)際低頻信號(hào)中的高頻分量。要選擇 R 和 C 值,時(shí)間常數(shù)可以用截止頻率 (fc) 表示,如以下公式方程式 49 和 方程式 50 所示。
若要啟用 ePWM DAC 功能,必須在工程屬性中添加預(yù)定義符號(hào) EPWMDAC_MODE,如圖 3-19 所示。
下面的代碼演示了 PWMDAC 對(duì)象的聲明。此代碼位于 sys_main.c 文件中。
HAL_PWMDACData_t pwmDACData;
下面的代碼展示了 PWMDAC 對(duì)象、句柄和參數(shù)的初始化和設(shè)置。四個(gè)模塊輸入 ptrData[0]、ptrData[1]、ptrData[2] 和 ptrData[3] 被配置為指向四個(gè)變量的地址。PWMDAC 模塊輸入指向不同的系統(tǒng)變量,這取決于構(gòu)建級(jí)別。此代碼位于 sys_main.c 文件中。
// set DAC parameters
pwmDACData.periodMax =
PWMDAC_getPeriod(halHandle->pwmDACHandle[PWMDAC_NUMBER_1]);
pwmDACData.ptrData[0] = &motorVars_M1.anglePLL_rad; // PWMDAC1
... ...
pwmDACData.ptrData[1] = &motorVars_M1.angleENC_rad; // PWMDAC2
... ...
pwmDACData.ptrData[2] = &motorVars_M1.angleENC_rad; // PWMDAC3
... ...
pwmDACData.ptrData[3] = &motorVars_M1.adcData.I_A.value[0]; // PWMDAC4
pwmDACData.offset[0] = 0.5f;
pwmDACData.offset[1] = 0.5f;
pwmDACData.offset[2] = 0.5f;
pwmDACData.offset[3] = 0.5f;
pwmDACData.gain[0] = 1.0f / MATH_TWO_PI;
pwmDACData.gain[1] = 1.0f / MATH_TWO_PI;
pwmDACData.gain[2] = 1.0f / MATH_TWO_PI;
pwmDACData.gain[3] = 4096.0f / USER_MOTOR1_OVER_CURRENT_A;
以下代碼演示了在 motor1ctrlISR() 中斷執(zhí)行期間使用新數(shù)據(jù)更新 PWM 輸出。此代碼位于 motor1_drive.c 文件中。
// connect inputs of the PWMDAC module. HAL_writePWMDACData(halHandle, &pwmDACData);