Schnittstelle zwischen zwei uC

OP #495371
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
OP #495717
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
Gast #495724
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.
Gast #495762
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
Gast #495796
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.