ZHCU677E June 2019 – April 2024 TMS320F28P550SJ , TMS320F28P559SJ-Q1
DAB 工程由两个 ISR(ISR1 和 ISR2)组成,其中 ISR1 速度最快且不可嵌套。ISR1 保留用于控制环路和 PWM 更新。ISR1 由 PRIM_LEG1_PWM_BASE → EPWM_INT_TBCTR_U_CMPC 事件触发。
以下是与此 ISR 相关的宏定义:
#define DAB_ISR1_PERIPHERAL_TRIG_BASE DAB_PRIM_LEG1_PWM_BASE
#define DAB_ISR1_TRIG INT_EPWM1
#define DAB_ISR1_PIE_GROUP INTERRUPT_ACK_GROUP3
#define DAB_ISR1_TRIG_CLA CLA_TRIGGER_EPWM1INT
ISR2 由 CPU 计时器 INT 触发,而 CPU 计时器 INT 由 CPU 计时器的溢出发起。ISR2 为命令的参考信号运行压摆率函数。
#define DAB_ISR2_TIMEBASE CLLLC_TASKC_CPUTIMER_BASE
#define DAB_ISR2_TRIG INT_TINT2
另外,CPU 计时器用于触发慢速后台任务(这些任务均不由中断驱动,而是采用轮询方式)。“A”任务在 TASKA_FREQ(即 100Hz)时触发。必须以此速率调用 SFRA GUI。以这一速率执行一个任务 A1。“B”任务在 TASKB_FREQ(即 10Hz)时触发。这些任务用于一些基本的 LED 切换和非时间关键型状态机项目。B1、B2 和 B3 这三个任务都是以此为目的。
图 4-6 展示了 ISR 软件图。
DAB_pwmEPSAlphaPRef_pu
、DAB_pwmEPSAlphaP_pu
、DAB_pwmEPSAlphaSRef_pu
、DAB_pwmEPSAlphaS_pu
、DAB_pwmEPSPhaseShift_P1_P2_ticks
、DAB_pwmEPSPhaseShift_P1_S1_ticks
和 DAB_pwmEPSPhaseShift_P1_S2_ticks
。函数 DAB_calculatePWMPhaseShift
周期和 DAB_HAL_ipdatePWMDutyPeriodPhaseShift()
会被相应地修改。