This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VE-Q1:J721S2:PWM 配置和中断回调

Guru**** 2868450 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1637140/tda4ve-q1-j721s2-pwm-configurations-andiinterrupt-callback

器件型号: TDA4VE-Q1

大家好!

我面临中断问题。 我在启动 PWM 后未收到中断回调。 我正在使用下面的 IRQ 和基地址。请确认以下对于 MCU2_0 的详细信息是正确的

#define EPWM_BASE_ADDR (CSL_EPWM1_EPWM_BASE)
#define EPWM_IRQ_NUM  (CSLR_R5FSS0_CORE0_INTR_EPWM1_EPWM_ETINT_0)//R5F 2_0

image.png

请查找以下修改内容。

GPIO 配置:

const uint32_t CSL_GPIO0_PIN_62 = 62;

const uint32_t p24_padconfig_addr = 0x0011C0F8;

易失性 uint32_t * GPIO_P24 =(uint32_t *)(p24_padconfig_addr);

 * GPIO_P24 = 0X10004;

  GPIOSetDirMode_V0 (CSL_GPIO0_BASE、CSL_GPIO0_PIN_62、GPIO_DIRECTION_OUTPUT); //TDAS_EPWM1_B_DES_SVC_960_GPIO_0_FSYNC

  GPIOPinWrite_V0 (CSL_GPIO0_BASE、CSL_GPIO0_PIN_62、GPIO_PIN_HIGH);

  Board_status boardEnST = Board_moduleClockEnable (TISCI_EPWM2);

  int32_t STATUS = Sciclient_pmSetModuleState ( TISCI_EPWM2、
                      TISCI_MSG_VALUE_DEVICE_SW_STATE_ON、
                      TISCI_MSG_FLAG_AOP |TISCI_MSG_FLAG_DEVICE_RESET_ISO、
                      SCICLIENT_SERVICE_WAIT_FOREVER);

------------------------------------------------------------------------------------------------

PWM 配置 1

  1. 解锁所有 MMR 寄存器。
  2. 将所有寄存器初始化为默认值
  3. CSL_epwmTbTimebaseClkCfg (EPWM_BASE_ADDR、 TBCLK、 SOC_EPWM_MODULE_FREQ);
  4. CSL_epwmTbPwmFreqCfg (EPWM_BASE_ADDR、EPWM_TB_CLK_Hz_U32、 periodCounts、
              CSL_EPWM_TB_COUNTER_DIR_STOP、CSL_EPWM_SHADING_REG_CTRL_ENABLE);
  5. CSL_epwmTbSetEmulationMode (EPWM_BASE_ADDR、EPWM_TB_EMU_MODE_FREE_RUN);
  6. CSL_epwmCounterComparatorCfg (EPWM_BASE_ADDR 、CSL_EPWM_CC_CMP_B、 pulseCounts 、CSL_EPWM_SHADE_REG_CTRL_ENABLE、CSL_EPWM_CC_CMP_LOAD_MODE_CNT_EQ_ZERO) 正确);
  7. CSL_epwmAqActionOnOutputCfg (EPWM_BASE_ADDR、 CSL_EPWM_OUTPUT_CH_B、&AqActCfg);

启用中断:

8. CSL_epwmEtIntrClear (EPWM_BASE_ADDR);  

9. CSL_epwmEtIntrCfg (EPWM_BASE_ADDR、 CSL_EPWM_ET_ET_INTR_EVT_CNT_EQ_ZRO、                CSL_EPWM_ET_ET_INTR_PERIOD_FIRST_EVT);

10. CSL_epwmEtIntrEnable (EPWM_BASE_ADDR);

11、HwiP_clearInterrupt (EPWM_IRQ_NUM);

12、 HwiP_Params_init (&hwiParams);

13、  hwiParams.priority = 1;  
    hwiParams.enableIntr = true;

    handle = HwiP_create (EPWM_IRQ_NUM、fsyncPwmIRQ、&hwiParams);

14、 HwiP_enableInterrupt (EPWM_IRQ_NUM);

启动 FSYNC

 CSL_epwmTbPwmFreqCfg (EPWM_BASE_ADDR、 EPWM_TB_CLK_Hz_U32、 m_CurfsyncPeriod_ticks)
           CSL_EPWM_TB_COUNTER_DIR_UP 、CSL_EPWM_SHADOK_REG_CTRL_ENABLE);

以上是我使用的配置。 请让我知道我遗漏的任何其他信息。

此致、

Veerahema

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    这个线程似乎是重复的、 因此我要关闭这个线程。

    此致、

    Karthik