Forum: Mikrocontroller und Digitale Elektronik USB-Host-CDC-Bibliothek für STM32F4


von Frank F. (Firma: RM Michaelides) (frankrm)


Lesenswert?

Hallo,
kennt jemand eine Bibliothek für STM32F4 die Host-CDC unterstützt? Die 
Bibliothek von Keil die ich normalerweise benutze kann zwar Host und 
auch Device-CDC aber eben kein Host-CDC (Habe damit bereits einen 
Massenspeicher und einen HID-Host zustande gebracht).
Ziel ist es ein UMTS-Modul mit dem µC zu verbinden, welches sowohl 
USB-CDC als auch UART unterstützt. Im Moment ist es über UART verbunden, 
was natürlich die Geschwindigkeit des Moduls in keinster Weise ausnutzt.
Zukünftig soll es also an den USB-Port des STM angeschlossen werden um 
die Geschwindigkeit zu erhöhen.
Ich bin seit Montag am googlen aber jedesmal wenn ich etwas gefunden 
habe wo jemand davon berichtet dass er es geschafft hat, linkt er auf 
irgend eine Bibliothek deren Seite nicht mehr verfügbar ist.
Außerdem habe ich mir mal die Enumerationsphase des Massenspeichers mit 
einem Saleae Logic16 angesehen, aber so ganz passen die Übertragenen 
Werte nicht zu meinem Verständniss des Protokolls.
Ideal wäre natürlich eine kostenlose Bibliothek die Open Scource ist, 
damit man auch mal in den Code reinschauen kann, aber eine 
proprietäre/kostenpflichtige Bibliothek wäre auch in Ordnung, solange 
der Preis nicht ZU hoch ist und sie auch funktioniert und konfigurierbar 
ist.

Gruß,
Frank

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Die USB CDC (Communication Device Class) ist äußerst umfangreich, und es 
wird sicherlich keinen Treiber geben, der sämtliche Betriebsarten 
unterstützt. Dies macht im Allgemeinen ja auch keinen Sinn, denn jemand, 
der einen USB-Ethernet-Schniepel verwenden will, benötigt keine 
UART/Modem-Emulation.

Das, was Du wahrscheinlich meinst, ist das CDC ACM (Abstract Control 
Model), welches das standardkonforme Gegenstück zu den ganzen 
USB/EIA232-Wandlern darstellt (, die aus historischen Gründen meist 
nicht CDC ACM-kompatibel sind). Solche Treiber gibt es z.B. von 
Thesycon:

http://www.thesycon.de/eng/embusbhost.shtml

Wir haben auch schon erfolgreich mit der anstandslos funktionierenden 
Bibliothek USBIO für Windows gearbeitet, aber noch nicht mit den 
Embedded Hosts. Auf der diesjährigen Embedded World hatte ich mit Hr. 
Hildebrandt (Geschäftsführer von Thesycon) über Host-Treiber für STM32 
philosophiert, und er hatte aus Performance-Gründen davon abgeraten, 
hierfür STM32 zu verwenden, da deren Host-Blöcke wohl recht "dumm" 
seien. Thesycon hat wohl entsprechende Treiber geschrieben, aber sie 
sind wohl nur auf Anfrage erhältlich.

von Frank F. (Firma: RM Michaelides) (frankrm)


Lesenswert?

Danke für die Info.
Leider ist USB auf Entwicklungsseite völliges Neuland für mich. Ich 
wusste nicht, dass es bei CDC so viele Unterschiede gibt, aber das 
CDC-ACM scheint zu sein was ich suche. Ich werde mal versuchen in die 
Richtung etwas zu finden.
Ein Kollege teilte mir heute mit, dass von Thesycon schon mal ein 
Angebot erstellt worden ist, jedoch lag der Preis in einem Bereich, der 
bei unseren Stückzahlen weit außerhalb des Bezahlbaren ist.

von Frank F. (Firma: RM Michaelides) (frankrm)


Lesenswert?

Also zu USB Host CDC-ACM kann ich auch nichts finden was mir weiter 
hilft.
Kennt jemand irgend ein Beispielprojekt für STM32(F4) das IRGENDEINE 
Host-Funktionalität hat UND im Quelltext vorliegt? Vllt kann man das ja 
irgendwie so umbiegen, dass es CDC kann.

von Frank F. (Firma: RM Michaelides) (frankrm)


Lesenswert?

Mittlerweile gibt es ja eine Library von ST für CDC-Host.
Diese ist teil des CubeF4 Downloades.
Ich verssuche grade sie umzusetzen, leider finde ich weder eine 
Dokumentation noch irgendwelche Beispiele.
Hat jemand schon einmal etwas in die Richtung gesehen?

von Uwe Bonnes (Gast)


Lesenswert?

Frank Freihube schrieb:
> Also zu USB Host CDC-ACM kann ich auch nichts finden was mir weiter
> hilft.
> Kennt jemand irgend ein Beispielprojekt für STM32(F4) das IRGENDEINE
> Host-Funktionalität hat UND im Quelltext vorliegt? Vllt kann man das ja
> irgendwie so umbiegen, dass es CDC kann.

Hast Du Dir libopencm3 und als Anwendung die Blackmagic Debug Probe 
angeschaut?

von Frank F. (Firma: RM Michaelides) (frankrm)


Lesenswert?

Uwe Bonnes schrieb:
> Hast Du Dir libopencm3 und als Anwendung die Blackmagic Debug Probe
> angeschaut?

Habs mir mal angeschaut. Da ist zwar in beidem USB-CDC-ACM mit dabei, 
aber nur als Device Class. Ich benötige es als Host Class(ich will also 
mit einem virtuellen COM-Port kommunizieren und nicht selber einer 
sein). Das ist ja um einiges komplexer weil ich(bzw der µC) ja das ganze 
Bushandling übernehmen muss, auch wenn dann nur ein Gerät dran hängt.
Das einzige was ich bis jetzt mit Host hin bekommen habe war ein 
HID-Host, aber das war eine closed source lib, die hilf mir also bei dem 
Problem auch nicht weiter.

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
Noch kein Account? Hier anmelden.