ZHCUBZ5A September 2021 – April 2024
PWMDAC 模塊使用 ePWM 6A、6B、7A 和 7B 將軟件變量轉換為 PWM 信號,如圖 3-25 所示。PWMDAC 模塊只受高壓套件 (TMDSHVMTRINSPIN) 支持,因為該模塊具有額外的 PWM 輸出,電路板上提供 RC 濾波器。如果將 PWMDAC 模塊與不支持 PWMDAC 模塊的電機驅動器板一起使用,那么 PWM 信號被路由到 C2000 LaunchPad 上的備用 PWM,并且用戶需要在這些引腳上添加 RC 濾波器才能利用 PWMDAC 解決方案。
PWMDAC 模塊可被用于通過外部低通濾波器來查看相關引腳輸出上的信號,此信號由變量表示。因此,需要使用外部低通濾波器來查看圖 3-26 中所示的實際信號波形。(1 階)RC 低通濾波器用于濾除嵌入在實際低頻信號中的高頻分量。要選擇 R 和 C 值,時間常數(shù)可以用截止頻率 (fc) 表示,如以下公式方程式 49 和 方程式 50 所示。
若要啟用 ePWM DAC 功能,必須在工程屬性中添加預定義符號 EPWMDAC_MODE,如圖 3-19 所示。
下面的代碼演示了 PWMDAC 對象的聲明。此代碼位于 sys_main.c 文件中。
HAL_PWMDACData_t pwmDACData;
下面的代碼展示了 PWMDAC 對象、句柄和參數(shù)的初始化和設置。四個模塊輸入 ptrData[0]、ptrData[1]、ptrData[2] 和 ptrData[3] 被配置為指向四個變量的地址。PWMDAC 模塊輸入指向不同的系統(tǒng)變量,這取決于構建級別。此代碼位于 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);