USB-Kommunikation

USB-Kommunikation zwischen PC und Robotercontroller

Aufgabenstellung

 

Aufgabe dieser Arbeit war es, eine Möglichkeit zur Verwendung der USB Schnittstelle zum Datenaustausch zwischen PC und Roboter – Controller zu finden. Dafür sollten Treiber verwendet werden, die von Microsoft bereits geliefert werden. Das Ziel bestand darin, eine Programmierschnittstelle zur Verfügung zu stellen, mit der eine USB Kommunikation auf einfache Weise realisiert werden kann.  Weiterhin sollte ein Beispielprojekt zur Erläuterung der Handhabung der entwickelten Funktionen, erstellt werden.

 

Allgemeines

 

Zur Bearbeitung dieser Aufgabe wurde das Entwicklerboard MCB2140 von Keil (Bild 1) mit dem Mikrocontroller LPC2148 von NXP verwendet. Das MCB2140 enthält eine USB Schnittstelle, die zum Datenaustausch und als Spannungsversorgung verwendet wird.

Des Weiteren kam ein USB Protokoll Analysator von MQP (Bild 2) zum Einsatz. Mit ihm konnten die Datenpakete, die über den Universal Serial Bus gesendet wurden, ausgewertet werden.

Durchführung

 

Zunächst wurde geklärt welche Möglichkeiten von Microsoft Windows XP zur Verfügung stehen, um mit einem USB Gerät zu kommunizieren. Es stellte sich schnell heraus, dass die HID – Geräteklasse am besten zur Lösung der Aufgabenstellung geeignet ist. Für sie werden Treiber und Funktionen zur Verfügung gestellt, mit denen Daten zwischen PC und Mikrocontroller ausgetauscht werden können.

Bei den Tests zur Realisierung der USB Kommunikation stellte sich heraus, dass es Einschränkungen bei der Verwendung der HID Klasse, gibt. Beispielsweise müssen alle Berichte (der Datenaustausch funktioniert in der HID Klasse über sog. Berichte) einen vom Benutzer gewählten Umfang haben. Dieser Umfang wird bei der Programmierung des USB Gerätes festgelegt. Wenn Daten mit unterschiedlichem Umfang ausgetauscht werden sollen wäre dies nicht möglich ohne umständliche Umwege zu gehen. Daher war es notwendig die Funktionen zum Versenden von Daten so anzupassen, dass immer Berichte derselben Größe verschickt werden.

Nachdem die Tests abgeschlossen waren, wurden für den PC und den Mikrocontroller je drei Funktionen entwickelt, mit denen der Benutzer einfach Daten über USB versenden und empfangen kann. Die Funktionen (und deren Aufgabe) für den PC sind in Tab. 1 und für den Mikrocontroller in Tab. 2 zu sehen.

 

Funktion

Beschreibung

USB_connect()

Verbinden mit dem USB Gerät

USB_send()

Sendet Daten zum USB Gerät

USB_recv()

Empfängt Daten von USB Gerät

Tabelle 1 Funktionen für PC

 

Funktion

Beschreibung

USB_init()

Initialisiert die USB Schnittstelle des MCB2140

USB_send()

Sendet Daten an PC

USB_recv()

Empfängt Daten von PC

Tabelle 2 Funktionen für Mikrocontroller