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.

28027 相关使用PWM触发ADC采样的问题

PWM_setCounterMode(pwmHandle, PWM_CounterMode_Up);         // Count up
	PWM_setPeriod(pwmHandle, EPWM4_TIMER_TBPRD);               // Set timer period
	PWM_disableCounterLoad(pwmHandle);                         // Disable phase loading
	PWM_setPhase(pwmHandle, 0x0000);                           // Phase is 0
	PWM_setCount(pwmHandle, 0x0000);                           // Clear counter
	PWM_setHighSpeedClkDiv(pwmHandle, PWM_HspClkDiv_by_1);     // Clock ratio to SYSCLKOUT
	PWM_setClkDiv(pwmHandle, PWM_ClkDiv_by_1);

	// Setup shadow register load on ZERO	
	PWM_setShadowMode_CmpB(pwmHandle, PWM_ShadowMode_Shadow);	
	PWM_setLoadMode_CmpB(pwmHandle, PWM_LoadMode_Zero);

	// Set Compare values
	PWM_setCmpB(pwmHandle, EPWM4_CMPB);    // Set Compare B value

	// Set actions
	PWM_setActionQual_Zero_PwmB(pwmHandle, PWM_ActionQual_Set);            // Set PWM4B on Zero
	PWM_setActionQual_CntUp_CmpB_PwmB(pwmHandle, PWM_ActionQual_Clear);    // Clear PWM4B on event B, up count

	PWM_enableSocAPulse(pwmHandle);   // Enable SOC on A group
	PWM_setSocAPulseSrc(pwmHandle, PWM_SocPulseSrc_CounterEqualCmpBIncr);   // Select SOC from from CPMB on upcount
	PWM_setSocAPeriod(pwmHandle,PWM_SocPeriod_FirstEvent);  // Generate pulse on 1st event

ADC_setSocTrigSrc(adcHandle,ADC_SocNumber_0,ADC_SocTrigSrc_EPWM4_ADCSOCB);

 

1、采用PWM触发ADC 采样,但是并没有成功触发,配置如上代码,哪里出了问题?

2、28027手册中并没有高速时钟的设置介绍,是否28027不使用外部高速时钟?而库里面配置PWM时基时钟时却用到了高速时钟?

  • 1、采用PWM触发ADC 采样,但是并没有成功触发,配置如上代码,哪里出了问题?

    ERIC: 设置的是PWM4触发源,那么那个Handle是不是PWM4, 另外,PWM4运行了没有。CMPB是在PWM周期内吧。

    2、28027手册中并没有高速时钟的设置介绍,是否28027不使用外部高速时钟?而库里面配置PWM时基时钟时却用到了高速时钟?

    ERIC:高速时钟就是系统时钟。

  • 您好,Eric

    我只开启了 PWM4的时钟,和时基时钟,CMPB 53999,周期 59999,但是ADC转换都没有成功

    哦哦,高速时钟就是系统时钟,好的,谢谢您

  • Hi,Eric

    28027的高速时钟等于系统时钟,那还是像28335那样,高速时钟也是默认两分频么?还是默认等于系统时钟,不分频?

  • 28027的高速时钟等于系统时钟,那还是像28335那样,高速时钟也是默认两分频么?还是默认等于系统时钟,不分频?

    Eric:

    F2802x 严格来讲其实没有高速时钟这么一说,除了有些外设模块是用低速时钟输入之外,其他的外设都是直接用系统时钟作为输入,如PWM, ADC。当然,每个模块内部都会有分频的寄存器。

    而PWM模块,内部就有相关的分频寄存器,如TBCTL里面的CLKDIVHSPCLKDIV

    HSPCLKDIV

    High Speed Time-base Clock Prescale Bits
    These bits determine part of the time-base clock prescale value.
    TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)
    This divisor emulates the HSPCLK in the TMS320x281x system as used on the Event Manager
    (EV) peripheral.

    CLKDIV

    Time-base Clock Prescale Bits
    These bits determine part of the time-base clock prescale value.
    TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)

  • Thanks,Eric

    还有一个疑问,是不是说使用28027 配置PWM时,如果不配置HSPCLKDIV 和 CLKDIV,是不是默认HSPCLKDIV =1?和CLKDIV=1?

  • 你去下载一下PWM的模块说明文档,然后你可以查看里面的寄存器。

    我记得好像是2分频。

    Eric

  • 哦哦,好的,谢谢您,Eric