Ich verwende ADC ( ADS7822 ) von TI und habe ein seltsames Verhalten damit. Das folgende Diagramm erläutert die Spannungseingänge und Anschlüsse.
Ich habe mit diesem Setup seltsame Werte gelesen.
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.
Das erste Sample ist immer Null (überraschend). Abtastwerte für 2V bekomme ich immer ab dem 2. Sample.
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?
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 0
gefolgt 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.
MarkU
MarkU
dDebuggen
dDebuggen
MarkU