Forum: Mikrocontroller und Digitale Elektronik Verbindung vom PC zum uC


von heinz (Gast)


Lesenswert?

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?

von Max H. (hartl192)


Lesenswert?

Ich verwende dafür den FT232. Habe es schon Problemlos mit Win7 und Win8 
eingesetzt.

von Eumel (Gast)


Lesenswert?

Für Controller mit USB halt USB und für die ohne einen USB UART 
Converter, da gibts ja einige.

von Max H. (hartl192)


Lesenswert?

Nachtrag:

heinz schrieb:
> RS-232
> COM-Port (Serial Port)
An neuen PC oft nicht vorhanden

heinz schrieb:
> I2C
Braucht auch irgendeinen Adapter-Chip

: Bearbeitet durch User
von Ingo S. (schicki)


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

von heinz (Gast)


Lesenswert?

Super, dass es so schnell Antworten gibt. Werde mit mal die FTDI 
Bausteine näher ansehen...integrierte Treiber ersparen einem unter 
Windows natürlich viel Arbeit.

von Ingo S. (schicki)


Lesenswert?

Gerne, beachte bitte Stecker und Buchsen. Ich setze eigentlich bei 
Controllern nur buchsen ein.

hier wären noch Beispiele bei RS:
RS Nummer: 715-8531
RS Nummer: 751-1197
RS-Nummer: 751-1184

von Frank K. (fchk)


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

von bluppdidupp (Gast)


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

von Michael S. (rbs_phoenix)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

Ja, nur ist Windows nicht in der Lage, CDCs ohne beschreibende 
*.inf-Datei anzusprechen -- warum auch immer.

von W.S. (Gast)


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.

von Frank K. (fchk)


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

von Frank (Gast)


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!

von bluppdidupp (Gast)


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.

von Michael S. (rbs_phoenix)


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.

von Frank K. (fchk)


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

von Michael S. (rbs_phoenix)


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.

von Stefan F. (Gast)


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.

von Ingo S. (schicki)


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.

von Petr (Gast)


Lesenswert?

Alles was man heutzutage per Kabel an den PC hängt darf ruhig USB oder 
Ethernet sein.

Bei USB bietet sich ein Gerät der HID Klasse an. Die Hardware und 
Firmware gibt es z.B. von Microchip: PIC18F14K50. Atmel hat bestimmt was 
Ähnliches.

Eine Auswahl an PC-Treibern dafür gibt es hier:
http://www.mikrocontroller.net/articles/USB_HID_Host_Treiber

von Kein Name (Gast)


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.

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.