Ich spiele mit STM32F4 Discovery Board und libopencm3 herum . Ich möchte von ADC-Kanälen erfasste Daten über USB senden und einige Diagramme auf dem Computer anzeigen. Nachdem ich einige Recherchen zu USB-Klassencodes durchgeführt habe, bin ich etwas verwirrt: Welchen soll ich für meine Anwendung wählen? Zuerst dachte ich, dass USB-CDC der richtige Weg ist, da es einfacher zu implementieren ist, aber ich denke nicht, dass es die optimale Lösung ist.
Die USB-CDC-Klasse ist einfach zu implementieren und zu verwenden, da sie auf der PC-Seite einen virtuellen COM-Port erstellt. Sie können die Schnittstelle einfach mit einem Programm wie RealTerm testen , das entweder ASCII- oder Binärdaten anzeigen kann. Sie müssen ein Programm schreiben, um die Daten zu erfassen, sie in ASCII zu konvertieren und in einer Datei zu speichern, um sie in ein Tabellenkalkulationsprogramm wie Excel einzugeben, um die Diagramme zu erstellen.
Das einzige Problem ist, dass die zugewiesene COM-Port-Nummer normalerweise nicht im Voraus vorhergesagt werden kann, sodass Sie über eine Art Konfigurationsdatei verfügen müssen, die angibt, welche verwendet werden soll (sobald das System einen COM-Port für das USB-Gerät ausgewählt hat, sollte dies der Fall sein danach dasselbe weiter verwenden).
Sie erwähnen nicht, welche Datenraten Sie unterstützen müssen oder wie lange ein Sample dauert. Bei 115 K Baud können Sie ein ADC-Sample (12 Bit, erweitert auf 16) in etwas weniger als 175 µS oder etwa 5000 kHz senden. Ich vermute, Sie brauchen etwas schneller als das. Da Ihnen 192 KB RAM zur Verfügung stehen, können Sie bis zu 90.000 oder so Samples puffern. Bei 44,1 kHz sind das etwas mehr als zwei Sekunden.
Wenn Sie zuerst sampeln und dann senden, finden Sie die HID-Klasse möglicherweise noch einfacher zu verwenden. Es kann sich als virtuelle Tastatur präsentieren, sodass auf der PC-Seite keine Software geschrieben werden muss. Sie können ein Programm wie Excel öffnen, und solange die Firmware im STM32F4 die Daten als ASCII-Zeichen sendet, gefolgt von einem Wagen/Zeilenvorschub für jede Probe, wird jede Zeile als zusätzliche Zeile in die Tabelle eingefügt, fertig zu grafisch darstellen.
Passant
Ashton H.
Ignacio Vazquez-Abrams
Passant
A single isochronous transfer can carry 1024 bytes, and can carry at most 256 samples (at 24/32 bits). This means that a single isochronous endpoint can transfer 42 channels at 48 kHz, or 10 channels at 192 kHz (assuming that High Speed USB is used - Full Speed USB cannot carry more than a single stereo IN and OUT pair at 48 kHz).
siehe edn.com/design/consumer/4376143/Fundamentals-of-USB-Audio