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.

TM4C1290NCZAD: TM4C129NCZAD reset and clock swing behavior

Part Number: TM4C1290NCZAD

Hi, 

While using TM4C129NCZAD, we noticed that the RESET_N got de-asserted much before any XTAL reaches settling time (i.e. stable clock).

  • Is this an issue?
  • Is there any / no requirement to have the clock stable before the RESET_N is asserted?
  • Also the 12Mhz clock swings normally above 0V while the 32.768khz swings below and above 0V. Is this a problem?

Thanks,

Christina 

  • Hi,

     The RST_N is an input to the MCU. It can be e-asserted before the clock is stable.  After the RST_N is released the internal reset is still held until the power supply has reached the valid operating range. Please refer to the electrical section in the datasheet on the reset timing. If you select the MOSC as the clock source then the device needs to wait until the OSC is stable before you can switch to it. By default the PIOSC is the clock source after reset. Check the below snippet from the SysCtlClockFreqSet(). The device until the MOSCPUPRIS bit set if you are selecting the MOSC. 

    else if((ui32Config & 0x38) == SYSCTL_OSC_MAIN)
    {
    //
    // Bounds check the source frequency for the main oscillator. The is
    // because the PLL tables in the g_pppui32XTALtoVCO structure range
    // from 5MHz to 25MHz.
    //
    if((i32XtalIdx > (SysCtlXtalCfgToIndex(SYSCTL_XTAL_25MHZ))) ||
    (i32XtalIdx < (SysCtlXtalCfgToIndex(SYSCTL_XTAL_5MHZ))))
    {
    return(0);
    }

    ui32Osc = g_pui32Xtals[i32XtalIdx];

    //
    // Set the PLL source select to MOSC.
    //
    ui32OscSelect = SYSCTL_RSCLKCFG_OSCSRC_MOSC;
    ui32OscSelect |= SYSCTL_RSCLKCFG_PLLSRC_MOSC;

    //
    // Clear MOSC power down, high oscillator range setting, and no crystal
    // present setting.
    //
    ui32MOSCCTL = HWREG(SYSCTL_MOSCCTL) &
    ~(SYSCTL_MOSCCTL_OSCRNG | SYSCTL_MOSCCTL_PWRDN |
    SYSCTL_MOSCCTL_NOXTAL);

    //
    // Increase the drive strength for MOSC of 10 MHz and above.
    //
    if(i32XtalIdx >= (SysCtlXtalCfgToIndex(SYSCTL_XTAL_10MHZ) -
    (SysCtlXtalCfgToIndex(SYSCTL_XTAL_5MHZ))))
    {
    ui32MOSCCTL |= SYSCTL_MOSCCTL_OSCRNG;
    }

    HWREG(SYSCTL_MOSCCTL) = ui32MOSCCTL;

    //
    // Timeout using the legacy delay value.
    //
    ui32Delay = 524288;

    while((HWREG(SYSCTL_RIS) & SYSCTL_RIS_MOSCPUPRIS) == 0)
    {
    ui32Delay--;

    if(ui32Delay == 0)
    {
    break;
    }
    }

    As far as the voltage swing on the OSC, I don't see a problem. 

  • Hi Charles,

    What is PIOSC and MOSC?
    I'm using 12Mhz external XTAL X1. Is that MOSC?

    For the 32.768khz XTAL X2, the voltage swing I’m concerned about is the positive side (it only reaches ~200mV).
    Table 26-22 says VIH should be higher than 2.64V. So this is a problem, right?

    Where should we measure XTAL start-up time from (TSTART)?
    Is it measured from the moment 3V3 is applied to the TI MCU?

    Thanks,
    Christina
  • Hi Christina,
    PIOSC is the internal oscillator. After reset the internal PIOSC is used as the clock source for the device until you select new source such as MOSC or PLL by software. The MOSC is the main oscillator. 12MHz will be your external crystal.
    The 2.64V is when you are using an external oscillator. However, you are connecting a crystal instead, don't you? I also see see about 200mV when measuring the crystal XOSCO. I don't see an issue.
    There is logic inside the chip that determines when the oscillator is ready/valid. Normally this may use the MOSC itself to count certain number of cycles to meet the required Tstart time after POK is reached.