Ich mache ein einfaches 1-MHz-Oszilloskop mit einem eingebetteten System, das auf ARM und Android basiert. Ich habe einen ADC mit einer Geschwindigkeit von 12 MSa/s, der die Samples aufnimmt. Ich brauche es, um die Samples an einen PIC-Mikrocontroller zu senden, um sie über USB an mein Android-System zu senden.
Ich kann keine 12 MSa/s Daten über USB senden, also habe ich nachgeforscht und denke, ich muss einen RAM-Puffer verwenden. Ich habe im Internet recherchiert, aber ich kann nicht verstehen, wie sie funktionieren.
Soweit ich das verstehen kann: Nehmen wir an, ich habe 2 RAM-ICs . Ich fange an, RAM 1 mit Samples von meinem ADC zu füllen, und wenn es gefüllt ist, fange ich an, RAM 2 zu füllen . Mein Mikrocontroller beginnt mit dem Lesen von Daten aus RAM 1 . Die USB-Übertragungsgeschwindigkeit ist nicht schnell genug, um den gesamten RAM-Inhalt zu lesen, bevor RAM 2 gefüllt ist, sodass der ADC warten muss, bis RAM 1 leer ist, sodass ich Samples von meinem ADC verliere.
Gibt es eine Möglichkeit, dies zu verhindern? Mein Entwicklungsboard ist ein PandaBoard. Ich verwende Android 4 darauf und es funktioniert perfekt, aber ich habe dieses Problem bezüglich der Hardwarepufferung.
Sie können nicht kontinuierlich sampeln.
Dies ist jedoch normalerweise bei Oszilloskopen kein allzu großes Problem, da die meisten dies nicht tun (zumindest bei höheren Geschwindigkeiten). Selbst ein analoges Oszilloskop zeigt keine kontinuierlichen Informationen an, da Sie die Strahlrücklaufperiode haben.
Ein typisches digitales Speicheroszilloskop wartet auf einen Trigger, füllt seinen Puffer mit hoher Geschwindigkeit und sendet die Daten dann mit niedrigerer Geschwindigkeit zur Anzeige an den Mikrocontroller (oder Android in Ihrem Fall). Wie Photon erwähnt, geschieht dies schnell genug (z. B. über 15 Datenframes pro Sekunde), damit es für den Benutzer kontinuierlich aussieht.
Je größer der RAM-Puffer, desto mehr Samples (Zeit) können natürlich erfasst werden. Aus diesem Grund werden Sie DSOs sehen, die für große Erfassungspuffer werben. Bei hoher Geschwindigkeit kann dies einen großen Unterschied machen - bei 2 Gigasamples pro Sekunde und einem Erfassungspuffer von 10 KB erhalten Sie nur 5 us an Informationen. Einige mit größeren Puffern können nur einen Teil davon mit der höchsten Geschwindigkeit verwenden - mein DSO hat beispielsweise 10 MB Puffer mit bis zu 1 Gsps, kann aber nur 10 KB mit 2 Gsps verwenden.
In Ihrem Fall könnten Sie bei Geschwindigkeiten, zu denen USB in der Lage ist, auf kontinuierliche Erfassung umschalten (z. B. < 1 Msps). Sie könnten möglicherweise auch die Verwendung von Komprimierung in Betracht ziehen.
Entweder das, oder schauen Sie sich die Verwendung von High/Super-Speed-USB an.
Andreas
Chris Stratton
Rohr
Chris Stratton