Welche Kommunikationsschnittstelle bei Mikrocontrollern ist besser und einfach in der Handhabung?
Hallo zusammen,
drei mögliche Schnittstellen stehen mir zur Auswahl, aber welche soll ich verwenden?
UART SPI I²C
Welches von den drei Protokollen?
4 Antworten
Das kommt immer auch auf die Anwendung an...
- Geschwindigkeit (in der Regel): I2C < UART < SPI
- Multi-Master: I2C. Mit viel Aufwand auch UART
- Mehrere Slaves: I2C, SPI (wobei jeder Slave eigene Leitung braucht), UART mit Protokollstruktur und Adressierung
- Anzahl Leitungen: UART (2), I2C (2), SPI (4)
Für UART braucht der Mikrocontroller in der Regel einen Quarz für Genauigkeit. Die meisten Boards haben das aber.
Ich habe mich noch nie freiwillig für SPI entschieden, wobei das nicht viel heißen muss.
Je nachdem, was du anschliessen möchtest. Ein Terminal? UART. SD-Karte oder kleinen TFT? SPI. I²C kompatible Peripherie? I²C.
Wenn Sende- und Empfangsroutinen vorhanden sind, unterscheidet sich die "Handhabung" nicht groß voneinander. Bei I²C und SPI wirst du noch zusätzlich angeben wollen, mit welchem Gerät du kommunizierst, dafür entfällt Notwendigkeit der Angabe diverser Kommunikationsparameter.
Du nimmst also die, welche am besten zum beabsichtigten Einsatzzweck passt.
Schreibst du die I/O Routinen selbst, bist du mit UART vermutlich am schnellsten am Ziel. Stehen bereits I/O Routinen zur Verfügung, dann mit denen. Diagnostizieren dürfte auch am einfachsten mit UART gehen - du kannst das Modul, aber auch den AVR, an einen USB nach serial Adapter am PC anschließen, und mit dem verifizieren, dass sowohl Kommunikationsparameter als auch Inhalt des Datenaustausches stimmen.
Vorteile von SPI ggü. I²C:
- Wirkungsgrad, Geschwindigkeit, primitiveres Protokoll, theoretisch unbegrenzte Slaves, vollduplex
Nachteile:
- Leitungsaufwand
UART, weil es von allen 3 die einfachste Schnittstelle ist.
Nach der einfachsten Auswahl zu suchen ist ein Anfängerfehler.
Ein Anfänger ist in der Lage, jedes der 3 zu erlernen.
Deine Kriterien sind im 1. Schnitt:
- wie viele Kommunikatoren: RX, TX
- welche Kanäle
- welche Bandbreite
Ich weiß ja nicht, ob das was hilft, es geht um ein DCF77 Arduino Shield ELV Real-Time-Clock-DCF-Modul mit I2C, SPI u. UART-Schnittstelle, RTC-DCF, Komplettbausatz | ELV Elektronik | Bausätze | ELV Elektronik