SNAA354A May   2021  – June 2022 ADC128S102QML-SP

 

  1.   Abstract
  2.   Trademarks
  3. 1Introduction
  4. 2Comprehensive Summary
  5. 3Root Cause Analysis
  6. 4Test Solution
  7. 5Empirical Data and Results
  8. 6Mitigation Methods
  9. 7Conclusion
  10. 8Revision History

Mitigation Methods

The intermittent occurrence of the sparkle code allows for simple mitigation methods to safeguard the system from unnecessarily responding to a sparkle occurrence. Due to the nature of the sparkle code, any existing hardware does not need to be modified; sparkle code occurrence is inherently a digital response, and thus firmware focused method can address a sparkle code occurrence in existing applications. A sparkle code occurrence can resemble a single event transient (SET) considering how the output can suddenly be 0x0FF different from the expected measurement. If systems already have existing methods to responds to SET signatures, it is possible that no further mitigation methods are necessary. The best mitigation method will depend on the end application and device use case, thus there are many methods to mitigate the sparkle code.

The method highlighted in this section is a short firmware algorithm that eliminates an outlier output code, similar to a simple average. This simple firmware algorithm addresses any sparkle occurrence with a best out of 3 approach. This technique requires three consecutive measurements, which are then averaged together. The three ADC measurements are then compared to the averaged result. The output code with the greatest deviation from the average is then eliminated. The final two measurements are then averaged together to provide a more accurate result. The system can move forward using this value to make any further decisions. The end user can also decide to forgo the second averaging and continue with the two remaining output measurements, instead of following the presented technique. The initial technique does limit the ability to measure single code outputs, but provides a safe approach with only limiting response to three measurements. This approach provides a quicker response time opposed to longer complex alternatives. In section Software Example, a pseudo code is available to implement this technique.

To protect the system from responding to a sparkle code, several options exists to post process the data. If the system allows for a longer response time, taking the average of a large number of samples decreases the sparkle code weight in the final result, averaging out the sparkle code. This approach can be extended with a digital filter. A digital filter can shape the frequency response and lower noise, at the possible expense of a longer response time. The digital filter would essentially screen all output measurements and eliminate any sparkle codes present.

Even though this can be addressed through firmware, there are hardware mitigation methods possible for new projects as well. If there is available printed circuit board space, redundancy in the hardware can be implemented. A second ADC can be introduced and sample the same input, the system can then compare output measurements and respond when needed only if both ADC outputs match.

Software Example

Mitigation Pseudo Code, best of three samples //**************************************************************** 
//Script Name : Best of 3 conversion samples 
//Author : Art Kay 
//Description : compare three samples and discard the furthers outlier of the three 
// Copyright (c) 2021 Texas Instrument Incorporated //**************************************************************** 
// Collect 3 samples 
double Meas1 = 1000; //sample 1 
double Meas2 = 1001; //sample 2 
double Meas3 = 1;    //sample 3 
//Define formula variables 
double nAVG = 0.0;   //define average variable 
double Result = 0.0; //define result variable 
double Test1 = 0.0;  //define variable 
double Test2 = 0.0;  //define variable 
double Test3 = 0.0;  //define variable 
//Calculate average sample 
nAVG = (Meas1 + Meas2 + Meas3)/3; //initial average for comparison 
//Determine which sample has the largest deviation from the average value 
Test1 = Abs(Meas1 - nAVG); 
Test2 = Abs(Meas2 - nAVG); 
Test3 = Abs(Meas3 - nAVG); 
//Re-calculate the average value, ignoring the sample with the largest deviation 
if(Test1 >= Test2 && Test1 >= Test3)
{
 Result = (Meas2 + Meas3)/2; 
} 
elseif(Test2 >= Test1 && Test2 >= Test3) 
{
 Result = (Meas1 + Meas3)/2; 
} elseif(Test3 >= Test1 && Test3 >= Test2) 
{
 Result = (Meas1 + Meas2)/2; 
} 
end;