AnsweredAssumed Answered

Poor sigma delta ADC resolution [MKM34Z]

Question asked by zbigniew halat on May 27, 2019
Latest reply on May 28, 2019 by Felipe García




Software setting:
According to "KM Family Reference Manual"  

  • S&D adc is clocked by 6.144 MHz clock generated from PLL with 32.768 kHz
  • no others module is using this clock to fulfill reference hint:

    'When PLL is driving AFE clock, this clock should not be used for any other module including the core, bus, flash and other peripherals as this is necessary to ensure good accuracy from AFE.'

  • continous conversion mode
  • pga gain disabled
  • oversampling: kAFE_DecimatorOversampleRatio1024


Just short differential input together [EXT_SD_ADPx to EXT_SD_ADMx;  where: x = 0 .... 2], run conversion and get multiple samples.

The expectation is that:

  • the average value will be DC-offset. (Perfectly 0)
  • the variance tells about resolution (Perfectly variance shall be 0). The higher variance the lower resolution.


Here is a result from the first S&D 24 bits converter. I took it from 40 samples


[15:25:14:034] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101010101001␍␊
[15:25:14:034] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101101011000␍␊
[15:25:14:034] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100110000010111␍␊
[15:25:14:034] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100110011011111␍␊
[15:25:14:034] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101011100100␍␊
[15:25:14:034] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101011001111␍␊
[15:25:14:079] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101011011010␍␊
[15:25:14:079] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101100111010␍␊
[15:25:14:079] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101100010010␍␊
[15:25:14:079] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101010110110␍␊
[15:25:14:079] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101100101111␍␊
[15:25:14:079] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100110001100001␍␊
[15:25:14:079] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100110011000010␍␊
[15:25:14:079] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101110011011␍␊
[15:25:14:123] LOG_LEVEL_INFO: #LOG_LEVEL_DEBUG: 111111111100101110011110␍␊



val_max-val_min = 909. It tells that about 10 bits are useless (2^10>909).
So because S&D has 24bit resolution, we can say that ENOB (effective number of bits) is 24- 10 =14bits.
Take a look at the samples, its clear to see that the LSB bits are trash.
I have done such test many times and always get the same results ENOB: 12-14bit.


Why MKM34Z's S&D adc has such poor resolution?
Is there any trick to increase the resolution??