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
... hab es gefunden: Das Board heißt eZdspF2812. Informationen hierzu findet man unter: http://www.spectrumdigital.com/product_info.php?&products_id=138 http://c2000.spectrumdigital.com/ezf2812/ 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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.