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
Das Prinzip von SPI mit mehreren CS-Leitungen hast du aber schon begriffen?
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.
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.
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.
Henrik W. schrieb: > Über Simulink lässt sich nur SPI0_CE0 und SPI0_CE1 ansteuern. Simulink verlassen und ein spi0.1 mit dtoverlay erzeugen?
Muss die Kommunikation zwischen dem Pi und dem Arduino per SPI erfolgen? Es gibt ja alternativen: I²C, Serial, ...
:
Bearbeitet durch User
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.