This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

want to switch pll at different frequency

Hello,
want to switch PLL at differernt frequency and want to know the feedback mechanism whether its lock or not using below code for fix mdec and pdec value .

}
void setting_MDEC_PDEC(int mdec, int pdec)
{ LPC_SYSCON->SYSPLLMDEC = mdec; // x13 // 0xd LPC_SYSCON->SYSPLLPDEC = pdec; // /2 // 6
}

int32_t main(void) { int i ,mdec,pdec; int temp = 0; char strChar2Int[10]; int size;

LPC_IOCON->PIO0_0 |= (1 << 0); //pin0_1 as uart tx LPC_SYSCON->CLKOUTCLKSEL = 3; LPC_SYSCON->CLKOUTDIV = 1; LPC_SYSCON->CLKOUTUEN = 0; LPC_SYSCON->CLKOUTUEN = 1; while (!(LPC_SYSCON->CLKOUTUEN & 0x01));

UARTInit(24000000); UARTSend("\n\rEnter mdec\n\r",20); while(1) { __WFI(); switch(UARTBuffer[UARTCount-1]){ case '>': // <M255> or <P002> strChar2Int[0] = UARTBuffer[UARTCount-2]; //5 strChar2Int[1] = UARTBuffer[UARTCount-3]; //5 strChar2Int[2] = UARTBuffer[UARTCount-4]; //2 UARTSend("\n\rHere",6); if (UARTBuffer[UARTCount-5] == 'M') mdec = str2integer(strChar2Int); else if (UARTBuffer[UARTCount-5] == 'P') pdec = str2integer(strChar2Int); if (UARTBuffer[UARTCount-5] == 'M'){ UARTCount = 0; UARTSend("Send PDEC:",11); } else if (UARTBuffer[UARTCount-5] == 'P') { UARTSend("Setting PLL",11); // LPC_SYSCON->SYSPLLCTRL = 0x00000c90; LPC_SYSCON->SYSPLLCLKSEL = 0; LPC_SYSCON->SYSPLLCLKUEN = 0x01; LPC_SYSCON->SYSPLLCLKUEN = 0x00; LPC_SYSCON->SYSPLLCLKUEN = 0x01; while (!(LPC_SYSCON->SYSPLLCLKUEN & 0x01)){}; LPC_SYSCON->SYSPLLCTRL = 0x00280C90; // bit[9:4] = 0x9 and bit [14:10] = 0x3 // // bit[15] = BYPASS , set to 0, use CCO to create PLL output // // bit[16] = not BYPASS_CCODIV2, set to 0 // // bit[19] = PLL input divider bypass, set to 1 to use PLL input clock // // bit[20] = PLL output divider bypass, set to 0 to use P divider // // bit[21] = Enable clk , set to 0 = Enabled

LPC_SYSCON->SYSPLLMDEC = mdec; // x32 LPC_SYSCON->SYSPLLPDEC = pdec; // /2 //Turn on PLL LPC_SYSCON->PDRUNCFG &= ~(1<<22); //Waiting for Lock while(!(LPC_SYSCON->SYSPLLSTAT & 0x01)){}; LPC_SYSCON->MAINCLKSEL = 3; LPC_SYSCON->MAINCLKUEN = 0x01; LPC_SYSCON->MAINCLKUEN = 0x00; LPC_SYSCON->MAINCLKUEN = 0x01; while (!(LPC_SYSCON->MAINCLKUEN & 0x01));

}

break; } }
}