DSPRelated.com
Forums

Vref and max scale on C28xxx

Started by Kyle Manna July 8, 2008
Hi,

I'm looking for a little clarification on how the ADC voltage
reference is used on the C28xxx processors. I've used AVRs, ARM7s,
and Cortex-M3s in the past and conversion from digital counts to
analog voltage was always something like:

Vin = ADCvalue/4096 * Vref

Where the input range is Vagnd Vref.
However, on the C28xxx according to the ADC datasheet, the equation seems to be:

Vin = ADCvalue/4096 * 3.0

This implies (to me at least) that the max scale is always 3.0V
despite the voltage reference selected.

Is my understanding correct? Furthermore, what's the advantage of
having different voltage references other then stability?

Thanks,
- Kyle


OMAP35x EVM jump-starts low-power apps
The modular and extensible OMAP35x Evaluation Module (EVM) enables developers to start building applications based on the OMAP35x architecture: http://www.DSPRelated.com/omap35x
Hello,

I've found your thread because of searching about a Problem with adc on F2808.
I Think there is always the 3.0V bcause the DSP is switching circuts internally when you select 2.048, 1.5 or 1.024V external reference. In other prrocessors the maximum input voltage is reference Voltage. Here it is always 3V. There may be an voltage divider at input stage to make it comperable with reference voltage. But I don't found any information about it in manual.
Now looking my Problem ;)
I Think you are using external reference. So it may be posible to help me.

When I'm using internal voltage reference there is much noise in adc result. So I tried using extern reference from the ezdsp board.
To do so I set following bits:
AdcRegs.ADCREFSEL.bit.REF_SEL = 0x1;
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x0;
AdcRegs.ADCTRL3.bit.ADCPWDN = 0x1;

The rusult is not what I expected. The signal always hanging at 4095 (maximum of 12bit).

- What other registers have to be set?
- Has the internal bandgap reference active when im using external? (makes no sense, but i get results - very confusing! )
- Is there anywhere an example which uses external reference?
Sorry form my bad english and thanks for help!

OMAP35x EVM jump-starts low-power apps
The modular and extensible OMAP35x Evaluation Module (EVM) enables developers to start building applications based on the OMAP35x architecture: http://www.DSPRelated.com/omap35x
Hi Simon,

I've been using the internal reference only and not the external reference. I think the problem is because of the bandgap and the delay that you need to give before you can start using the ADC. Here's a sample code for the bandgap

AdcRegs.ADCTRL1.all = 0x4000;
asm(" NOP");
asm(" RPT #14||NOP"); //DELAY to keep the device in reset
AdcRegs.ADCTRL1.all = 0x0;
AdcRegs.ADCTRL3.all = 0x00E0; // Power up bandgap/reference/ADC circuits
DELAY_US(INTERNAL_ADC_INITIAL_DELAY);

where, INTERNAL_ADC_INITIAL_DELAY is defined as 6000L. After you do this, you can enter the configuration of the ADC.
I'm not sure about the usage of external reference so I'm not in a position to answer the other part of your question.

Hope this helps.

Thanks,
Vishal

--- On Wed, 7/9/08, m...@web.de wrote:
From: m...@web.de
Subject: [c28x] Re: Vref and max scale on C28xxx
To: c...
Date: Wednesday, July 9, 2008, 7:37 PM

Hello,

I've found your thread because of searching about a Problem with adc on F2808.

I Think there is always the 3.0V bcause the DSP is switching circuts internally when you select 2.048, 1.5 or 1.024V external reference. In other prrocessors the maximum input voltage is reference Voltage. Here it is always 3V. There may be an voltage divider at input stage to make it comperable with reference voltage. But I don't found any information about it in manual.

Now looking my Problem ;)

I Think you are using external reference. So it may be posible to help me.

When I'm using internal voltage reference there is much noise in adc result. So I tried using extern reference from the ezdsp board.

To do so I set following bits:

AdcRegs.ADCREFSEL. bit.REF_SEL = 0x1;

AdcRegs.ADCTRL3. bit.ADCBGRFDN = 0x0;

AdcRegs.ADCTRL3. bit.ADCPWDN = 0x1;

The rusult is not what I expected. The signal always hanging at 4095 (maximum of 12bit).

- What other registers have to be set?

- Has the internal bandgap reference active when im using external? (makes no sense, but i get results - very confusing! )

- Is there anywhere an example which uses external reference?

Sorry form my bad english and thanks for help!


OMAP35x EVM jump-starts low-power apps
The modular and extensible OMAP35x Evaluation Module (EVM) enables developers to start building applications based on the OMAP35x architecture: http://www.DSPRelated.com/omap35x
@Vishal:

I know this with that delay. It's done so in the examples. But as long as you are not converting in starting up time you don't need the delay. It's only for reverence Voltage to become stable. I've tryed it and there is no difference at all.

Can you tell me how large your noise is if you are using internal reference and a constant input voltage?
At my application its about +-3 bit noise.

Thanks,
Simon

OMAP35x EVM jump-starts low-power apps
The modular and extensible OMAP35x Evaluation Module (EVM) enables developers to start building applications based on the OMAP35x architecture: http://www.DSPRelated.com/omap35x