LPC54608 ADC locks

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 
1,428件の閲覧回数
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 件の賞賛
返信
1 解決策
1,414件の閲覧回数
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 件の賞賛
返信
2 返答(返信)
1,415件の閲覧回数
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 件の賞賛
返信
1,409件の閲覧回数
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 件の賞賛
返信