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.

MSP432P401R: oscillator issue

Part Number: MSP432P401R

Hello everyone,

My Chip platform is MSP432P401R ,SDK is simplelink_msp432p4_sdk_1_60_00_12. The power all are 2.2V design. I want to use oscillator(16.384Mhz,oscillator output voltage Vpp >0.8V) for HFXT ,and SMCLK/MCLK from HFXT:

Scenario 1  : i known when use oscillator shoule enable passby mode "CS_startHFXT(true);"but it stop in " if (boolTimeout && ((--timeout) == 0))   "  statement.   as show following code and picture.

Scenario 2  :  when i disable passby mode"CS_startHFXT(false);",it can work well and MCLK frequency is 16.384Mhz,but HFXTIFG remains set,can't be clear.

i don't known where i had some mistake.

The oscillator i had attachment.


/*this is clock  function*/

void InitCS(SYSTEM_CLOCK *pt_clk) { /* Configuring pins for peripheral/crystal usage */ MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_PJ, GPIO_PIN3 | GPIO_PIN2, GPIO_PRIMARY_MODULE_FUNCTION); CS_setExternalClockSourceFrequency(CS_LFXT_FREQ, CS_HFXT_FREQ); /* Starting HFXT in bypass mode without a timeout. Before we start * we have to change VCORE to 1 to support the 16.384MHz frequency */ MAP_PCM_setPowerMode(PCM_DCDC_MODE); MAP_PCM_setCoreVoltageLevel(PCM_VCORE1); MAP_FlashCtl_setWaitState(FLASH_BANK0, 2); MAP_FlashCtl_setWaitState(FLASH_BANK1, 2); CS_startHFXT(true); // CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_48); /* Initializing MCLK to HFXT */ MAP_CS_initClockSignal(CS_MCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1); /* Initializing SMCLK to HFXT */ MAP_CS_initClockSignal(CS_SMCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1); //SystemCoreClockUpdate(); //TEST // MAP_GPIO_setAsOutputPin(GPIO_PORT_P4, GPIO_PIN0);//ADC2_CLK MAP_SysTick_enableModule(); //system tick MAP_SysTick_setPeriod(SYS_TICK_1MS); MAP_SysTick_enableInterrupt(); MAP_Interrupt_enableMaster(); }



/*this is CS_startHFXT function*/
bool CS_startHFXT(bool bypassMode)
{
return CS_startHFXTWithTimeout(bypassMode, 0);
}

/*this is  CS_startHFXTWithTimeout   function*/
bool CS_startHFXTWithTimeout(bool bypassMode, uint32_t timeout)
{
    uint32_t wHFFreqRange;
    uint_fast8_t bNMIStatus;
    bool boolTimeout;

    /* Unlocking the CS Module */
    CS->KEY = CS_KEY;

    /* Saving status and temporarily disabling NMIs for UCS faults */
#ifdef __MCU_HAS_SYSCTL_A__
    bNMIStatus = SysCtl_A_getNMISourceStatus() & SYSCTL_A_CS_SRC;
    SysCtl_A_disableNMISource(SYSCTL_A_CS_SRC);
#else
    bNMIStatus = SysCtl_getNMISourceStatus() & SYSCTL_CS_SRC;
    SysCtl_disableNMISource(SYSCTL_CS_SRC);
#endif

    /* Determining which frequency range to use */
    wHFFreqRange = _CSGetHFXTFrequency();
    boolTimeout = (timeout == 0) ? false : true;

    /* Setting to maximum drive strength  */
    BITBAND_PERI(CS->CTL2, CS_CTL2_HFXTDRIVE_OFS) = 1;
    CS->CTL2 = (CS->CTL2 & (~CS_CTL2_HFXTFREQ_MASK)) | (wHFFreqRange);

    if (bypassMode)
    {
        BITBAND_PERI(CS->CTL2, CS_CTL2_HFXTBYPASS_OFS) = 1;
    } else
    {
        BITBAND_PERI(CS->CTL2, CS_CTL2_HFXTBYPASS_OFS) = 0;
    }

    /* Starting and Waiting for frequency stabilization */
    BITBAND_PERI(CS->CTL2, CS_CTL2_HFXT_EN_OFS) = 1;
    while (BITBAND_PERI(CS->IFG, CS_IFG_HFXTIFG_OFS))
    {
        if (boolTimeout && ((--timeout) == 0)) //  Program stop here ,it can't go on ,as show following picture
            break;

        BITBAND_PERI(CS->CLRIFG,CS_CLRIFG_CLR_HFXTIFG_OFS) = 1;
    }

    /* Setting the drive strength */
    if (!bypassMode)
    {
        if (wHFFreqRange != CS_CTL2_HFXTFREQ_0)
            BITBAND_PERI(CS->CTL2, CS_CTL2_HFXTDRIVE_OFS) = 1;
        else
            BITBAND_PERI(CS->CTL2, CS_CTL2_HFXTDRIVE_OFS) = 0;
    }

    /* Locking the module */
    BITBAND_PERI(CS->KEY, CS_KEY_KEY_OFS) = 1;

    /* Enabling the NMI state */
#ifdef __MCU_HAS_SYSCTL_A__
    SysCtl_A_enableNMISource(bNMIStatus);
#else
    SysCtl_enableNMISource(bNMIStatus);
#endif

    if (boolTimeout && timeout == 0)
        return false;

    return true;
}


TG2520SBN_en.pdf

**Attention** This is a public forum