Forum: Mikrocontroller und Digitale Elektronik Einpaar Fragen zur SPI


von Heinz Peters (Gast)


Lesenswert?

Guten Tag allerseits,

Ich moechte 2 AVR's ueber SPI zusammenverbinden. Einsatzort: Motorrad,
Entfernung: 1Meter.
Kann es da zu Problemen kommen? Stoereinfluesse? Entfernung? I2C
besser?
Die AVR's sollen in beide Richtungen kommunizieren.  d.h.: Je nach
dem, soll jeder AVR eine Datenuebertragung starten koennen.
Wie mache ich das nun ? da es nur einen Master geben kann.. Wie geht es
in die andere Richtung? Kann man Master -Slave vergabe zwischendurch
auch aendern( ein anderer wird zu Master, wenn er was senden moechte)
?
Es sollen so wenige Leitungen wie moeglich verwendet werden. Also MOSI,
MISO, TAKT... Da ich nur einen Slave verwende und nicht zwischen denn
Slaves waehlen muss, kann man da auf die SS Leitung verzichten? Wie
beschalte ich die SS-Ein/Ausgaenge?

Danke voraus!

von Olaf (Gast)


Lesenswert?

Selbstverstaendlich kann und wird es da Probleme geben. Dabei ist es
aber vollkommen egal ob nun SPI, I2C oder RS232C. Entscheidend ist in
welcher Form die Signale ueber die Leitung gehen.
Das heisst du brauchst vernuenftige Bustreiber. Das allermindestes
waere z.B ein RS232 Treiber. Ich denke mal bei 1m sollte das gehen.
Ausserdem wirst du ja sicher in deinem Protokoll Pruefsummen z.B mit
CRC16 implementieren und kannst einen Datenblock nochmal anfordern wenn
er gelegentlich mal defekt ist. Reicht das nicht wuerde ich RS422
verwenden. Oder du schausst mal was bei CAN genutzt wird, schliesslich
wurde das fuer so eine Anwendung entwickelt.

Olaf

von crazy horse (Gast)


Lesenswert?

Das einfachste sollte eine RS485 sein. Kommt mit 2 Leitungen aus und ist
 ziemlich störfest. Halbduplex.

von Heinz Peters (Gast)


Lesenswert?

@ Olaf

SPI 5 volt  kann ich direkt vergessen oder wie?

von Winne (Gast)


Lesenswert?

SPI kennt auch Multimaster nur mus das Kommunikationsprotokoll eine
Kollisionserkennung beinhalten und der angerufene Master vorrübergehend
in den Slavemode gehen RS232 ist da toleranter. Bei einem Meter und
geringer Dataenrate geht es auch ohne Bustreiber  nur mit 5V UART und
xmodem (rx tx kreuzen).

Zum aussperren von Störsignallen solltest Du für das Gesamte System nur
eine gut gepuffertte und sternförmige verteilende Spannungsversorgung
wählen. Die UART verbindung sollte geschirmt oder noch besser doppelt
geschirmt sein aber nur einseitig mit masse verbunden werden. Bei einem
meter wäre auch Optokabel dennkbar aber für jede Richtung eines. Das
braucht dan aber die entsprechenden Treiber und Empfänger, und darf
nicht geknickt werden.

Ist es sehr unhöflich nach dem Zweck des Ganzen zu fragen? Ich habe
mich in meiner aktiven Motoraddzeit(12Jahre) auch oft mit dem Gedanken
getragen, ein bißchen mehr Elektronik an meine MZ zu basteln.

von Winne (Gast)


Lesenswert?

Sorry ich meinte TWI (two wire Interface) siehe Datenblatt

von Profi (Gast)


Lesenswert?

Einfache bidirektionale Serielle mit 5V (evtl. RC-Filter und
Schmitt-Trigger auf der Empfängerseite) geht auf 1m sicher fehlerfrei.
Kommt auch auf die Geschwindigkeit im Verhältnis zur Grenzfrequenz des
Filters  an.
Trotzdem kann man ja CRC o.ä. vorsehen und die Fehlerrate anzeigen
lassen.
Std. SPI ginge auch, dann muss der Master regelmäßig den Slave abfragen
(pollen).

von crazy horse (Gast)


Lesenswert?

Aus Erfahrung: im Kfz (Motorrad gehört für mich dazu) nichts ohne
externe Treiber für alle Signale, die die Platine verlassen.
Kann alles  ohne funktionieren, und für eine private Bastelei mag das
alles gehen.

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.