ADC gibt zufällige Werte an den konstanten Eingang aus

Ich verwende ADC ( ADS7822 ) von TI und habe ein seltsames Verhalten damit. Das folgende Diagramm erläutert die Spannungseingänge und Anschlüsse.

Geben Sie hier die Bildbeschreibung ein

Ich habe mit diesem Setup seltsame Werte gelesen.

  1. Ich habe das Signal entfernt und eine feste Gleichspannung von 2 V an PIN 2 (+ In) angelegt. Ich nehme an, ich werde einen Wert erhalten, für den das MSB bei jedem Sample fast nahe beieinander liegt. Ich vergleiche 400 Proben gleichzeitig. Aber ich erhalte dynamische Ausgaben vom ADC, die alle möglichen Werte haben.

  2. Das erste Sample ist immer Null (überraschend). Abtastwerte für 2V bekomme ich immer ab dem 2. Sample.

  3. Auch wenn ich PIN 2 (floating) nicht bereitstelle und signalisiere, gibt es immer noch einige Daten aus. Ich stelle Takt und ss niedrig zur Verfügung, also gehe ich davon aus, dass es Rauschen abtastet, wenn kein Signal vorhanden ist. Aber die Ausgabe sollte nahe beieinander liegen. Ich erhalte alle Werte von FFF bis 000. Ich sehe solche Rauschquellen in meinem System nicht.

Kann jemand einen möglichen Grund für dieses Verhalten vorschlagen?

Wie umgehen Sie VREF und VCC? Welche Spannungsreferenz (Teilenummer) verwenden Sie, um den VREF-Eingang anzusteuern? Jegliches Rauschen auf VREF wirkt sich direkt auf die Codemessung aus.
FYI: Der ADS7822-Datenblatt-Layoutabschnitt empfiehlt 0,1 uF Keramik sowohl auf VCC als auch auf VREF und zusätzlich 1 uF-10 uF Bypass auf VCC.
@MarkU Ich verwende REF3230, es soll 3,0 V ausgeben und ich bekomme 2,98 - 2,99 V mit Multimeter. Ich habe einen 10u in der Nähe des REF und einen 0,1u in der Nähe des ADC mit dem Ausgang von REF3230 (parallel) verwendet.
Zum Vcc von ADC habe ich eine 0,1u Keramik verwendet
Können Sie ein Oszilloskop verwenden, um Oszilloskopaufnahmen von DCLOCK-, DOUT- und CS-Wellenformen zu erfassen? Und wenn Ihr Oszilloskop über eine Anzeigeeinstellung "Persist" verfügt, ist dies ein guter Zeitpunkt, um sie zu verwenden - viele überlappende CS-Zyklen zu erfassen und zu sehen, ob das MSB wirklich umschaltet. Es kann einige LSB-Variationen geben, aber die MSBs sollten stabil sein. Wenn +IN an VREF oder VCC angeschlossen ist, sollte der digitale Ausgang immer Full-Scale FFF sein.

Antworten (1)

Es ist schwer, Ihnen eine Antwort zu geben, weil es keinen offensichtlichen Fehler gibt. Da meine Ideen die Grenze der Kommentare überschreiten, schreibe ich es als Antwort.

  • Haben Sie die Schaltkreise rund um den ADC gut entworfen? Dh Entkopplungskappen zwischen Vcc und GND und Vref und GND können zwischen In+ und GND liegen

  • Es scheint, Sie haben einen Spielraum. Sie sollten DOUT prüfen, während Sie auf die fallende Flanke von !CS triggern. Sie sollten dann die 24-Bit-Antwort sehen können, die aus einem 0gefolgt von dem Wert MSB (11) zuerst besteht. Nach Bit 0 beginnt es wieder mit der Ausgabe der Bits 1...11. Der Bitstrom ist also symmetrisch, und die Bits in der Mitte sollten aufgrund von Rauschen umkippen, während die äußeren dies nicht tun sollten.

  • Laut Datenblatt dauert ein minimaler Zyklus 16 Taktzyklen, während die Ausgabe eine Länge von 24 Bit hat. Obwohl das Datenblatt es nicht erwähnt, scheint es, dass Sie die Ausgabe stoppen und eine neue Konvertierung einleiten können, nachdem Bit 0 auf die Ausgabe gelegt wurde. Tun Sie das und können Sie es zum Debuggen aussetzen?

  • Ist !CS lang genug hoch? Ich habe kein Minimum gefunden, aber vielleicht gibt es eins.

  • Die Frequenz von 3,125 MHz ist ungefähr das Maximum, das der ADC verarbeiten kann. Können Sie es reduzieren (bis auf 10 kHz), um zu überprüfen, ob es Probleme verursacht? Überprüfen Sie auch, ob die Wellenform am Eingang Ihres Mikrocontrollers / FPGA in einem guten Zustand ist.

Schließlich sollten Sie zunächst prüfen, ob der ADC vernünftige Ergebnisse liefert, was mit einem Oszilloskop leicht zu testen ist. Wenn alles in Ordnung ist, sollten Sie sich Gedanken über den Code des Mikrocontrollers / FPGA machen. Da der ADC ziemlich einfach ist, bezweifle ich, dass er beim ersten Mal eine Ausgabe von 0 liefert. Es ist wahrscheinlicher, dass Sie einen Firmware-Fehler haben.

Ich habe 0,1 u zwischen Vcc GND und Vref GND, keine für + In. Die VHDL-Testbench funktioniert wie das Datenblatt einwandfrei, daher glaube ich, dass es keine Probleme mit der SPI-Steuerung gibt
Nun, glauben und wissen sind unterschiedliche Dinge. Ich musste auch lernen, niemals das aufzudrängen, woran ich gerade glaube.