One of my customers use 28335 for motor control products, with more than 10K pieces per year and the program inside is the same.
Recently they encountered a strange problem, there are about 20 PCB work abnormally because the ADC conversion results are wrong.
I did some experiments with their engineers, found that the ADC results are wrong when the DSP was power-up under the condition of relatively
high ambient temperature(We used a Hair-drier to heat the surface of the chip to 60~70℃. ), But when we Repower-up the DSP at room
temperature or after the chip cools down, conversion results are correct.They use external reference.
I checked their ADC initialization code,and When replace the initialization code from
AdcRegs.ADCTRL3.all = 0x00E0;
to
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry
DELAY_US(ADC_usDELAY); // Delay before powering up rest
AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC
DELAY_US(ADC_usDELAY2); // Delay after powering up ADC
, the problem is no longer appear .
And there is an description in the datasheet of the SPRU812 <TMS320x2833x Analog-to-Digital Converter (ADC) Module Reference Guide> as
follows
and in an example of the controlsuit there is a similar comments
// To powerup the ADC the ADCENCLK bit should be set first to enable
// clocks, followed by powering up the bandgap and reference circuitry.
// After a 5ms delay the rest of the ADC can be powered up. After ADC
// powerup, another 20us delay is required before performing the first
// ADC conversion.
I would like to know why only a few pieces of the board have this problems ?
Should we have to follow this Power-up Sequence? And What is the theoretical basis of this Sequence?