LPC54608 ADC locks

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LPC54608 ADC locks

Jump to solution
1,465 Views
F_Vaquero
Contributor I

I'm using the LPC54608 ADC with MCUXpresso and everything is working fine until I test some ESD at the proximity of the board. Sometimes, at the ESD, I see that the converter locks in the while statement that I have to wait until the conversion is done.

I'm working with 180MHz system clock and synchronous ADC clock at 60MHz. This is the code to do the conversion:

uint16_t ad_PointsConversion(void){
    adc_result_info_t adcResultInfoStruct;
    adc_conv_seq_config_t adcConvSeqConfigStruct;
    uint32_t result;
 
    adcConvSeqConfigStruct.channelMask = (1U);/* Internal temperature sensor channel*/
    adcConvSeqConfigStruct.triggerMask      = 0U;
    adcConvSeqConfigStruct.triggerPolarity  = kADC_TriggerPolarityNegativeEdge;
    adcConvSeqConfigStruct.enableSingleStep = false;
    adcConvSeqConfigStruct.enableSyncBypass = false;
    adcConvSeqConfigStruct.interruptMode    = kADC_InterruptForEachSequence;
    ADC_SetConvSeqAConfig(AD_ADC_BASE, &adcConvSeqConfigStruct);
    ADC_EnableConvSeqA(AD_ADC_BASE, true); /* Enable the conversion sequence A. */
    /* Clear the result register. */
    ADC_GetConvSeqAGlobalConversionResult(AD_ADC_BASE, &adcResultInfoStruct);
    ADC_DoSoftwareTriggerConvSeqA(AD_ADC_BASE);
    while (!ADC_GetConvSeqAGlobalConversionResult(AD_ADC_BASE, &adcResultInfoStruct))
    {
    }
    result = adcResultInfoStruct.result;
    ADC_EnableConvSeqA(AD_ADC_BASE, false); /* Disable the conversion sequence A. */
return result;
}

 

Sometimes, I can recover the ADC with a new ESD. Is there any reported issue about ADC locking due to noise at VREFP or AVDD? Any idea to avoid this locking?

0 Kudos
Reply
1 Solution
1,451 Views
Omar_Anguiano
NXP TechSupport
NXP TechSupport

Hello

Hope you are well.
I have seen a similar behavior in this case: https://community.nxp.com/t5/LPC-Microcontrollers/LPC54628-ADC-reading-invalid/td-p/1295336
Signals in the pin above the VDDA might be causing the issue you are having. 

I suggest you to have a protection circuit for the pin and the supply voltage. Variations and over-voltage on the supply pin can cause unexpected behaviors of the device.

If you have more questions do not hesitate to ask me.
Best regards,
Omar

View solution in original post

0 Kudos
Reply
2 Replies
1,452 Views
Omar_Anguiano
NXP TechSupport
NXP TechSupport

Hello

Hope you are well.
I have seen a similar behavior in this case: https://community.nxp.com/t5/LPC-Microcontrollers/LPC54628-ADC-reading-invalid/td-p/1295336
Signals in the pin above the VDDA might be causing the issue you are having. 

I suggest you to have a protection circuit for the pin and the supply voltage. Variations and over-voltage on the supply pin can cause unexpected behaviors of the device.

If you have more questions do not hesitate to ask me.
Best regards,
Omar

0 Kudos
Reply
1,446 Views
F_Vaquero
Contributor I

Thank you very much Omar,

Now we have transils at the inputs (to limit a 3V3) but we can try with lower voltage transils since our reference voltage for the ADC is 2V5.

We will add as well more capacitance to inputs, VDDA a VREFP. Specially low value ceramic capacitors to work well at high frequency.

Regards,

0 Kudos
Reply