Verbindung vom PC zum uC

#3581892
Lesenswert?

Hallo Zusammen,

ich setze seit längerem die FTDI Module erfolgreich ein. Die gibt es für 
einen MAX BAustein bzw. für 3,3 oder 5,0 Volt. Der Vorteil liegt darin 
dass der Treiber in Windows 7 ind Windows 8 direkt enthalten ist, und 
die Gehäuse den bisherigen Sub-D-Gehausen entsprechen. Das Modul wird 
über ein Mini-USB Kabel mit dem PC verbunden. Die Module gibt es bei 
RS-Components.

http://www.ftdichip.com/Products/Modules/USBRSxxx.htm


DB9-USB Modules

DB9-USB-M


Full Speed USB to 1-Port RS232 level UART module that can replace an 
RS232 Level UART DB9 male connector

DB9-USB-F


Full Speed USB to 1-Port RS232 level UART module that can replace an 
RS232 level UART DB9 female connector

DB9-USB-D3-M


Full Speed USB to 1-Port 3.3V level UART module that can replace 3.3V 
level UART DB9 male connector

DB9-USB-D3-F


Full Speed USB to 1-Port 3.3V level UART module that can replace 3.3V 
level UART DB9 female connector

DB9-USB-D5-M


Full Speed USB to 1-Port 5V level UART module that can replace 5V UART 
DB9 male connector

DB9-USB-D5-F


Full Speed USB to 1-Port 5V level UART module that can replace 5V UART 
DB9 female connector
#3582001
Lesenswert?

heinz schrieb:
> Hallo,
> auf welche Schnittstelle sollte man setzt?
> UART
> RS-232
> COM-Port (Serial Port)
> FTDI
> I2C
>
> Der Anschluss sollte natürlich zukunftssicher sein, insbesondere Treiber
> für Windows 7/8. Welche Erfahrungen habt ihr und was könnt ihr
> empfehlen?

Am besten sind Geräte, die eine Standard-USB-Klasse wie HID oder CDC 
implementieren. Dafür hat jedes Betriebssystem schon passende Treiber 
dabei.

Es gibt zB den Microchip MCP2200. Das ist quasi ein vorprogrammierter 
PIC18F14K50, der einen USB-Seriell-Adapter implementiert. Während Du bei 
FTDI noch spezielle Treiber brauchst, ist der MCP2200 ein CDC Device, 
das Du an einen Mac oder eine Linux-Kiste anschließen kannst, und das 
sofort funktioniert, weil CDC eben eine Standard USB-Klasse ist. Windows 
möchte noch ein INF-File sehen, nutzt dann aber den eingebauten Treiber.

Der MCP2210 ist ein USB-SPI Adapterchip, der USB-seitig als HID erkannt 
wird und damit auch ohne extra Kerneltreiber funktioniert.

Wenn Du keine großen Ansprüche hast, ist ein USB-HID das unkritischste. 
Zweite Wahl sind andere Standard-USB-Geräteklassen, und 
gerätespezifische USB-Geräte, wenn es keine andere Möglichkeit gibt.

FTDI ist keine schlechte Wahl, aber Du musst eben vorher einen extra 
Treiber installieren, und dann musst Du schauen, welcher 
USB-seriell-Port Deiner ist. Wenn Du eine eigene VID/PID nehmen willst 
(um Verwechselungen mit anderen USB-Kabeln auszuschließen), wollen 
64-Bit Windows-Systeme eine Treibersignatur sehen, die Du von Microsoft 
kaufen musst. (TEUER!)

Bei HID brauchst Du das nicht. Für Dich als Programmierer ist das etwas 
mehr Aufwand, für den User später dafür aber idiotensicher. Einstecken, 
warten bis erkannt, zugehörige Applikation starten, funktioniert.

fchk
Gast #3582073
Lesenswert?

Frank K. schrieb:
> sofort funktioniert, weil CDC eben eine Standard USB-Klasse ist. Windows
> möchte noch ein INF-File sehen, nutzt dann aber den eingebauten Treiber.
Wobei unter neueren Windows-Versionen meines Wissens auch hier eine 
digitale Signatur erwartet wird und Kosten verursacht.

Ergänzend zu HID+CDC kann man evtl. auch auf WinUSB einen Blick werfen 
(kann unter anderen Betriebssystemen per libusb angesprochen werden):
http://msdn.microsoft.com/en-us/library/windows/hardware/hh450799(v=vs.85).aspx#what_is_a_winusb_device
#3582456
Lesenswert?

Meiner Meinung nach geht nur USB. COM-Schnittstelle findet man ansich 
garnicht mehr bei aktuellen PCs und Druckerport (LPT) ist bei Laptops 
auch kaum noch vorhanden. Da bleibt dann nicht mehr viel. Firewire hat 
sich auch nich richtig durchgesetzt. Alternativ ginge noch Ethernet 
(Lan/W-Lan), gerade wenn das zu steuernde Gerät zentral und nicht 
"tragbar" ist. Zuletzt wäre noch Bluetooth, doch als Schnittstelle zum 
PC würde ich dann doch USB nehmen. Ist dann auch gleich mit 5V/1A max. 
bestrombar.
Gast #3583370
Lesenswert?

Rufus Τ. Firefly schrieb:
> warum auch immer..

Nun ja, bei CDC, also mehr oder weniger allgemeinen 
Kommunikationsgeräten gibt es theoretisch ne Menge Varianten und 
Versionen und es hat sich offenbar bei Microsoft keiner die Mühe 
gemacht, alle nach Standard in Frage kommenden Geschmacksrichtungen 
aller Hersteller in den mitgelieferten INF's einzutragen. Stattdessen 
erwartet man dort, daß jemand, der ein Kommunikationsgerät in den Handel 
bringt, dessen zugehörigen Software-Senf mit dazuliefert.

Aber mal ein Wort zu den hier vielgerühmten HID's: Ich finde, das ist 
eine elendige Einschränkung im Vergleich zu einem CDC. Einen virtuellen 
COM Port kann fast jedes Programm öffnen und darüber Daten austauschen, 
aber für HID geht das überhaupt nicht, das ist entweder ne ungewünschte 
Konkurrenz zu Maus und Tastatur oder ein Spezialport, mit dem NUR das 
Programm was anfangen kann, das man selber dazugeschrieben hat.

W.S.
#3583701
Lesenswert?

W.S. schrieb:

> Aber mal ein Wort zu den hier vielgerühmten HID's: Ich finde, das ist
> eine elendige Einschränkung im Vergleich zu einem CDC. Einen virtuellen
> COM Port kann fast jedes Programm öffnen und darüber Daten austauschen,
> aber für HID geht das überhaupt nicht, das ist entweder ne ungewünschte
> Konkurrenz zu Maus und Tastatur oder ein Spezialport, mit dem NUR das
> Programm was anfangen kann, das man selber dazugeschrieben hat.

Das ist durchaus Absicht. Viele Geräte kann man auch nur mit dem 
Programm benutzen, was dafür gedacht ist. Mein Blick fällt gerade so ein 
ELV DDS-Generator, wo die Schwachmaten auch irgend so einen 
USB-seriell-Chip reingesetzt haben, der erst mit wüsten Drohungen zur 
Mitarbeit überzeugt werden konnte, plus irgendeinen kleinen AVR. AVRs 
mit eingebauter USB-Hardware existierten damals schon. Das ist ein 
Beispiel für ein Gerät, was ohne die mitgelieferte Software nicht 
bedienbar ist. Und HID ist in dieser Hinsicht idiotensicher. Der dumme 
User kann da einfach nichts verkehrt machen, und das ist auch gut so, 
denn sonst hast Du nachher ganz schnell mehr Supportaufwand, als Du 
haben willst.

fchk
Gast #3583736
Lesenswert?

Das Problem mit der ansonsten wirklich universellen USB-Schnittstelle 
ist das Treiber-Gefruzzel. Zwar stellt z.B. FTDI inzwischen für beinahe 
jede Plattform (Win, Mac, Linux) Treiber bereit, aber was ist mit 
Andriod, iOS oder ... was auch immer?

Ich plädiere (sofern der verwendete MC das hergibt) für ETHERNET. 
Notfalls mit einem Lantronix XPort (oder änhlichem). Ethernet-Treiber 
sind von vorne herein in jedem OS enthalten und absolut 
plattform-unabhängig.

Da muss der Hersteller keinen Treiber liefern, man muss nämlich gar 
keinen installieren - ist das nicht ein gewaltiger Unterschied? Hinzu 
kommt die nahezu unbegrenzte mögliche Entfernung zwischen den 
Komponeneten - nicht nur, wie bei USB, gerde mal ein par Meter.

Auch die Protokolle sind programmtechnisch wesentlich einfacher 
umzusetzen (falls gewollt).

Leute baut mehr Netzwerk in eure Geräte, DAS ist professionell!
Gast #3583742
Lesenswert?

Ich denke auch dass das Absicht ist, um mehr von CDC wegzulenken.
Wenn man Software schreibt ist es auch etwas blöd, das man dort 
eigentlich nur eine Liste der COM-Ports anzeigen kann und den Nutzer das 
richtige Gerät auswählen lassen muss. Ob da der Nutzer immer schnallt ob 
sein Gerät jetzt COM3, COM4 oder COM6 ist? Bei HID oder WinUSB kann man 
problemlos nach Vendor-ID/Product-ID/etc. filtern, bei (virtuellen) 
COM-Ports maximal über APIs des Herstellers des USB-Adapters oder über 
irgendwelche Flickschustereien.
Bei der .inf für CDC kann man immerhin noch den DisplayName setzen.
#3584555
Lesenswert?

Ich bevorzuge auch HID. Eine passende Software muss ich zu 80-90% eh 
schreiben. Und dann is HID wegen ohne Treiber und Filterung nach VID/PID 
aus meiner Sicht besser als CDC.

Mit Ethernet hab ich leider noch nichts gemacht, reizt mich aber auch. 
Aber für ein einzelnes Gerät (z.B. SPI-PC-Schnittstelle oder per PC 
steuerbare PWM-Ausgänge) am Platz nehm ich doch lieber USB.
#3584653
Lesenswert?

Michael Skropski schrieb:

> Mit Ethernet hab ich leider noch nichts gemacht, reizt mich aber auch.
> Aber für ein einzelnes Gerät (z.B. SPI-PC-Schnittstelle oder per PC
> steuerbare PWM-Ausgänge) am Platz nehm ich doch lieber USB.

Dafür bietet sich ein PIC18F67J60 an. Der hat Ethernet MAC und PHY 
gleich eingebaut, man kann direkt die RJ45-Buchse mit integriertem 
Übertrager an den Chip anschließen. Damit hat man eine wirkliche 
Single-Chip-Lösung, die auch nicht aufwändiger ist als eine USB-Lösung. 
Es gibt keine einfachere, kleinere und billigere Lösung, ein 
Ethernet-Gerät zu bauen.

fchk
#3584693
Lesenswert?

Ne. Es wird auch ein PIC sein, wenn ich mit Ethernet beginne. Ich bin am 
planen einer Home-Automation und die Zentraleinheit wird wohl Ethernet 
haben. Eine Extra-Platine für die Konfiguration der Module wird dann 
aber mit USB laufen.

Das find ich so toll bei den neuen PICs mit USB. Manche haben die D+ & 
D- Leitung da, wo auch die ICSP Clock- & Datenleitung ist. Mit einer 
5poligen Mini- oder MikroUSB-Buchse kann man so den PIC flashen (mit 
Adapterkabel zum PICKIT) und danach gleich Versorgen und die 
Kommunikation zwischen PC und PIC realisieren. Sollte die USB-Funktion 
nicht nötig sein, kann man die Buchse nutzen, um ein Netzteil 
anschließen zu können.
Gast #3584713
Lesenswert?

Meine Rangfolge ist diese:

1) Ethernet: Weil man keinen Treiber braucht und praktisch alle 
Computertypen und Betriebsysteme unterstützt werden.

Programmierung des Mikrocontrollers ist schwierig, aber wenn man den 
Dreh erstmal raus hat, kann man den Basis-Code immer wieder kopieren.

2) USB-UART: Weil da ein bisschen Stromversorgung inclusive ist Treiber 
je nach Betriebsystem und Chip leicht verfügbar oder gar nicht nötig 
sind.

Allerdings geht das nur mit wenigen Mobilen Geräten (Handies, Tablets).

3) Bluetooth SPP: Für mobile Geräte besser als USB, denn das geht wieder 
ohne Treiber.
#3584739
Lesenswert?

Hallo,

da bin ich voll bei Frank. Die PICs sind da absolut einfach handzubahen. 
Der TCPIP-Stack ist sehr umfangreich.

Die Anbindung über einen lantronix xport ist auch recht einfach, aber 
deutlich teurer als eine Lösung über einen PIC.

Ganz egal für welches Interface man sich entscheidet, man sollte 
zumindest über Grundlagen im Bereich Hardware und Software besitzen, und 
nicht frustriert sein, wenn etwas nicht auf Anhieb funktioniert.
Gast #3585238
Lesenswert?

Einziger Nachteil von USB direkt auf dem Mikrocontroller. USB hat an ein 
paar Stellen Timeouts von 50ms. Und die Routinen sind recht umfangreich 
- möchte man nicht in eine ISR packen.

Die Hauptschleife muss so angelegt sein, dass sie regelmässig die USB 
Schnittstelle pollt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren