F2812 ADC...

Gast #496942
Lesenswert?

Hallo,

ich habe schon nach dem Thema mittels der Suchfunktion gesucht, aber 
habe leider noch keine Lösung gefunden.

Ich möchte die internen 12-bit A/D Wandler (0..3V) des F2812 in Betrieb 
nehmen.

Ich habe dazu die nichtbenutzen Eingänge mit GND verbunden
ADCINB1 mit GND verbunden
ADCINB2-mit GND verbunden
ADCINB3-mit GND verbunden
ADCINB4-mit GND verbunden
ADCINB5-mit GND verbunden
ADCINB6-mit GND verbunden
ADCINB7-mit GND verbunden

desweiteren
VREFLO-mit GND verbunden

An ADCINB0 möchte ich nun ein Signal 0..3V legen. Bei Anschluss eines 
Netzteiles an ADCINB0 gegen GND fließt sofort ein hoher Strom 
(Strombegrenzung). Desweiteren habe ich probiert die Spannung (5V) des 
Boards mit einem Spannungsteiler herunter zu teilen und dann auf den 
ADC-Eingang zu legen-auch hier fällt die eingestellte Spannung deutlich 
ab.

Anschließend habe ich noch versucht nach der Schaltung im Anhang, den in 
den ADC hineinfließenden Strom zu begrenzen. Die angelegte Spannung 
blieb stabil. Jedoch war bei einer eingestellten Maximalspannung von 3V 
der Wert über 4095..
Wer kann mir helfen?
Gast #497022
Lesenswert?

Hi Phil,

meinst du den ADCLO oder das Signal ADCREFM ?
die Referenz wird aus der Differenz von ADCREGP und ADCREFM gebildet, 
darf also NICHT auf GND liegen. Welches Board benutzt du dafür ?


Gruß Thomas
Gast #497295
Lesenswert?

Hallo Thomas,
ich arbeite mit Phil zusammen an dem Problem:

Phil meint mit VREFLO den ADCLO. Die ADCREFM und ADCREFP haben wir nicht 
weiter beschaltet. Ist das ein Problem?

Das Grundproblem ist, das bei Beschaltung der analogen Eingänge ein sehr 
großer Strom fließt. Die angelegte Spannung bricht z.B. von 2,5 V auf 
0,8 V ein.
Mit der Schaltung die Phil erwähnt hat, haben wir es geschafft den Strom 
zu minimieren. Die in den Registern (ADCINA0..7) abgelesenen Werte (für 
0,5; 1,0; 1,5; ...V) sind zwar linear aber nicht wirklich brauchbar, da 
es nur 3 mögliche Hex-Werte gibt.

Generell:
Es ist unklar, ob bereits ein Defekt am Board vorliegt. Aber: Legen wir 
die Board-eigene Masse oder die Boardspannung von 3 V auf den Eingang, 
können wir plausible Werte in den Registern ablesen (1365 hex / 4095 
hex).

Die Bezeichnung vom Board hab ich nicht zur Hand...... muss ich 
nachsehen.

Gruß,
Jens
Gast #497473
Lesenswert?

Also im Datenblatt (zumindest vom 2808er) steht, ADCREFM und ADCREFP 
sollten mit einer Kapazität 2,2uF und low ESR gegen Masse beschaltet 
werden.

Ansonsten kann natürlich auch noch ein Fehler in der Initialisierung des 
ADCs sein. Das Ergbnis von 1365hex für die Board-eigene Masse erscheint 
mir auch nicht ganz korrekt (wenn ich den Wert richtig zugeordnet habe). 
Es hilft auch, wenn ihr einfach mal den Mittelabgriff eines Potis (am 
besten linear) an einen AD-Eingang legt, und die anderen beiden 
Anschlüsse logischer Weise an die Board-eigene Masse und 
Betriebsspannung.

Ich nutze das eZdspF2808 und dort klappt es ohne Probleme...

Gruß Bastian
Gast #497710
Lesenswert?

Hallo Bastian,

danke für deine Antworten.
Die Idee mit dem Spannungsteiler hatten wir auch schon:
Potianschluss Links: AGND Testpunkt
Potianschluss Rechts: +5V (von JTAG-Schnittstellen-Pin).
Schleifer auf Messgerät. Dann Spannung (0..3V) einstellen. Dannach 
zusätzlich den Schleifer des Potis an ADCINB1. Dabei bricht die vorher 
eingestellte Spannung ein. Ist dieses normal?
Ist es bei deinem AD-Wandler so, dass bei 0V im entsprechenden 
Adc-Register 0000 steht und bei 3V 4095?
Hast du noch eine Idee/nähere Informationen zu "Fehler in der 
Initialisierung des ADC"?

Danke dir und Gruß

Phil
Gast #498837
Lesenswert?

Hallo,
also ich nutze folgende Initialisierung:

AdcRegs.ADCTRL3.all = 0x00E0;
AdcRegs.ADCTRL3.bit.SMODE_SEL = 1;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 1;
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x00;

// Start der Wandlung...
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;

// SEQ1 für nächste Wandlung zurücksetzen...
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;


Bricht die Spannung denn bei jedem analogen Eingang zusammen oder nur 
bei einem ganz bestimmten? Es klingt so, als wäre ein Kurzschluss 
zwischen dem Pin vom ADC und der Masse vorhanden. Habt ihr sonst noch 
irgendeine Beschaltung am Evaluationboard dran?

Zum Wertebereich: bei 0V sollte im Register auch eine 0 stehen und bei 
3V dann 4095.
Gast #499949
Lesenswert?

Eine sonstige Beschaltung haben wir nicht am Board angeschlossen. Nur 
die nicht benutzten Eingänge mit GND verbunden. Und VREFLO noch mit GND.
Wie wird denn die Initialisierung durchgeführt? Also wo werden die 
Befehle eingegen?
 Wir haben bis jetzt nur mit Simulink erstellt, kompiliert und dann in 
den DSP übertragen. Und mit dem CCStudio die ADC-Register abgefragt.

Danke und dir nen schönes Wochenende,

Gruß Phil
Gast #501138
Lesenswert?

Am besten ihr ladet euch mal folgendes Paket runter:

http://focus.ti.com/docs/toolsw/folders/print/sprc191.html

Das sind Beispielprojekte für alle Peripherals im DSP (unter anderem 
auch für den ADC). Sind alle mit dem CodeComposer erstellt. Einfach ein 
Projekt öffnen, kompilieren und in den DSP hochladen. Das waren auch 
meine ersten Schritte mit dem DSP.

Wenn dann immer noch nichts geht, messt mal den Widerstand vom ADC-Pin 
zu Masse und Versorgungsspannung. Vielleicht ist ja ein Kurzschluss 
vorhanden.

Viel Glück weiterhin...
Gast #502456
Lesenswert?

Hallo nochmal,

die Bespielprojekte sind leider nicht für den F2812 geeignet. Wir haben 
den ADC mal in einer Messreihe vermessen:
U       U          Register
unbelastet  belastet  hex
0,0      0,00  1240
0,2      0,20  2240
0,4      0,40  4240
0,6      0,60  5240
0,8      0,70  6240
1,0      0,73  67C0
1,2      0,74  6BC0
1,4      0,75  6DC0
1,6      0,75  6DC0
1,8      0,75  6DC0
2,0      0,75  6DC0
2,4      0,77  6DC0
2,8      0,77  6DC0
3,0      0,78  6E10

Im Bereich von 0..1V ergibt sich eine Linearität. Die Spannung würde 
mittels eines Potis (Basisspannung vom F2812) heruntergeteilt. Dabei 
wurde zunächst die Spannung eingestellt (U unbelastet) und dann auch den 
ADC-Eingang gelegt (U belastet).

Im Handbuch steht, dass der ADC im Bereich von 0..3V arbeitet. Dieses 
scheint nicht so zu sein (0..1V ?) Kann es sein, dass ab 1 V die 
Schutzbeschaltung (Diode) greift und daher ein hoher Strom fließt?

Worauf lassen die obigen Werte schließen? Ich sehe nur noch die 
Möglichkeit der ADC-Kallibrierung...

Gruß Phil
Gast #503334
Lesenswert?

>> die Bespielprojekte sind leider nicht für den F2812 geeignet.

Oh doch, ihr müßt nur in der F28xx_Device.h oder in der F28xx_Example.h 
den richtigen Typ wählen (Grundeinstellung ist 2808).


Seid ihr auch sicher, dass ihr die richtigen Register auslest? Auf 
jedenfall MUSS bei 0V eine 0 im Ergebnisregister stehen und bei 3V MUSS 
4095 drin stehen. Die Werte dazwischen sind erstmal egal. Aber es kann 
eigentlich nicht sein, wenn ihr die 3V an den Analog-Pin anlegt, dass 
dann nur 0,78V "ankommen". Habt ihr die Boardvariante mit Sockel? Wenn 
ja, dann nehmt mal den DSP runter und legt die boardeigenen 3V an den 
Pin. Bricht die Spannung dann immernoch zusammen, liegt irgendwo ein 
Kurzschluss (oder niederohmige Verbindung zu Masse) vor. Fordert einfach 
ein paar Samples des DSPs bei TI (dauert höchstends 1-2 Tage ;-) an und 
baut einen anderen DSP auf das Board. Vielleicht hat der DSP ja 
irgendwann mal was abbekommen.
Mehr fällt mir jetzt auch nicht mehr ein.

Grüße Bastian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren