Forum: Mikrocontroller und Digitale Elektronik Einfachste Möglichkeit für Linux+USB+eigene Elektronik


von nwx (Gast)


Lesenswert?

Hallo,
Wie kommt man zum schnellsten Erfolg, wenn man eigene Schaltungen, über 
einen Linuxrechner mit USB ansteuern möchte.

Konkret denke ich da an einen "USB-Chip" bei welchem es gute, und vor 
allem
schnell erlernbare Schnitstellenbibliotheken (wenn möglich Userspace) 
für Linux gibt.

Bis jetzt habe ich nur was von chips von ftdi gehört, aber damit noch 
nicht gearbeitet.

Gibt es noch andere Firmen die sowas anbieten, oder wie kann man sonst 
schnell mit USB und Linux Ergebnisse erziehlen?




PS: hab schon öfter probiert in diese Thematik einzusteigen, aber 
entweder keine gute Dokumentation gefunden (meist win only), oder hab es 
aus Zeitgründen wieder aufgeben müssen. Mein Problem ist jetzt, das ich 
mich nicht erst 2 Wochen mit den USB Grundlagen auseinandersetzen will, 
sondern möchte nur meine Elektronik ansteuern können.

von Hc Z. (mizch)


Lesenswert?

Eine virtuelle serielle Schnittstelle über einen der FTDI-Chips gehört 
zu den einfachsten Möglichkeiten.  Auf uC-Seite hast Du eine echte 
serielle Schnittstelle zu bedienen anstelle der Komplexität des 
USB-Protokolls, für das Du mehr als nur 2 Wochen zum Einstieg benötigst. 
Wenn Dir die seriellen Daten ausreichen, würde ich immer diese 
Möglichkeit vorziehen.

von nwx (Gast)


Lesenswert?

Auf RS232 möchte ich nicht mehr unbedingt setzen, da es nicht sonderlich 
schnell ist.
Am liebsten wäre mir sowas, wie ein chip, der USB kann, und dann mehrere 
Pins hat, die man Ansteuern kann (Paralleler ausgang). Und der auch 
Daten zum PC senden kann.

Wie sieht es mit USB-MCUs aus, wie sie z.B. Microchip hat?
Da muss man wahrscheinlich das USB Protokoll beherschen, oder?

von Thomas P. (tpircher) Benutzerseite


Lesenswert?

Chips von FTDI sind nicht langsam (angeblich bis zu 480Mb/s), und du 
sprichst die Schnittstelle auf PC-Seite als virtuellen COM-Port an, auf 
Mickrocontroller-Seite als UART. IIRC haben die Chips auch ein paar 
parallele Ausgaenge die du ueber eine proprietaere Lib von FTDI 
ansprechen kannst.

Mit Dean Camera's LUFA Bibliothek 
(http://www.fourwalledcubicle.com/LUFA.php) und einem USB-AVR kommst du 
auch recht schnell (und mit wenig USB-Kenntnissen) zu einem brauchbaren 
Ergebnis, aber 2 Wochen Einarbeitung wuerde ich schon einplanen.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

nwx schrieb:
> Auf RS232 möchte ich nicht mehr unbedingt setzen, da es nicht sonderlich
> schnell ist.
> Am liebsten wäre mir sowas, wie ein chip, der USB kann, und dann mehrere
> Pins hat, die man Ansteuern kann (Paralleler ausgang). Und der auch
> Daten zum PC senden kann.

Was heisst "langsam", die Chips von FTDI koennen mitunter USB Full Speed 
nutzen, z.B. der FT245 ueber das FIFO-Interface. Wenn Dir das immer noch 
zu langsam ist hast Du sowieso ein Problem. Aber ich wage das etwas zu 
bezweifeln. Wenn Du wirklich so grosse Datenmengen uebertragen willst: 
Worin besteht denn die Anwendung?

Ich fuer meinen Teil komme (in Zwischenzeit!) gut mit den Teilen klar, 
wenn man die Macken erst einmal kennt.

Bei Deinem Post "schnell Ergebnisse erzielen, moeglichst ohne Aufwand" 
und dann am besten noch USB High Speed. Vielleicht solltest Du erst mal 
auf dem Boden der Tatsachen landen?

P.S.
Bei der ganzen Werbung fuer FTDI sollten die uns langsam mal bezahlen ;)

von nwx (Gast)


Lesenswert?

Mit AVR hab ich noch nichts gemacht, arbeite mit PICs.
Das mit der seriellen Schnitstelle, braucht aber dann mindestens noch 
eine Umsetzung in einen MCU von seriell in das was ich will, hat aber 
den Vorteil, das ich auch schnell noch einen Seriellen anschluss an die 
Platine machen kann. Muss mal überlegen, vielleicht doch nicht so 
schlecht.

Am schönsten wäre es wahrscheinlich wirklich, wenn man einen USB-MCU 
nimmt.
Was aber heißen würde, usb-Protokoll lernen, oder?
Wie lange würde man ungefähr brauchen, wenn mann mit Usblib und so einen 
Mikrocontroller erste praktische Erfahrungen machen kann?

von yalu (Gast)


Lesenswert?

> Chips von FTDI sind nicht langsam (angeblich bis zu 480Mb/s),

Die 480 Mbit/s sind die Datenrate auf USB-Seite bei Highspeed-Devices.
Der FT232R (den die meisten hier benutzen) kann auf USB-Seite Fullspeed
(12 Mbit/s) und auf UART-Seite 3 Mbit/s, was aber immer noch eine ganze
Menge ist.

> IIRC haben die Chips auch ein paar parallele Ausgaenge die du ueber
> eine proprietaere Lib von FTDI ansprechen kannst.

Die libftdi, mit der man dies ebenfalls bewerkstelligen kann, ist
übrigens GPL. Das API dieser Bibliothek ist sehr einfach, so dass man
sie schon nach 30 Minuten Einarbeitungszeit benutzen kann.

von nwx (Gast)


Lesenswert?

Was ich machen will? Eine Maschine bauen, die mehrere Sensoren und 
Aktoren hat. Die Echtzeitsachen sollen dabei alle in einem oder mehreren 
MCUs laufen. Aber wenn möglich möchte ich die meiste "Inteligenz" in den 
Rechner
verfrachten, weil ich denke, so Entwiklungszeit für das Programm zu 
sparen und variabler bin. Welche datenübertragungsraten ich haben werde, 
weis ich noch nicht. Hab halt rs232 als langsam im Gedächtnis könnte 
aber ausreichen.

Vermutlich werde ich micht doch in das USB Protokoll einarbeiten.
Hat schon jemand von euch mit usblib unter linux gearbeitet? geht das 
schön, oder fängt man zu fluchen an? ;)

von Purzel H. (hacky)


Lesenswert?

>Was aber heißen würde, usb-Protokoll lernen, oder? Wie lange würde man ungefähr 
brauchen, wenn mann mit Usblib und so einen Mikrocontroller erste praktische 
Erfahrungen machen kann?


Ich hab'n Kollegen , der moechte kein HID, sondern ein Messgeraet bauen. 
Was offensichtlich eine eigene Klasse ist. Er ist jetzt schon eine ganze 
Weile dran diese implementation zu verstehen ... mit schnell ist da gar 
nichts. Eher Monate wie Wochen.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Aha und dafuer brauchst Du USB High Speed? Da reichen Dir 9600 Baud.

von Thomas P. (tpircher) Benutzerseite


Lesenswert?

yalu schrieb:
> Die 480 Mbit/s sind die Datenrate auf USB-Seite bei Highspeed-Devices.
> [...]
> Die libftdi, mit der man dies ebenfalls bewerkstelligen kann, ist
> übrigens GPL.

Danke fuer die Berichtigungen. Ich habe FTDI chips nie in eigenen 
Designs eingesetzt sondern nur als externe HW.

nwx sollte sich auch die Latenzen bei USB+Host-PC ansehen, wenn er 
wirklich Echtzeit will.

von nwx (Gast)


Lesenswert?

3 Mbit/s, das muss aber dann auch der Mikrocontroller können ;)

wie es scheint, ist es immer der Mikrocontroller, auch bei USB, der die 
Datenrate bestimmt. Aber das ist jetzt mal nebensächlich.

Also die Bib von ftdi ist einfach zu verstehen und anzuwenden, das finde 
ich gut. Wie ist der Vergleich zu usblib, und gibt es noch was anderes 
in dieser Hinsicht?

von nwx (Gast)


Lesenswert?

@ Michael G.
es gibt solche und solche Messgeräte, seh dir mal Cern an, das ist auch 
ein Messgerät ;) Da müssen in Sekunden TB an Daten weggeschaufelt 
werden. Für ein Multimeter reicht es natürlich leicht. ;)

@Thomas Pircher
Wie schon gesagt, die Echtzeitsachen soll in einen MCU die Inteligenz in 
den Rechner, soweit wie möglich man das trennen kann ;) Bin ja noch in 
der
frühesten Entwurfsphase. Aber ich brauche unbedingt eine Schnitstelle zu 
eien Rechner, sollte später wenn möglich auch mal mit Win Laufen, aber 
zuerst einmal unter Linux, und wenn das Projekt zukunft haben soll 
bleibt eigentlich nur ein usb anschluss am rechner, so das auch ein 
handelsübliches Notebook benutzt werden kann.

Wie es jetzt scheint, schaue ich mir zuerst die ftdi teile an. und wenn 
das nicht ausreicht, werde ich mich vermutlich richtig in usb 
einarbeiten müssen.


@ Michael G.
Welche Macken sind da so Aufgetretten?

von TicTac (Gast)


Lesenswert?

Spricht irgendwas gegen die IO-Warrior-Serie?

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

nwx schrieb:
> @ Michael G.
> es gibt solche und solche Messgeräte, seh dir mal Cern an, das ist auch
> ein Messgerät ;) Da müssen in Sekunden TB an Daten weggeschaufelt
> werden. Für ein Multimeter reicht es natürlich leicht. ;)

Es geht hier um Deine Anwendung und nicht um die Grenzen des technisch 
machbaren. Ich hab ein Board, auf dem ich mehrere TWI-Sensoren ansteure 
und die Messdaten an den PC per USB uebertrage. Und zwar mit 9600 Baud.

von nwx (Gast)


Lesenswert?

@ Michael G.
Hab ja schon gesagt, das ich noch nicht weiß, was für eine Datenrate ich 
brauche.
Aber was sind bei dir so für Macken bei den ftdi Chips aufgetretten, wie 
du oben geschrieben hast?

von nwx (Gast)


Lesenswert?

IO-Warrior kannte ich noch nicht, werd es mir mal ansehen. So auf den 
ersten Blick, kommt es mir teurer als ftdi vor.

von Colt F. (Firma: TUC) (coltfish)


Lesenswert?

@ nwx
Wenn Du sowieso einen PIC verwenden möchtest, warum nimmst Du dann nicht 
einfach einen mit USB-Interface und lädst Dir den USB-Stack von 
Microchip herunter? Da gibt es für die verschiedensten Anwendungen 
bereits fertige Demos. Ist wohl auch die kostengünstigste Lösung.
Für Deinen Fall böte sich das CDC - Interface an. Alles schon fertig. 
Müsstest nur die Hardwaredefinitionen auf Deinen verwendeten PIC 
anpassen.

von yalu (Gast)


Lesenswert?

nwx schrieb:

> Hab halt rs232 als langsam im Gedächtnis könnte aber ausreichen.

RS-232 geht üblicherweise über mehrere Meter Kabel, was die Übertra-
gungsrate stark einschränkt. In deinem Fall würde der FT232R nur ein
paar Zentimeter vom Mikrocontroller entfernt liegen, so dass wesentlich
höhere Baudraten möglich sind.

> 3 Mbit/s, das muss aber dann auch der Mikrocontroller können ;)

Richtig. Die AVRs, die ich meistens benutze, können bis zu 2,5 Mbit/s
(Taktfrequenz/8) bei einer Taktfrequenz von 20 MHz. Bei den XMegas geht
evtl. mehr, da diese mit bis zu 32 MHz laufen.

Die 2,5 Mbit/s kann aber der FT232R nicht, da die Baudrate ein Teiler
von 3 Mbit/s sein muss. Möglich sollten aber folgende Baudraten sein:

    AVR-Taktfrequenz     Baudrate
    ------------------------------
        16 MHz          1,0 Mbit/s
        12 MHz          1,5 MBit/s

Bei den PICs wird das vielleicht etwas (aber nicht viel) anders ausse-
hen. Natürlich muss der Mikrocontroller mit den Daten etwas Sinnvolles
anstellen, so dass deutlich höhere Baudraten bei 8-Bit-Controllern nicht
sehr viel bringen.

Ich habe die genannten Baudraten selbst noch nie ausprobiert, deswegen
kann ich sie nicht garantieren. Normalerweise lasse ich den FT232R mit
230,4 kbit/s laufen, da dies in der Vergangenheit die größte Baudrate
war, die vom termios-API und von Minicom unterstützt wurde (mittler-
weile geht auch mehr, ich müsste das bei Gelegenheit ausprobieren).

> Also die Bib von ftdi ist einfach zu verstehen und anzuwenden, das
> finde ich gut. Wie ist der Vergleich zu usblib, und gibt es noch was
> anderes in dieser Hinsicht?

Von der libftdi weiß ich aus Erfahrung, dass sie leicht handzuhaben ist,
nachdem man sich den Abschnitt "Functional Block Descriptions" (1,5
Seiten) durchgelesen hat.

Mit der libusb habe ich noch nie gearbeitet, schätze aber, dass die
USB-Grundlagen, die man dazu benötigt, deutlich mehr als 1,5 Seiten
umfassen.

von Guido Körber (Gast)


Lesenswert?

Die IO-Warrior kommen mit einer einfach zu benutzenden Library für Linux 
(wie auch für MacOS und Windows) und haben diverse höhere Funktionen im 
Chip, die es in vielen Fällen überflüssig machen die Bits einzeln nach 
aussen zu tragen.

http://www.codemercs.com/index.php?id=41&L=0

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.