I am using TI Concerto Card with F28M35H52C1 RFPT in our product.
The C28 core is using internal 12-bit ADC, as well as controls external 16-bit ADCs and DACs
So, I can select input of any (external or internal ADC) and output it to DAC for diagnostic.
Recently I found strange problem: the internal ADC works just fine up to certain slope ( delta V / delta t) rate of input signal change.
If this change rate is less than 0.5V/ms, conversion is correct.
If slope increases, there is distortion: it starts missing each second sample, I believe.
At slope > 2V / ms it becomes unusable.
I am using recommended settings from examples:
#define C28_ADCCLK_DIVISOR ACLKDIV4 // ADC module clock divisor
#define C28_ADC_ACQPS 0x06 // Acquisition Prescale, Sample Hold Window for SOCx = C28_ADC_ACQPS + 1 clock cycles
Adc1Regs.ADCCTL2.bit.ADCNONOVERLAP = 1; // 0: Overlap of sample and conversion is allowed.
// 1: Enable non-overlap mode i.e. conversion and future sampling events don't overlap
Adc1Regs.ADCCTL2.bit.CLKDIV2EN = 0; // 0: ADC clock = ACIB clock; 1:ADC clock = ACIB clock/2
On the pictures below:
The blue trace is bipolar input from signal generator (it gets scaled down and offsetted in conditioning circuit). The green trace is input signal after conditioning: centered at 1.6V. The yellow trace is what C28 acquires and outputs to the external DAC for diagnostic. The diagnostic signal gets converted back to bipolar signal.
My sample rate is 5 KHz, that's why yellow DAC output trace is delayed.
Any recommendations how to set ADC "more" correctly so it converts all signals?
Small slope:150 Hz frequency, 1.1V p-p input ADC signal (green) - no distortion
medium slope: 150 Hz frequency, 2.04V p-p input ADC signal (green)
large slope, 150 Hz frequency, 2.2V p-p input ADC signal (green)
Here is the proof that it is a slope, not the amplitude of the signal: 60 Hz, 2.7V p-p on ADC input is OK

