Forum: Mikrocontroller und Digitale Elektronik USB Beispiele fuer ARM7 LPC2148


von Robert Teufel (Gast)


Lesenswert?

Hallo,

falls jemand sehr professionelle USB Beispiele fuer den LPC2148
basierend auf den Keil Compiler runterladen moechte, dann sind die hier
zu finden: http://www.keil.com/mcb2140
Warum ich das hier poste?  Weil es heute ein Update gab und weil sich
der Text im Copyright geaendert hat. Die Beispiele duerfen jetzt auch
kommerziell benuetzt werden solange ein LPC der Zielprozessor ist.

Gruss, Robert

von Martin (Gast)


Lesenswert?

Hallo Robert!

Ich habe vor einigen Monaten ein ARM-Seminar besucht. Vorgestellt
wurden die LPC-Familien. Damals gab es den LPC2148 noch nicht, aber er
wurden vom Vortragenden erwähnt.
Er sagte auch, dass es sich zwar um ein USB2.0 Gerät handle, dieses
aber leider nur mit Full-Speed arbeiten würde. Dies hätte den Grund,
dass der Controller sowieso die ca.400MBaud nicht vollständig ausnützen
kann. Damals war mir das klar, aber ich dachte über dieses Thema nach
und kam zu dem Schluss, dass dies ja völlig egal wäre.
Es ist doch egal, wenn der µC nicht die volle Bandbreite ausnützen
kann. Haupsache er überträgt schneller als 1Mbyte pro Sekunde.

Ich selbst finde den LPC2148 echt toll, da auch sehr unangenehme Fehler
der Vorgänger behoben wurden. Aber ich wollte Fragen ob auch ein
ARM-Prozessor mit USB2.0-Hi-Speed in Planung ist.
Wenn es so einen gäbe wie den LPC2148 mit USB2.0-Hi-Speed und über
eingebauten Bootloader über USB programmierbar, dies wäre echt
großartig.
Es ist zwar jetzt schon der LPC2138 und der LPC2148 für mich der
ultimative Controller, aber so einen Hi-Speed Controller auch flashable
über USB, wäre für mich am ultimativsten.

Danke für deine Antwort

Schönnen Gruß, Martin

von mthomas (Gast)


Lesenswert?

Jetzt, da Keil/ARM und Philips-"Apps" grade dabei sind: Vielleicht
noch ein weiteres Beispiel fuer usbser.sys/usbserial fuer einen
"virtueller COM-Port". Ist wahrscheinlich nicht viel Arbeit, jetzt da
man sich eingearbeitet hat. Zumindest mich wuerde eine vom Hersteller
abgesegnete "vorgekaute" Loesung interessieren.

Soweit gesehen, sind die aktuellen Beispiele fuer den Keil-Compiler.
Der LPC-yahoo-Group kann man entnehmen, dass fuer gcc-Compiler
Anpassung notwendig sind (packen von structs). Waere sicher nicht
schlecht, wenn Philips/Keil diese im Beispiel integrieren (im Prinzip
#if def keilc else if def gcc ...). Keil unterstuetzt deren Version des
arm-elf-gcc-Compilers ja ohnehin bereits in deren IDE, warum also nicht
auch die USB-Beispiele dahingehend erweitern.

Martin Thomas

von Robert Teufel (Gast)


Lesenswert?

@ Martin Thomas
Es wird im naechsten Quartal mehr info zu einem ARM7 mit Flash und USB
2.0 HS geben. Kann noch nicht so viel sagen, da noch einiges in der
Schwebe ist. Wird aber ein groesserer Chip sein als der LPC214x
Robert

von mthomas (Gast)


Lesenswert?

@Robert Teufel

Hmm, ok, ich meinte eigentlich schon neue/erweiterte Beispiele fuer die
jetzt verfuegbare LPC214x-Serie.

Dass man fuer usbserial-Unterstuetzung einen "groesseren" Chip
benoetigt, wenn viele anspruchsvollere Geraeteklassen bereits
implementiert werden koennen, erscheint mir ungewoehnlich.

Oft benoetigt man (zumindest ich) gar keine high-speed USB sondern
einfach eine Schnittstelle zum PC (v.a. Notebooks ohne RS232), um ein
Geraet zu konfigurieren oder Daten auszulesen. Quasi ein
UART/RS232-Ersatz ohne zusaetzliche Hardware wie externe
USB-seriell-Adapter oder FTDI bzw. SiLabs-ICs. Das Ganze ohne dass man
die USB-Interna detailliert kennen oder eigene Geraete-Treiber auf PC-
und Microcontroller-Seite erstellen muss. Beide Aufgaben sind mit einem
"virtuellen COM-Port"-Treiber (bei Win2k/XP und wohl auch Linux
bereits im Betriebsystem bzw. Kernel) und vorgefertigtem USB-Code fuer
den Mikrocontroller realtiv einfach zu realisieren.

Atmel liefert Beispiele fuer usbserial mit SAM7 in deren USB-Examples
fuer diverse Compiler - auch fuer den "kleinen" AT91SAM7S64.
(Zumindest eines dieser Beispiel war relativ simpel an gcc anpassbar
und fuer eigene Anwendungen nutzbar). Ich kann beim -oberflaechlichen-
Vergleich der USB-"Makrozellen"-Beschreibung von LPC214x und
AT91SAM7Sx nicht nachvollziehen, dass ein LPC214x fuer diese Aufgabe zu
"klein" sein soll.

Wie auch immer, war nur ein Vorschlag.
Martin Thomas

von Robert Teufel (Gast)


Angehängte Dateien:

Lesenswert?

Martin,

war ein Missverstaendnis. Hab unseren Ansatz zum Virtual COM part
drangehaengt, hat ein Kollege hier basierend auf Philips internen
Treibern erstellt.
Wie immer, keine Garantien aber getestet haben wirs

Gruss, Robert

von mthomas (Gast)


Lesenswert?

Robert,

Danke fuer die prompte Reaktion. Code schaut sehr brauchbar aus.
Anpassung an gcc sollte auch kein Hexenwerk sein. Werde Code und
Anpassung ausprobieren, sobald ein LPC214x-Board auf "der Werkbank"
liegt. (Im Moment etwas "eingespannt" mit zwei anderen Projekten -
eines davon (noch) auf LPC2138-Basis).

Gruss, Martin

von Martin (Gast)


Lesenswert?

Ich habe gesehen, dass der LPC2148 eine weitere PLL-Einheit besitzt.
Wozu benötigt man diese?

Gruß, Martin

von Robert Teufel (Gast)


Lesenswert?

Weitere PLL;
Damit ein Ausgang 48 MHz und der Ausgang fuer die CPU 60 MHz
gleichzeitig liefern kann. Daher empfiehlt es sich einen externen
Quartz mit 12 MHz zu verwenden.

Robert

von Martin (Gast)


Lesenswert?

Achso, der Ausgang mit 48MHZ ist wahrscheinlich für den USB.

Gruß, Martin

von Mario (Gast)


Lesenswert?

Hallo,

ich benötige dringend hilfe mit der Ansteuerung einer Schrittmotorkarte 
mit LPC214x.SYS Treiber von Phillips.

Die Karte hat einen USB Eingang und hier liegt auch schon mein Problem. 
Im ganzen Netz habe ich keinen gefunden der mir hier weiterhelfen kann 
und durch Zufall bin ich heute hier gelandet.

An die Karte werden einfache Plot Befehle gesendet z.B. PD,PU etc das 
ganze habe ich mit einem USB Monitor verfolgt und ausgelesen von der 
org. Ansteuerungssoftware.

Ich möchte mir eine eigene Ansteuerung unter Visual Basic 6.0 schreiben. 
Leider bekomme ich es absolut nicht hin den Befehl PD (ich weiss noch 
nicht mal in welchem Format der gesendet wird, aber im USB 
Monitorprogramm stand ja der Textsting PD; PU usw.).

Ich suche ein Beispiel welches mir den Befehl PD über USB Ausgang an den 
Phillips Treiber LPC214x.SYS sendet. Und das ganze leider in 
Visualbasic. C+ kann ich leider nicht.

Vielleicht kann mir hier jemand weiterhelfen - ich wäre wirklich sehr 
sehr dankbar über jede Hilfe.

Gruß Mario

Merlin-1979@gmx.de

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Das ist eine fertig programmierte und funktionsfähige 
Schnittstellenkarte von einem Hersteller?
Dieser Hersteller liefert eine SYS-Datei, die auch richtig installiert 
ist?
(Siehe Systemsteuerung >> Gerätemanager >> ...)

Normalerweise kann man mit einem Gerätetreiber mit den WinAPI Befehlen 
CreateFile(), DeviceIoCtrl() und CloseHandle() kommuniziernen.
Im CreateFile muss man den Gerätename übergeben, der von der SYS Datei 
dem Betriebssystem zur Verfügung gestellt wird.
Im DeviceIoCtrl muss man Datenbuffer, gefüllt mit irgend welchen Bytes 
übergeben, die von der SYS Datei ausgewertet werden und in USB Befehle 
gewandelt werden.
Das ohne Doku vom Hersteller der SYS Datei ist unmöglich hin zu 
bekommen. Selbst wenn Du den Quellcode der SYS Datei hättest, die 
Befehle da drin sind ganz andere als wie in einer z.B. DLL, denn eine 
Sys-Datei muss/kann nur Kernelbefehle verwenden.
(Logischerweise führen Fehler in der SYS Datei sofort zu einem 
Blue-Screen!)

Einfacher geht es, wenn der Hersteller auch eine DLL mit liefert, die 
dann schon die vorgebackenen Befehle bereit stellt, dann musst Du nur 
noch die DLL in VB einbinden.
Doku braucht es dennoch.

USB ist in jedem Fall eine Wissenschaft für sich. Wenn Du mal USB 
programmieren möchtest (Mikrocontroller), dann ist das ein muss:
Das Dokument "USB_20.pdf" von der USB Organisation, besonders Kapitel 9.

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.