Forum: Mikrocontroller und Digitale Elektronik Freescale s08mm128 und USB


von Michael W. (michael_w71)


Angehängte Dateien:

Lesenswert?

Servus,

es geht um ein Projekt, dass ich für mein Studium noch fertig machen 
muss.
Bei der Hardware handelt es sich um den XL_Star von Farnell. Es geht um 
Daten eines Beschleunigungssensors (via IIC), die auf einen Rechner 
übertragen werden sollen (über USB). Dazu gibt es auf dem Board einen 
USB-Anschluss, der mit den USB-Pins des Controllers verbunden ist. 
Soweit, bekomme ich die Daten des Sensors schon mal in den Controller 
und auch schön auf die LEDs angezeigt.
Aber der USB macht mir irgendwie sehr zu schaffen (nie vorher als 
"Programmierer" damit zu tun gehabt), ich versuche bereits seit knapp 
einer Woche dahinter zu kommen, wie das funktioniert, bis jetzt ohne 
Erfolg.
Das habe ich inzwischen verstanden:
USB ist in Full-Speed auf dem Controller als Device verfügbar. Die 
Adresse wird vom Host in der Konfigurationsphase gesetzt (anfangs 0). Es 
gibt J- und K-States, die verschiedene Potenziale der beiden 
Datenleitungen beschreiben, das übernimmt der Controller bereits. Es 
gibt mehrere Endpunkte (dort 7), davon ist nur der 0te bidirektional. 
Der Controller besitzt Deskriptoren, die das Device, Endpunkte, Strings 
und Puffer beschreiben. Freescale setzt voraus, dass bei Verwendung von 
USB mit dem µC die Taktrate von 48 MHz, Bus-Teiler 2 und Takt-Quelle der 
PLL ist.

Also die Takt-Frequenzen so zu drehen, wie Freescale es will ist kein 
Problem. Aber weiter komme ich im Thema USB schon gar nicht. Es gibt im 
USB-Teil eine "Buffer-Descriptor-Table" die natürlich zum beschreiben 
von der Puffer der 7 Endpunkte ist. Wie das aber genau funktioniert 
verstehe ich nicht. Wo kommen also die Daten vom Host rein und wo muss 
ich die Daten speichern, die ich senden will?

Das Projekt soll in C gelöst werden, aber ich will das eher verstehen 
und probieren bevor ich von irgendwo oder irgendwem etwas kopiere. Es 
gibt in der Farnell-Community eine "Maus" die über die Lage des Sensors 
gesteuert wird, die bringt mich aber auch nicht weiter, da dort nur 
Deskriptoren definiert werden und ich bis jetzt kein einziges Zeichen 
gefunden habe, dass irgendwas mit der Kommunikation selbst zu tun hat.

Grüße
Michi

von Eckhard (Gast)


Lesenswert?

Hallo,


kannst Dir ja mal bei Freescale den Madical USB Stack ansehen. da ist 
alles drin.
Hier findest Du ganze auch als Prozessor Expert Komponente

http://mcuoneclipse.wordpress.com/2012/05/04/usb-cdc-goes-medical/

Eckhard

von Michael W. (michael_w71)


Lesenswert?

Vielen Dank. Das sieht hilfreich aus (muss ich mir aber später noch zu 
Gemüte führen).
Ich sag dann Bescheid (für alle die vielleicht in Zukunft vor dem 
gleichen Problem stehen).

Grüße
Michi

von Michael W. (michael_w71)


Lesenswert?

Michael W. schrieb:
> Vielen Dank. Das sieht hilfreich aus (muss ich mir aber später noch zu
> Gemüte führen).
Hab ich jetzt mal im Detail angesehen: Es bringt mich nicht ernsthaft 
weiter. Wenn ich das richtig verstanden habe, ist es eine Art 
Code-Generator für Eclipse (CodeWarrior 10). Habe aber auch vergessen zu 
schreiben, dass ich leider nur den CodeWarrior 6.3 (mitgeliefert nutzen 
kann). Wenigstens weiß ich jetzt Bescheid, dass ich ein CDC-Device 
brauche, aber weiter komme ich grade auch nicht. Irgendwie scheinen 
viele Links in dem Blog nicht auf das gedachte Ziel zu führen.

Mal sehen vielleicht kann ich selbst irgendetwas basteln oder hat jemand 
noch andere Tipps? Wieso kann das nicht so "einfach" wie beim IIC 
sein....

LG
Michi

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.