Forum: Mikrocontroller und Digitale Elektronik Virtueller COM Port ARM


von Markus (Gast)


Lesenswert?

Hallo!

Ich bin zur Zeit dabei mich in ARM Controller einzuarbeiten. Bisher 
arbeite ich mit einem LPC2138. Für eine Anwendung bräuchte ich eine 
USB-Kommunikation mit mindestens 1 MBit. Um den Software Aufwand gering 
zu halten hätte ich gerne einen virtuellen COM Port.

Nach meiner Recherche gibt es hierzu für die AT91SAM7S* Reihe Software 
von Atmel und für den LPC2148 einen USB-Stack bei sourceforge. Hat 
jemand Erfahrung mit den Softwarepaketen? Welches ist besser geeignet? 
Welchen Controller würdet ihr empfehlen? Ich brauche außerdem vorallem 
eine schnelle SPI für einen 2,4 GHz Transceiver und ich würde gerne 
unter Linux programmieren. Kann man den Atmel Bootloader auch unter 
Linux verwenden? Bei dem seriellen Bootloader im LPC2000 ist das ja kein 
Problem. Wie gut eignet sich openocd + JTAG-Adapter zum 
programmieren/debuggen unter Linux?

Viele Grüße
Markus

von Robert Teufel (Gast)


Lesenswert?

Also wenn Du bereits Erfahrung mit einem LPC2138 hast, dann ist der 
Umstieg auf den LPC2148 natuerlich recht einfach, das ist naemlich ein 
2138 mit USB.
Hier gibts ne Menge Info zum Programm LPCUSB
http://wiki.sikken.nl/index.php?title=LPCUSB

Hoffe das hilft weiter, Robert

von Markus (Gast)


Lesenswert?

Ich tendiere im Moment mehr zu einem AT91SAM7. Hat jemand den 
USB-Stack/Demosoftware von Atmel schon mal getestet? Ist die ebenso 
ausgereift wie der lpcusb usb-stack?

VG
Markus

von Luky S. (luky)


Lesenswert?

Ich hab damit gearbeitet und hatte keine Probleme damit. Der Code ist 
nur durch die ganzen Debugbefehlte "etwas" aufgebläht. Die Debugausgaben 
über UART kann man aber per #define abschalten

von Markus (Gast)


Lesenswert?

OK, unter Windows funktioniert der AT91SAM7S64 schon mal. Er meldet sich 
brav als AT91USBSerial. Weiß jemand, wie ich den auch unter Linux 
eingebunden kriege?

Viele Grüße
Markus

von Markus (Gast)


Lesenswert?

Ok, hab es hinbekommen. War ein kleines Problem mit dem cdc_acm 
Kernelmodul. Wie kann ich eigentlich die Baudrate einstellen? Welche 
Baudrate kann ich maximal einstellen?

Viele Grüße
Markus

von Ulrich P. (uprinz)


Lesenswert?

Hi Markus!

Die Baudrateneinstellung ist nur dann interessant, wenn es wirlich um 
einen USB-Seriell-Konverter geht. Die USB-Kommunikation läuft immer mit 
USB-Geschwindgkeit. Da Du auf USB-Seite zwar COM-Port spielst, aber dann 
auch gleich selbst mit den Daten arbeitest, ist diese Einstellung müßig. 
Du kannst ja mal im ATMEL Code ( ich habe bisher nur den für die 
USB-AVRs (32U4/90USB1287) genutzt) schauen, wo die CDC-Set-Line-Coding 
und CDC-Set-Control-Line-State und so weiter in Deinem Code landen. Sie 
tauschen lediglich den Line State ( RTS/CTS, DSR/DTR, RI) aus und in den 
anderen Kommandos dieser Klasse wird dann auch der UART Speed gesezt.

Da meine Sachen auch immer gleich selbst COM-Port sind, fliegt dieser 
Teil meist gleich raus, die USB-Requests werden dann mit einem 
Dummy-Request beantwortet. Lediglich die RTS/CTS/DTR/DSR Sachen sind 
praktisch, wenn man eine (eigene) PC-Software hat. Man kann dann nämlich 
das Handshake benutzen, um der Software zu sagen, wann man Daten 
verarbeiten kann, oder ob man noch mit Booten beschäftigt ist. Wenn es 
etwas gibt, dass Windows nicht leiden kann, dann das Senden von Daten 
auf einen 'halb-offenen' COM-Port. Das macht man ein paar mal und dann 
sieht man eine Bluescreen.

So, viel Spaß, der ATMEL Code zusammen mit der CDC-Spec von der USB.org 
Seite und man lernt erheblich mehr in kurzer Zeit, als auf mancher 
USB-Schulung.

Gruß, Ulrich

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.