Forum: PC-Programmierung Frage zum USB Device CDC Service des Atmel Frameworks


von Kevin M. (Gast)


Lesenswert?

Hallo an alle,
ich habe vor kurzem erfolgreich mit einem XMEGA und dem Atmel Software 
Framework die ersten Daten über USB geschickt. Dazu nutze ich den von 
ATMEL bereitgestellten USB CDC Device service. Dieser emuliert mir am PC 
eine serielle Schnittstelle, soweit ich das verstanden habe werden die 
Daten jedoch weiterhin über USB übertragen (das ganze ist ja auch über 
ein USB Kabel verbunden).
Folgendes ist mir jedoch unklar:
Wenn ich beispielsweise in der conf_usb.h-Datei für den USB-CDC-Service 
eine Baudrate von 921600 eingestellt habe und dieses Programm auf den 
XMEGA flashe und anschließend am Terminalprogramm am PC eine andere 
Baudrate einstelle, beispwielsweise 2400 funktioniert die Kommunikation 
immer noch! Eigentlich sollten die Zeichen doch nicht korrekt übertragen 
werden, wenn ich am ATMEL eine unterschiedliche Baudrate eingestellt 
habe, wie im Terminalprogramm, oder ist das hier anders da ich die 
serielle Schnittstelle nur emuliere und die Übertragung eigentlich über 
USB funktioniert?

Wenn mir jemand das ganze ein bisschen erklären könnte, wäre ich 
wirklich dankbar.

Gruß Kevin

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Kevin M. schrieb:
> oder ist das hier anders da ich die
> serielle Schnittstelle nur emuliere

So ist es. Eine Baudrate gibt es nicht, bzw. erst dann wieder, wenn Dein 
µC die CDC-Daten auf eine reale UART ausgibt. Dann wird die Baudrate 
wieder interessant, denn die UART Deines µC muss natürlich irgendwie 
initialisiert werden. Wenn aber die CDC-Daten irgendwo in Deinem µC 
intern verarbeitet werden, ist eine Baudrate völlig uninteressant, 
ebenso so Dinge wie Start-, Stop- und Paritätsbits.

von Kevin M. (Gast)


Lesenswert?

Ah ok, aber wenn die Baudrate, Paritybits etc. bei dieser Verbindung 
keine Rolle spielen finde ich es komisch, das Sie in der usb_conf.h 
zusätzlich einstellbar sind. Diese Einstellungen würden doch dann eher 
in einen UART service oder so ähnlich gehören, der dann zusätzlich 
hinzugefügt werden kann...

Habe ich dann eigentlich bei der Übertragung zwischen µC und PC die 
volle nutzbare USB Geschwindigkeit und werde nicht von irgendwelchen 
maximalen Baudraten von seriellen Schnittstellen begrenzt obwohl am PC 
eine serielle Schnittstelle emuliert wird?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Kevin M. schrieb:
> Habe ich dann eigentlich bei der Übertragung zwischen µC und PC die
> volle nutzbare USB Geschwindigkeit

Ja, wobei die von den verwendeten USB-Transfers abhängt, also ob 
Interrupt-, Bulk- oder was auch immer für Transfers genutzt werden.

Das Resultat wird also irgendwo wahrnehmbar unter den 12 MBit 
Bruttodatenrate liegen.

von Kevin M. (Gast)


Lesenswert?

> Das Resultat wird also irgendwo wahrnehmbar unter den 12 MBit
> Bruttodatenrate liegen.

Etwas unter 1Mbit reicht mir schon. Laut den Application Notes sollte 
das machbar sein...

Vielen Dank nochmal für deine Hilfe!

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.