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.

TMS320C6711D: What could be missing in PLL configuration of TMS32C6711DGDPA167 to cause frequent starting up failures?

Part Number: TMS320C6711D

void PLL_Configuration()

               {

               int i;       //JFV 30/11/2006 here for the wait loops

              

              

               //PLLCSR &= 0xFFFFFFFE;                            // set PLLEN to 0

               PLLCSR = 0x40;                                              // set PLLEN to 0

                             

               for (i=0; i<5; i++)

                              {}                                                                                      // wait for 4 CLKIN cycles

              

               //PLLCSR |= 0x00000008;                           // set PLLRST to 1

               PLLCSR = 0x48;                                              // set PLLRST to 1

              

               //Registre PLLDIV0, division par 9 => PLLREF

               PLLDIV0 = 0x0008008;                  // 60MHz/9=6.66Mhz

              

               //Registre PLLM, multiplication par 18 => PLLOUT

               PLLM = 0x00000012;                                    // 6.66MHz*18=120MHz

              

               //Registre OSCDIV1, division par 1 => CLKOUT3

               OSCDIV1 = 0x00008002;                              //Division par 3 (60Mhz/3 = 20 Mhz)

 

               //Registre PLLDIV1, division par 1 => SYSCLK1

               PLLDIV1 = 0x00008000;                // 120Mhz/1=120MHz

              

               for (i=0; i<9; i++)

                              {}                                                                                      // wait for 8 CLKIN cycles

              

               //Registre PLLDIV2, division par 2 => SYSCLK2

               PLLDIV2 = 0x00008001;                // 120Mhz/2=60MHz

              

               for (i=0; i<9; i++)

                              {}                                                                                      // wait for 8 CLKIN cycles

              

               //Registre PLLDIV3, division par 2 => SYSCLK3

               PLLDIV3 = 0x00008001;                // 120Mhz/2=60MHz

              

               for (i=0; i<9; i++)

                              {}                                                                                      // wait for PLL to reset (125ns)

              

               //PLLCSR &= 0xFFF7;                                    // set PLLRST to 0

               PLLCSR = 0x40;                                              // set PLLRST to 0

              

               for (i=0; i<11280; i++)

                              {}                                                                                      // wait for PLL to lock 188us max

              

               //PLLCSR |= 0x00000001;            // set PLLEN to 1

               PLLCSR = 0x01;                               // set PLLEN to 1

               }