Пример #1
0
CSL_Status pll_sample()
{
    CSL_Status status;
	volatile int i;

    status = PLL_init(&pllObj, CSL_PLL_INST_0);
    if (status != CSL_SOK)
    {
        return status;
    }

    hPll = (PLL_Handle)(&pllObj);

    PLL_reset(hPll);

    status = PLL_bypass(hPll);
    if (status != CSL_SOK)
    {
        return status;
    }

    /* Configure the PLL */
    //pConfigInfo = (PLL_Config *)&pllCfg_40MHz;
    pConfigInfo = (PLL_Config *)&pllCfg_100MHz;
    //pConfigInfo = (PLL_Config *)&pllCfg_100MHz_ExtClk12Mhz;
    //pConfigInfo = (PLL_Config *)&pllCfg_120MHz_ExtClk12Mhz;

    status = PLL_config (hPll, pConfigInfo);
    if (status != CSL_SOK)
    {
        return(status);
    }

    status = PLL_getConfig(hPll, &pllCfg1);
    if (status != CSL_SOK)
    {
        return status;
    }

    /* Wait for PLL to stabilize */
    for (i=0; i<100; i++);

    status = PLL_enable(hPll);
    if (status != CSL_SOK)
    {
        return status;
    }

    // set DSP_LDO to 1.05V
    //*(volatile ioport unsigned int *)(0x7004) |= 0x0002;

    return CSL_SOK;
}
Пример #2
0
/*..........................................................................*/
void BSP_init(void) {
    PLL_Config pllCfg_100MHz = {
        0x8BE8U, 0x8000U, 0x0806U, 0x0000U
    };
    PLL_Obj pllObj;
    uint16_t i;

    PLL_init(&pllObj, CSL_PLL_INST_0);
    PLL_reset(&pllObj);
    PLL_config(&pllObj, &pllCfg_100MHz);

    QF_zero();                        /* clear the QF variables, see NOTE01 */

    CSL_SYSCTRL_REGS->PCGCR1 = 0U;      /* enable clocks to all peripherals */
    CSL_SYSCTRL_REGS->PCGCR2 = 0U;
    CSL_SYSCTRL_REGS->EBSR   = 0x1800U;             /* configure I/O muxing */
    CSL_SYSCTRL_REGS->PSRCR  = 0x0020U;            /* reset all peripherals */
    CSL_SYSCTRL_REGS->PRCR   = 0x00BFU;

    ULED_init();                              /* configure the User LEDs... */

    IRQ_globalDisable();
    IRQ_disableAll();                         /* disable all the interrupts */
    IRQ_clearAll();                         /* clear any pending interrupts */
    IRQ_setVecs((uint32_t)&VECSTART);               /* set the vector table */
    for (i = 1U; i < 32U; ++i) {               /* pre-fill the Vector table */
        IRQ_plug(i, &illegal_isr);                      /* with illegal ISR */
    }

    /* plug in all ISRs into the vector table...*/
//    IRQ_plug(TINT_EVENT, &TINT_isr);
//    IRQ_plug(RTC_EVENT,  &RTC_isr);
    /* ... */

    if (QS_INIT((void *)0) == 0) {    /* initialize the QS software tracing */
        Q_ERROR();
    }
    QS_OBJ_DICTIONARY(&l_TINT_isr);
}
Пример #3
0
int pll_frequency_setup(unsigned int frequency)
{
    CSL_Status status;

    status = PLL_init(&pllObj, CSL_PLL_INST_0);
    if(CSL_SOK != status)
    {
       printf("PLL init failed \n");
       return (status);
    }

	hPll = (PLL_Handle)(&pllObj);

	PLL_reset(hPll);

   /* Configure the PLL for different frequencies */

   if ( frequency == 1)
    {
      pConfigInfo = &pllCfg_1MHz;
      printf("\nLL frequency 1 MHz\n");
    }
   else if ( frequency == 2)
    {
      pConfigInfo = &pllCfg_2MHz;
      printf("\nPLL frequency 2 MHz\n");     
    } 
   else if ( frequency == 12)
    {
      pConfigInfo = &pllCfg_12MHz; 
      printf("\nPLL frequency 12 MHz\n");        
    }
   else if ( frequency == 40)
    {
      pConfigInfo = &pllCfg_40MHz;
      printf("\nPLL frequency 40 MHz\n");     
    } 
   else if ( frequency == 60)
    {
      pConfigInfo = &pllCfg_60MHz; 
      printf("\nPLL frequency 60 MHz\n");        
    }
   else if ( frequency == 75)
    {
      pConfigInfo = &pllCfg_75MHz;
      printf("\nPLL frequency 75 MHz\n");     
    } 
   else if ( frequency == 98)
    {
      pConfigInfo = &pllCfg_98MHz; 
      printf("\nPLL frequency 98 MHz\n");        
    }  
   else if ( frequency == 120)
   {
      pConfigInfo = &pllCfg_120MHz;
      printf("\nPLL frequency 120 MHz\n");        
   }
   else 
   {
      pConfigInfo = &pllCfg_100MHz;
      printf("\nPLL frequency 100 MHz\n");        
   }

   status = PLL_config (hPll, pConfigInfo);
   if(CSL_SOK != status)
   {
       printf("PLL config failed\n");
       return(status);
   }

	status = PLL_getConfig(hPll, &pllCfg1);
    if(status != CSL_SOK)
	{
	    printf("TEST FAILED: PLL get config... Failed.\n");
		printf ("Reason: PLL_getConfig failed. [status = 0x%x].\n", status);
		return(status);
	}

    printf("REGISTER --- CONFIG VALUES\n");

    printf("PLL_CNTRL1   %04x --- %04x\n",pllCfg1.PLLCNTL1,hPll->pllConfig->PLLCNTL1);
    printf("PLL_CNTRL2   %04x --- %04x Test Lock Mon will get set after PLL is up\n",
                                pllCfg1.PLLCNTL2,hPll->pllConfig->PLLCNTL2);
    printf("PLL_CNTRL3   %04x --- %04x\n",pllCfg1.PLLINCNTL,hPll->pllConfig->PLLINCNTL);
    printf("PLL_CNTRL4   %04x --- %04x\n",pllCfg1.PLLOUTCNTL,hPll->pllConfig->PLLOUTCNTL);

   status = PLL_bypass(hPll);
   if(CSL_SOK != status)
   {
       printf("PLL bypass failed:%d\n",CSL_ESYS_BADHANDLE);
       return(status);
   }

   status = PLL_enable(hPll);
   if(CSL_SOK != status)
   {
       printf("PLL enable failed:%d\n",CSL_ESYS_BADHANDLE);
       return(status);
   }

   return(CSL_TEST_PASSED);
}
CSL_Status pll_sample_freq(Uint16 freq)
{
    CSL_Status status;
	volatile int i;

    status = PLL_init(&pllObj, CSL_PLL_INST_0);
    if (status != CSL_SOK)
    {
        return status;
    }

    hPll = (PLL_Handle)(&pllObj);

    PLL_reset(hPll);

    status = PLL_bypass(hPll);
    if (status != CSL_SOK)
    {
        return status;
    }

    /* Configure the PLL */
    switch(freq){
    	case 40:
    		pConfigInfo = (PLL_Config *)&pllCfg_40MHz;
    		break;
    	case 100:
    		pConfigInfo = (PLL_Config *)&pllCfg_100MHz;
    		break;
    	case 120:
    		pConfigInfo = (PLL_Config *)&pllCfg_120MHz;
    		break;
    	default:
    		pConfigInfo = (PLL_Config *)&pllCfg_100MHz;
    }
    status = PLL_config (hPll, pConfigInfo);
    if (status != CSL_SOK)
    {
        return(status);
    }

    status = PLL_getConfig(hPll, &pllCfg1);
    if (status != CSL_SOK)
    {
        return status;
    }

    /* Wait for PLL to stabilize */
    for (i=0; i<100; i++);

    status = PLL_enable(hPll);
    if (status != CSL_SOK)
    {
        return status;
    }

    // set DSP_LDO to 1.05V
    //*(volatile ioport unsigned int *)(0x7004) |= 0x0002;

    return CSL_SOK;
}