Forum: Mikrocontroller und Digitale Elektronik CAN & SPI gleichzeitig an Raspberry


von Henrik W. (henrik1995)


Lesenswert?

Guten Tag,

ich versuche aktuell zwei Raspberry Pi's über den CAN-Bus miteinander 
kommunizieren zu lassen(dafür nutze ich ein mcp2515-Board der Firma 
Mikroelektronika). Dazu möchte ich an jeden Raspberry einen Arduino Uno 
anschließen. Die empfangenen CAN-Botschaften auf den Pi's möchte ich 
dann über den SPI-Bus an den angeschlossenen Arduino übermitteln und 
ausgeben. Allerdings finde ich nichts dazu wie ich mit einem MCP2515 CAN 
& SPI gleichzeitig betreiben kann.

Ich bin für jeden Tipp dankbar.

Vielen Dank schonmal im Voraus.



Liebe Grüße

von Stefan B. (stefan_b278)


Lesenswert?

Das Prinzip von SPI mit mehreren CS-Leitungen hast du aber schon 
begriffen?

von Henrik W. (henrik1995)


Lesenswert?

Ich denke schon. Über den CS lässt sich vom Master aus ein Slave 
ansprechen. Allerdings weiß ich nicht genau wie ich das auf CAN und SPI 
aufteilen würde. Ich bin bisher wie folgt vorgegangen:

Vom Raspberry pi habe ich:
MOSI auf eine Leitung am Breadboard
MISO "
SCK "
Spannung "
Masse "

Dann habe ich mir sozusagen alle Leitungen an den MCP2515 gelegt und von 
da aus an den anderen Raspberry Pi.
Für due SPI Verbindung habe ich mir dann auch alle Leitungen abgegriffen 
und über einen Pegelwandler an den Arduino angeschlossen.
Allerdings bin ich damit jetzt nicht weiter gekommen.
Vielleicht erkennst du ja meinen Fehler.

von Luca E. (derlucae98)


Lesenswert?

Wenn du SocketCAN nutzt, ist es meines Wissens nicht möglich, den 
SPI-Bus noch für andere Geräte zu verwenden. Du kannst in diesem Fall 
den MCP an SPI0 und den Arduino an SPI1 anschließen.

von Henrik W. (henrik1995)


Lesenswert?

Luca E. schrieb:
> Wenn du SocketCAN nutzt, ist es meines Wissens nicht möglich, den
> SPI-Bus noch für andere Geräte zu verwenden. Du kannst in diesem Fall
> den MCP an SPI0 und den Arduino an SPI1 anschließen.

Über Simulink lässt sich nur SPI0_CE0 und SPI0_CE1 ansteuern. Ich hatte 
sonst noch überlegt überlegt:

MISO, MOSI und SLCK an MCP und Arduino anzuschließen.
Für CE0 dann den MCP2515 und für CE1 den Arduino.

von rPi noob (Gast)


Lesenswert?

Henrik W. schrieb:
> Über Simulink lässt sich nur SPI0_CE0 und SPI0_CE1 ansteuern.

Simulink verlassen und ein spi0.1 mit dtoverlay erzeugen?

von 100Ω W. (tr0ll) Benutzerseite


Lesenswert?

Muss die Kommunikation zwischen dem Pi und dem Arduino per SPI erfolgen?
Es gibt ja alternativen: I²C, Serial, ...

: Bearbeitet durch User
von Thomas F. (igel)


Lesenswert?

Henrik W. schrieb:
> Vom Raspberry pi habe ich:
> MOSI auf eine Leitung am Breadboard
> MISO "
> SCK "
> Spannung "
> Masse "

Und wo ist CS?


> Für due SPI Verbindung habe ich mir dann auch alle Leitungen abgegriffen
> und über einen Pegelwandler an den Arduino angeschlossen.

Alle bis auf CS?

> Allerdings bin ich damit jetzt nicht weiter gekommen.

Wenn man mehrere SPI-Slaves an einem SPI-Bus hat so braucht jeder Slave 
eine eigene CS-Leitung vom Master. Mit den CS-Leitungen schaltet man vom 
Master aus dann um mit welchem Slave man gerade kommunizieren will.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Henrik W. schrieb:
> Die empfangenen CAN-Botschaften auf den Pi's möchte ich
> dann über den SPI-Bus an den angeschlossenen Arduino übermitteln und
> ausgeben.

Warum schließt du nicht den CAN direkt an den Arduino an und lässt den 
R-PI weg? Oder du verwendest direkt ein Arduino-ähnliches Board mit 
integriertem CAN, sodass du alles auf einer Platine hast und auch 
überhaupt keinen SPI mehr brauchst, wie z.B. das OLIMEXINO-STM32.

von Henrik W. (henrik1995)


Lesenswert?

Niklas G. schrieb:
> Henrik W. schrieb:
>> Die empfangenen CAN-Botschaften auf den Pi's möchte ich
>> dann über den SPI-Bus an den angeschlossenen Arduino übermitteln und
>> ausgeben.
>
> Warum schließt du nicht den CAN direkt an den Arduino an und lässt den
> R-PI weg? Oder du verwendest direkt ein Arduino-ähnliches Board mit
> integriertem CAN, sodass du alles auf einer Platine hast und auch
> überhaupt keinen SPI mehr brauchst, wie z.B. das OLIMEXINO-STM32.

Ja würde ich auch gerne so machen. Allerdings ist der Raspi eine Vorgabe 
des Dozenten.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Henrik W. schrieb:
> Ja würde ich auch gerne so machen. Allerdings ist der Raspi eine Vorgabe
> des Dozenten.

Dann schließe den PI an den Olimexino an und schicke nur alibi mäßig ein 
ein-aus-Kommando rüber und lasse den Olimexino alles mit CAN machen...

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.