コード例 #1
0
/*FUNCTION**********************************************************************
 *
 * Function Name : CLOCK_SYS_GetUsbFreq
 * Description   : Gets the clock frequency for USB FS OTG module.
 * This function gets the clock frequency for USB FS OTG moudle.
 *
 *END**************************************************************************/
uint32_t    CLOCK_SYS_GetUsbFreq(uint32_t instance)
{
    (void) instance;
    uint32_t freq = 0;
    uint8_t setting;
    clock_names_t clockName;
    uint32_t frac = 0;
    uint32_t divider = 0;

    /* get the sim clock source setting*/
    if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockUsbSrc, &setting) != kSimHalSuccess)
    {
        return freq;
    }

    switch ((sim_usb_clock_source_t)setting)
    {
    case kSimUsbSrcClkIn:  /* Core/system clock */
        clockName = kUSB_CLKIN;
        break;
    case kSimUsbSrcPllFllSel:   /* clock as selected by SOPT2[PLLFLLSEL]. */
        /* get the sim clock source setting*/
        if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockPllfllSel, &setting) != kSimHalSuccess)
        {
            return freq;
        }

        switch ((sim_pllfll_clock_sel_t)setting)
        {
        case kSimPllFllSelFll:       /* Fll clock */
            clockName = kMcgFllClock;
            break;
        case kSimPllFllSelPll:        /* Pll0 clock */
            clockName = kMcgPll0Clock;
            break;
        default:
            clockName = kReserved;
            break;
        }
        break;
    default:
        clockName = kReserved;
        break;
    }

    /* Get ref clock freq */
    CLOCK_SYS_GetFreq(clockName, &freq);

    /* Get divider and frac */
    CLOCK_HAL_GetDivider(g_simBaseAddr[0], kClockDividerUsbDiv, &divider);
    CLOCK_HAL_GetDivider(g_simBaseAddr[0], kClockDividerUsbFrac, &frac);

    /* Divider output clock = Divider input clock � [ (FRAC+1) / (DIV+1) ]*/
    freq = (freq) * (frac + 1) / (divider + 1);

    return freq;
}
コード例 #2
0
/*FUNCTION**********************************************************************
 *
 * Function Name : CLOCK_SYS_GetLpuartFreq
 * Description   : Gets the clock frequency for LPUART module. 
 * This function gets the clock frequency for LPUART moudle.
 *
 *END**************************************************************************/
uint32_t    CLOCK_SYS_GetLpuartFreq(uint32_t instance)
{
    uint32_t freq = 0;
    uint8_t setting;
    uint8_t setting1;
    clock_names_t clockName;
    uint32_t divider = 0;

    /* get the sim clock source setting*/
    if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockLpuartSrc, &setting) != kSimHalSuccess)
    {
        return freq;
    }

    switch ((sim_lpuart_clock_source_t)setting)
    {
    case kSimLpuartSrcPllFllSel:   /* clock as selected by SOPT2[PLLFLLSEL]. */
        /* get the sim clock source setting*/
        if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockPllfllSel, &setting1) != kSimHalSuccess)
        {
            return freq;
        }

        switch ((sim_pllfll_clock_sel_t)setting1) 
        {
        case kSimPllFllSelFll:       /* Fll clock */
            clockName = kMcgFllClock;
            break;
        case kSimPllFllSelIrc:        /* Irc 48Mhz clock */
            clockName = kIrc48mClock;
            break;
        default:
            clockName = kReserved;
            break;
        }
        break;
    case kSimLpuartSrcOscErclk:     /* OscErClk with divider */
        clockName = kOsc0ErClock;
        break;
    case kSimLpuartSrcMcgIrclk:     /* MCGIRCLK */
        clockName = kMcgIrClock;
        break;
    default:
        clockName = kReserved;
        break;
    }

    /* Get ref clock freq */
    CLOCK_SYS_GetFreq(clockName, &freq);

    if ((sim_lpuart_clock_source_t)setting == kSimLpuartSrcOscErclk)
    {
        divider = OSC_HAL_GetExternalRefClkDivCmd(g_oscBaseAddr[0]);
        freq = freq >> divider;   /* 2 bits divider, divide by 1/2/4/8 */
    }
コード例 #3
0
/*FUNCTION**********************************************************************
 *
 * Function Name : CLOCK_SYS_GetSdhcFreq
 * Description   : Gets the clock frequency for SDHC module
 * This function gets the clock frequency for SDHC moudle
 *
 *END**************************************************************************/
uint32_t    CLOCK_SYS_GetSdhcFreq(uint32_t instance)
{
    (void) instance;
    uint32_t freq = 0;
    uint8_t setting;
    clock_names_t clockName;

    /* get the sim clock source setting*/
    if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockSdhcSrc, &setting) != kSimHalSuccess)
    {
        return freq;
    }

    switch ((sim_sdhc_clock_source_t)setting)
    {
    case kSimSdhcSrcCoreSysClk:  /* Core/system clock */
        clockName = kCoreClock;
        break;
    case kSimSdhcSrcPllFllSel:   /* clock as selected by SOPT2[PLLFLLSEL]. */
        /* get the sim clock source setting*/
        if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockPllfllSel, &setting) != kSimHalSuccess)
        {
            return freq;
        }

        switch ((sim_pllfll_clock_sel_t)setting)
        {
        case kSimPllFllSelFll:       /* Fll clock */
            clockName = kMcgFllClock;
            break;
        case kSimPllFllSelPll:        /* Pll0 clock */
            clockName = kMcgPll0Clock;
            break;
        default:
            clockName = kReserved;
            break;
        }
        break;
    case kSimSdhcSrcOscerclk:    /* OSCERCLK clock */
        clockName = kOsc0ErClock;
        break;
    case kSimSdhcSrcExt:         /* SDHC CLKIN clock */
        clockName = kSDHC0_CLKIN;
        break;
    default:
        clockName = kReserved;
        break;
    }

    /* Get ref clock freq */
    CLOCK_SYS_GetFreq(clockName, &freq);
    return freq;
}
コード例 #4
0
/*FUNCTION**********************************************************************
 *
 * Function Name : CLOCK_SYS_GetEnetRmiiFreq
 * Description   : Gets the clock frequency for ENET module RMII clock.
 * This function gets the clock frequency for ENET moudle RMII clock.
 *
 *END**************************************************************************/
uint32_t    CLOCK_SYS_GetEnetRmiiFreq(uint32_t instance)
{
    (void) instance;
    uint32_t freq = 0;
    uint8_t setting;
    clock_names_t clockName;
    /* get the sim clock source setting*/
    if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockRmiiSrc, &setting) != kSimHalSuccess)
    {
        return freq;
    }

    if ((sim_rmii_clock_source_t)setting == kSimRmiiSrcExtalClk)
    {
        clockName = kEXTAL_Clock;
    }
    else
    {
        clockName = kENET_1588_CLKIN;
    }

    CLOCK_SYS_GetFreq(clockName, &freq);
    return freq;
}