Divide by 2 PWM using FTM in Kinetis K60

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Divide by 2 PWM using FTM in Kinetis K60

652 Views
acharya_satishb
Contributor I

Hello,

In MK60DN256VLL10, I'm trying to generate 25MHz PWM with 50% duty cycle (using 50MHz external clock) in Edge aligned mode. System clock and Core clock = 100MHz and Bus Clock = 50MHz.

According to the reference manual, FTM period in edge aligned mode = (MOD - CNTIN + 0x1) and duty cycle = (CnV - CNTIN). So, to generate 25MHz, MOD must be 1, CNTIN must be 0 and CnV must be 1.

When I set these manually, I do see 25MHz PWM being generated on the scope.

However, the SDK/MCUXpresso cannot seem to set CnV correctly for this condition. I think issue seems to be in the code below in fsl_ftm.c (exists in more than 1 place).

........................
mod = base->MOD;
if ((currentPwmMode == kFTM_EdgeAlignedPwm) || (currentPwmMode == kFTM_CenterAlignedPwm))
{
cnv = (mod * dutyCyclePercent) / 100;
/* For 100% duty cycle */
if (cnv >= mod)
{
cnv = mod + 1;
}
base->CONTROLS[chnlNumber].CnV = cnv;
}
........................

In our case, mod = 1 and dutyCyclePercent = 50. So, cnv remains 0. We want cnv to be 1, I think.

Please let me know if I'm configuring FTM improperly. If you can generate 25MHz PWM using external 50MHz clock via MCUXpresso, please let me know the FTM configuration . I tried various settings via the Peripheral tool of MCUXpresso but was unsuccessful. For now, I have hacked the fsl_ftm.c code and got it to work. If it is a bug in SDK, please plan to fix it in the next revision as soon as possible.

Regards,

Satish

0 Kudos
1 Reply

548 Views
Robin_Shen
NXP TechSupport
NXP TechSupport

Thank you for the report, I'll inform the SDK team about this.
Sorry for the inconvenience we bring you!

Best Regards,

Robin

0 Kudos