TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280049C: EPWM ZERO和PRD产生 SOCA 触发ADC采样,采样的时间并不是PWM的二倍频

Part Number:TMS320F280049C

EPWM6 配置为UPDAOWM 模式,频率为50KHZ,在ZERO和PRD 触发ADC 采样。ADC配置中断。

在ADC的中断中,设置GPIO高低来测试进入ADC中断的时间和执行时间。

理论上说,一个采样周期应该会触发两次ADC采样,并且周期回事PWM周期的两倍。

程序配置如下:

//SOC configuration
EPWM_setADCTriggerSource(EPWM6_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_ZERO_OR_PERIOD);
//
// Generate pulse on 1st even
//
EPWM_setADCTriggerEventPrescale(EPWM6_BASE, EPWM_SOC_A, DCDC_PWMtiggerADC_RATIO);
//
// Enable SOC on A group
//
EPWM_enableADCTrigger(EPWM6_BASE, EPWM_SOC_A);

ADC配置如下:

ADC_setupSOC(ADCC_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM6_SOCA,ADC_CH_ADCIN0, 7); //SOCA0=A0 
ADC_setupSOC(ADCC_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_EPWM6_SOCA,ADC_CH_ADCIN1, 7); //SOCA1=A1 
ADC_setupSOC(ADCC_BASE, ADC_SOC_NUMBER2, ADC_TRIGGER_EPWM6_SOCA,ADC_CH_ADCIN2, 7); //SOCA2=A2 
ADC_setupSOC(ADCC_BASE, ADC_SOC_NUMBER3, ADC_TRIGGER_EPWM6_SOCA,ADC_CH_ADCIN1, 7); //SOCA3=A1

ADC_setInterruptSource(ADCC_BASE, ADC_INT_NUMBER1, ADC_SOC_NUMBER3);
ADC_enableContinuousMode(ADCC_BASE,ADC_INT_NUMBER1);
ADC_enableInterrupt(ADCC_BASE, ADC_INT_NUMBER1);
ADC_clearInterruptStatus(ADCC_BASE, ADC_INT_NUMBER1);

 但是实际波形如下图所示:

从波形上看,执行频率确实是50KHZ,但是第二次ADC触发时间应该是10us处。现在是大约4us又重新触发了ADC中断。

有哪位大神遇到过同类似的情况吗。

chenghu yang:

不好意思,是其他中断打断了ADC中断,此贴已完结,麻烦给位。

,

Susan Yang:

很高兴您能解决问题

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280049C: EPWM ZERO和PRD产生 SOCA 触发ADC采样,采样的时间并不是PWM的二倍频
分享到: 更多 (0)