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时基时钟时却用到了高速时钟?
desheng yang:
回复 Eric Ma:
您好,Eric
我只开启了 PWM4的时钟,和时基时钟,CMPB 53999,周期 59999,但是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时基时钟时却用到了高速时钟?
desheng yang:
回复 Eric Ma:
Hi,Eric
28027的高速时钟等于系统时钟,那还是像28335那样,高速时钟也是默认两分频么?还是默认等于系统时钟,不分频?
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时基时钟时却用到了高速时钟?
Eric Ma:
回复 desheng yang:
28027的高速时钟等于系统时钟,那还是像28335那样,高速时钟也是默认两分频么?还是默认等于系统时钟,不分频?
Eric:
F2802x 严格来讲其实没有高速时钟这么一说,除了有些外设模块是用低速时钟输入之外,其他的外设都是直接用系统时钟作为输入,如PWM, ADC。当然,每个模块内部都会有分频的寄存器。
而PWM模块,内部就有相关的分频寄存器,如TBCTL里面的CLKDIV和HSPCLKDIV
HSPCLKDIV
High Speed Time-base Clock Prescale BitsThese 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 BitsThese bits determine part of the time-base clock prescale value.TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)
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时基时钟时却用到了高速时钟?
desheng yang:
回复 Eric Ma:
Thanks,Eric
还有一个疑问,是不是说使用28027 配置PWM时,如果不配置HSPCLKDIV 和 CLKDIV,是不是默认HSPCLKDIV =1?和CLKDIV=1?
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时基时钟时却用到了高速时钟?
desheng yang:
回复 Eric Ma:
哦哦,好的,谢谢您,Eric
TI中文支持网



