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?
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
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
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
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
... bei 0 V war der Wert bei uns bei 1240 hex - habe ich vorher falsch
geschrieben.
... warum fließt ein so großer Strom in den ADC-Eingang ?
Gruß,
Jens
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.
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
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...
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
>> 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