Hallo, ich habe auf Basis des STM32F4Discovery einen Prototypen entwickelt. Fuer die weitere Entwicklungen und auch zur Diagnose im Endprodukt benoetige ich die Moeglichkeit erfasste Rohdaten an einen angeschlossenen PC weiterzugeben. Es fallen ca. 160kb Daten pro Sekunde an. Ich habe hierfuer zwei Ansaetze im Kopf. 1.) USART Die notwendige Bandbreite sollte theoretisch moeglich sein, jedoch finde ich auf PC Seite keine Gegenstelle die Baudraten in der entsprechenden Groesenordnung unterstuetzt. Ich habe verschiedene USB-to-Serial-Adapter und meine interne Schnittstelle getestet. 2.) USB Hier vermutlich CDC da HID die entsprechende Bandbreite nicht erlaubt. Kann ich das ganze mit einem CDC Device realisieren oder gibt es bessere Alternativen (andere Device-Class oder auch andere Schnittstellen)? Ich hoffe ihr koennte mir weiter helfen. Vielen Dank vorab. Gruese, mb
USB, Isochronous Transfer einrichten? Der ist doch für große Datenmengen gedacht?
Benoetige ich dafuer dann einen speziellen Treiber auf dem PC oder kann ich da z.B. mit libusb oder aehnlichem kommunizieren?
Keine Ahnung, müsstest du mal in den ST Unterlagen suchen. Bin aber der Überzeugung, in der USB Library auch was zu dieser Transferart gesehen zu haben. Genutzt hab ichs selbst noch nicht.
OK, Danke. Dann muss ich wohl noch ein bisschen recherchieren. Wenn sonst keiner etwas konkretes weis muss ich wohl oder uebel einfach mal eine Testimplementierung machen. Beim nachlesen zum Thema USB isochronous ist mir noch etwas aufgefallen: Ich haette wenn moeglich gerne eine Garantie fuer die Zustellung sonst muss ich mir da eine Zwischenschicht bauen die das ganze unnoetig verkomplizieren wuerde. Luecken in den Daten machen die nachtraegliche Auswertung in meinem Fall schwierig bis unmoeglich.
Dann musst du dich darum selbst kümmern. Der Isochrone Modus kann vereinfacht mit UDP und der Bulk Modus mit TCP verglichen werden. Mit Bulk bekommt man aber auch hohe Datenraten hin. Problematisch wird Bulk nur dann, wenn am Bus noch andere Teilnehmer mit hohen Datenraten dran hängen. Im Isochronous Modus gibts eine Bandbreitenreservieren.
Andere Teilnehmer koennte ich im einfach durch Stecker ziehen ausschalten. Es handelt sich um eine reine Entwicklungs-/Serviceschnittstelle. Weis jemand ob ich fuer Bulk/Iso Modus einen eigenen Treiber brauche oder ob ich die Modi mit einer Library nutzen kann?
Moin, ja du brauchst n Treiber, aber schau dir mal LibUSB an damit geht das. Wenn etwas googlest müsstets auch n Beispiel mit dem F4 und LibUsb finden, hab den link gerade nicht parat. MfG Tec
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.