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

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

此问题已被解答
All Replies
  • 秀才366分
    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时基时钟时却用到了高速时钟?

  • 状元54403分

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

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

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

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

    确认答案的话,帮忙点赞 “是”

    - ERIC

  • 秀才366分

    您好,Eric

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

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

  • 秀才366分

    Hi,Eric

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

  • 状元54403分

    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)

    确认答案的话,帮忙点赞 “是”

    - ERIC

  • 秀才366分

    Thanks,Eric

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

  • 状元54403分

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

    我记得好像是2分频。

    Eric

    确认答案的话,帮忙点赞 “是”

    - ERIC

  • 秀才366分

    哦哦,好的,谢谢您,Eric