www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schnittstelle zwischen zwei uC


Autor: Marco Schramm (hochfrequenz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Modul auf dem ist ein uC untergebracht. Dieser soll dann 
über eine offene Schnittstelle kurze Daten mit max. 10KBit/s  mit einem 
ansteckbaren weiteren Modul austauschen. Dieses Modul widerrum hat auch 
einen uC. Welchen aber, soll völlig offen sein und demjenigen überlassen 
sein, der sich an mein Modul andockt.

Ich möchte also für die steckbare Schnittstelle nun eine 
Übertragungsart/Taktrate/Protokoll usw.  vorgeben.

Z.B.: UART, oder SPI, oder I2C

Auf beiden uC´s muß dies einfach zu implementieren sein. Beide UC´s 
müssen Kommunikationswunsch signalisieren können (also kein 
Master/Slave).

Was empfiehlt ihr als Schnittstelle vorzugeben. Das wichtigste ist => 
einfache Implementierung für denjenigen, der sich mit seinem selbst 
entwickelten Modul an mein Modul andockt.

Eine Synchronisation des uC-Taktes soll auf gar keinen Fall über die 
Schnittstelle erfolgen.


Ich hoffe, es ist so einigermaßen klargeworden, was ich meine.


Mit besten Grüßen
Marco

Autor: srb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, wenns kein Master/Slave sein soll und auch noch sehr einfach, dann 
einfach UART. Jeder hat ein TxD und ein RxD. Somit kann jeder senden, 
wann immer er will.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

I2C würde auch sinnvoll sein, es ist prinzipiell ein Multi-Master-Bus 
möglich. Macht dann aber etwas mehr Software-Aufwand 
(Kollisions-Erkennung).

Gruß aus Berlin
Michael

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UART ist das Einfachste und Zuverlässigste, ist in 10 Minuten 
programmiert.
Sinnvoll wäre es, die Ein/Ausgänge mit Serienwiderständen (und 
zusätzlichen Dioden) zu versehen, zum Schutz gegen ESD beim Stecken und 
Ziehen des externen Moduls.

Autor: Marco Schramm (hochfrequenz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Hinweis auf die Schutzdioden /Schutzwiderstände

Frage: Wenn einer der typischen Klein-uC´s einen Hardware UART hat, 
produziert dann dieser automatisch einen Interrupt, sobald ein gültiges 
Byte empfangen wurde? Oder muß man eine seperate Interruptsignalleitung 
zwischen den beiden verlegen (sprich über die Schnittstelle ziehen).

Marco

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein,es werden effektiv nur TX,RX und GND für eine UART-Kommunikation 
benötigt.Mit minimal Mehraufwand (Pegelwandler-IC,zb. MAX232) kann man 
dann ohne Software-Änderungen auch Daten mit einem PC per RS232 
Schnittstelle austauschen.

Die meisten Mikrocontroller bieten wenigstens für "Neues Byte 
empfangen","bereit nächstes Byte zu übertragen" und "Fehler" einen 
Interrupt an.Bei einigen gibt es auch nur einen allgemeinen 
UART-Interrupt wenn etwas passiert ist und man muss das genaue Ereignis 
dann aus einem Statusregister auslesen.

Generell kann man die Hardwarelast mit einer interrupt-gesteuerten 
Hardware-UART extrem klein halten.Mit einem Ringpuffer+2 Indexvariablen 
lässt sich sogar eine gepufferte Kommunikation realisieren.

Einzige Ausnahme ist die Verwendung von externen UART-Bausteinen wie z.b 
dem 16C654,da wird pro UART eine Interrupt-Leitung benötigt.Wenn man 
sich aber an die im Mikrocontroller integrierte(n) UART(s) hält,entfällt 
das natürlich.

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde hier eher die SPI empfehlen.

Die SPI kann als 3, 4 oder 5 Draht Interface betrieben werden.
die  3 notwendigen Pins sind Master_out; Slave_out; Clock. Der Master 
bezieht sich hier NUR auf den Kommunikationspartner der den Clock 
ausgibt.
Die beiden zusätzlich möglichen Signale sind Slaveselect und Busy.
Mit diesen beiden Signalen kann die Kommunikation synchronisiert werden, 
teilweise Hardware unterstützt. Bei einigen µC können diese beiden 
Signale jedoch nur per IO Pin und Software unterstützt werden.

Mit der SPI hast du vom Protokollaufwand und der Flexibilität 
wahrscheinlich die beste Ausgangslage für eine solche Kopplung zweier 
Module.

Die Übertragungsrate kann je nach verwendeten µC ohne Probleme bis zu 10 
MBit/s betragen.

Das Anfordern einer Kommunikation lässt sich unabhängig von den 
Signalwegen über eine IO Leitung erledigen. Dies sollte also keine 
Einschränkung für die Schnittstellenauswahl bedeuten.

Ralph

Autor: guro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
SPI hat den vorteil, dass es mit einfachen GPIOs simuliert werden kann, 
und dass es relativ schnell (weil sehr primitiv) ist.
nachteil ist allerdings, dass man zusätzliche steuerleitungen braucht. 
wer ist momentan der busmaster? wer gibt den takt an? 
kollisionserkennung?
auch wenn man die volle bandbreite nutzen will (also SPI full duplex 
betreiben möchte), braucht man z.b. techniken wie 'byte stuffing', da 
ein separater empfang oder separates senden nicht möglich sind (im 
gegensatz zu UARTs).
viele MCUs unterstützen SPI hardwareseitig, allerdings mit 
einschränkungen. meistens sind die schieberegister nur 8 bit breit etc. 
der erfinder des SPI ist meines wissens motorola (heute freescale). ich 
würde mich mal auf deren webseite nach specs umsehen (timing usw.)...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.