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.

MSP430F135: MCU ADC failures

Part Number: MSP430F135
Other Parts Discussed in Thread: INA121

Why won't this app allow me to insert my scope pictures of ADC glitch?

Can I post the glitch analysis as a PDF file?

Summary

We have been using the same design for 5+ years and recently start seeing ADC malfunction in about 10% of our PCBA.  We have tried changing each of the ADC circuit components, but the only fix for a flaky PCBA is to replace the MSP430F135 with a new part.

Details

We have been encountering a problem on about 10% of our detector boards where the ADC in the MSP430F135 MCU will returned corrupted measurements. This will happen at random times when temperature cycling the boards during a system burn-in process. This will show up as out or range reading of 2+ counts on a heavy averaged sample base of 2048 readings with no change in the input signal. The PCBA uses two channels of the ADC (P6.3 & P6.4) and runs in a continuous sampling mode with a 43.6 µsec conversion interval per channel. So, there is an ADC conversion interval of 21.9 µsec between AN0 and AN1

The only cure for a defective PCBA is to replace the MCU and then the board has proper function and stable ADC readings.

The ADC sampling/conversion produces a significant glitch on the signal driving the ADC input. The signal is driven by an INA121 Instrumentation Amplifier in a gain of 6 configuration. It has a low output impedance in the range of a few ohms and should have minimal loading from the sampling circuit in the MCU. We have disabled the port buffers for the analog input ports and are using the “Pulse Sample Mode” of Figure 17-4 of the reference manual and the “Repeat-sequence-of-channels” mode of conversions listed in Table 17-1 of the reference manual. We are also using the internal reference of the MCU set to 1.50 volts with the recommended filtering capacitance values of Fig 5-15 of the MCU data sheet.

Zoom in picture of sampling glitch on AN0 (P6.3)

Note that Ch1 is using a DC offset to expand the DC range to see the small signal changes when actual signal is active. Current input is resting at dark state with DC level of

Does this sampling glitch appear to be typical for the MSP430F135 parts? All the PCBA display a similar glitch when doing ADC conversions.

When the ADC is disconnected from the INA121 output by removing a 0 ohm resistor the ADC glitch is not observed on the analog signal. There is still a glitch of different wave shape on the ADC input pin of the MCU. What is the cause of this waveform on the ADC input pin? It has the same frequency as the sampling rate used by the ADC. Ch3 of the scope picture below shows the disconnected ADC input and C1 shows a connected ADC input glitch.

We want to know, when is the actual ADC conversion being done in relation to the start point of the glitch? We are assuming the glitch is being caused by the input mux switching on and glitching the amplifier output. We want insure we have left enough delay in the ADC set-up in pulse sampling to have the input stable after the mux glitch.

We have a small PCBA with two analog channels feeding 2 ADC inputs of the MSP430F135 MCU. The pictures show the glitch interval for AN0 on a period of 43.6 µsec the interleaving of Ch0 and Ch1 ADC inputs with 21.9 µsec between conversions.

Your help in understand the details of the ADC operation is greatly appreciated.

  • Hello Bernie,

    Thanks for your detailed post.

    Bernie Ryan said:

    Why won't this app allow me to insert my scope pictures of ADC glitch?

    Can I post the glitch analysis as a PDF file?

    You can insert images using the "Insert/Edit Media" button below.

    You can insert .pdf files using the "Insert File" button shown below.

    Bernie Ryan said:
    We have been encountering a problem on about 10% of our detector boards where the ADC in the MSP430F135 MCU will returned corrupted measurements. This will happen at random times when temperature cycling the boards during a system burn-in process.

    Is the device ever subjected to temperatures higher than those specified in Section 5.1 in the datasheet? If so, the device can be permanently damaged.

    Bernie Ryan said:
    We are also using the internal reference of the MCU set to 1.50 volts with the recommended filtering capacitance values of Fig 5-15 of the MCU data sheet.

    Does changing the internal reference buffer mode (ADC10SR) from 1 to 0 change the behavior?

    Bernie Ryan said:
    Does this sampling glitch appear to be typical for the MSP430F135 parts? All the PCBA display a similar glitch when doing ADC conversions.

    This could potentially be caused by errata ADC11 that is present on Rev L devices. Do you see this behaviour in non-L devices? Besides ADC11, there are several other ADC-related erratas for these devices that could be causing the issue.

    Regards,

    James

  • Regarding your questions

    1st

    No, device is not subjected to higher temperature in burn-in.

    Soldering is done using reflow method by outside assembly house

    2nd

    Comment doesn't appear to applicable to the 12 bit ADC variant of the MCUMSP430F135 ADC glitch problem.docx

    3rd

    We have Rev N device on our boards showing issues so ADC11 errata would appear not to apply

    I tried to insert PDF file and not sure it worked correctly, will try againMSP430F135 ADC glitch problem.pdf

  • Thanks for the additional details. Can you share your ADC configuration code? It would be helpful to know things like ADC12CLK frequency, SHT0x sampling time, etc.

    With regards to the observed glitch, Section 17.2.2 in the user's guide describes how the ADC12 module uses the charge redistribution method. When the analog inputs are internally switched, the switching action may cause transient inputs on the input signal. Ideally, the transients decay and settle before conversion or else they could cause errant results. The transients are most likely caused by the in-rush current flowing through the mux (up to 2kOhms) and charging up the input capacitors (can be up to 40pF). Typically, the higher the external source impedance, the higher the transient will be. Assuming the op-amps output is low impedance, the transient amplitude shouldn't be too large.

    What DC offset voltage are you using? Combining this offset voltage with the "glitch" amplitude, is there a possibility that the maximum ADC input is exceeded, perhaps damaging the device requiring you to replace it? Can you measure or test this?

    Regards,

    James

  • Answers to your questions

    1. configuration code/ADC set-up

    //...... SNIP ...............
    
    // Clock setup
    
    DCOCTL = (DCO0+DCO1+DCO2);
    BCSCTL1 = (RSEL0+RSEL1+RSEL2);
    
    //...... SNIP ...............
    
    // Port 6 --------------------------------------------------------------------
    // P6.0 not used
    // P6.1 not used
    // P6.2 not used
    // P6.3 AN0 - analog input CH0
    // P6.4 AN1 - analog input CH1
    // P6.5 not used
    // P6.6 not used
    // P6.7 not used
    // port 6 selection
    //  7 6 5 4  3 2 1 0
    //  0 0 0 0  0 0 0 0   1=output
    P6SEL = 0x18;
    P6DIR = 0x00; // all inputs
    P6OUT = 0x00; // inputs low
    
    //...... SNIP ...............
    
    // ADC Setup
    
    ADC12CTL0 = ADC12ON+REFON+SHT0_5 + MSC; // Setup ADC12, ref., sampling time
    
    ADC12CTL1 = SHP + CONSEQ_3;           // Use sampling timer, repeating sequence of multiple channel
    
    ADC12MCTL0 = INCH_3+SREF_1;             // select channel A3 <==AN0
    ADC12MCTL1 = INCH_4+SREF_1+EOS;                  // select channel A4 <==AN1
    ADC12IE = 0x01;                       // Enable ADC12IFG.1
    
    Delay(100);       // Delay for reference start-up
    ADC12CTL0 |= ENC;                     // Enable conversions
    ADC12CTL0 |= ADC12SC;   // Start conversion - once

    2.  Signal amplitude to ADC

    I should add that the ADC glitch appears the same on both "good" and "bad" boards.  Glitch amplitude varies greatly from 50 to 200 mv.  Not sure why so high as calculated glitch should be less than 10 mv.  Assume 1.5v DC input to ADC and 2k multiplexer impedance and 0 volt on SAR caps would give current of 0.75 ma, then assuming a 10 ohm source impedance glitch amplitude should be 7.5 mv.

    Over voltage seem unlikely as ADC input is driven by op-amp on +/-2.5v supply, ADC input is unipolar positive signal derived from photo diode, op-amp saturates at 1.6 volts, glitch amplitude is 150 to 200 mv on top of 1.6v max signal, doesn't appear over voltage should be an issue as MCU is ona 3.3 volt supply.

    I've noticed in some app notes that the inclusion of a anti-aliasing filter with a large cap can help absorb the SAR transient.  We need a 159 kHz bandwidth so a filter could be made from a 22 ohm and 0.043 uF cap.  I'll try this experiment to see if the glitch can be reduced.

    Finally on my scope picture of the disconnected P6.4 ADC input, the glitch start appears to lead the the P6.3 input sampling glitch, are we seeing the input mux sampling the input before the actual conversion starts?

  • Hello Bernie,

    Thanks again for the code and additional details. After looking through your configuration, I'm starting to suspect that ADC12OSC, the internal ADC12 oscillator, sourcing the clock to ADC12CLK is causing the issue.

    Section 17.2.1 in the user's guide mentions that ADC12OSC is "in the 5-MHz range, but varies with individual devices, supply voltage, and temperature. See the device-specific datasheet for the ADC12OSC specification". Looking at Section 5.26 in the datasheet, I see the range for ADC12OSC is quite large: 3.7 to 6.3 MHz. This may explain why you saw issues during your temperature testing - perhaps the ADC12OSC frequency was changing enough to where the sample-and-hold time was no longer adequate. The 10% "failing" devices could have ADC12OSC running at either minimum or maximum frequency whereas the other "passing" devices may be running around 5 MHz.

    You could try switching the ADC12CLK source from ADC12OSC to SMCLK since your DCO configuration appears to be running at ~5 MHz. Assuming the DCO doesn't vary as much as ADC12OSC across temperature, the results should improve.

    For your code, I would recommend changing "ADC12IE = 0x01" to "ADC12IE = 0x02" since the channel associated with ADC12MCTL1 is the last sample in the sequence, not ADC12MCTL0.

    Bernie Ryan said:

    I've noticed in some app notes that the inclusion of a anti-aliasing filter with a large cap can help absorb the SAR transient.  We need a 159 kHz bandwidth so a filter could be made from a 22 ohm and 0.043 uF cap.  I'll try this experiment to see if the glitch can be reduced.

    Finally on my scope picture of the disconnected P6.4 ADC input, the glitch start appears to lead the the P6.3 input sampling glitch, are we seeing the input mux sampling the input before the actual conversion starts?

     has some interesting guidance about this in the following thread, specifically how there's a trade-off between reducing the glitch using external capacitors and increasing the required sampling time due to extra capacitance.

    Transients on the ADC10 input signal

    Regards,

    James

**Attention** This is a public forum