2 Geräte an einem SPI Bus

  • Guten Abend,
    ich habe mal eine Frage bezüglich des SPI Busses am PI.
    Ich hatte vor einen MCP2515 und einen ENC28J60 am PI anzuschließen.
    Beide Chips können ganz einfach über den Devicetree eingehangen werden.
    Aber wie wird das mit dem Chipselect geregelt?
    Woher weiß der Devicetree welcher Chip an welchem Chip Select hängt?
    Und wie schnell ist der ENC28J60 am PI?
    Verringert sich die Geschwindigkeit wenn gleichzeitig der MCP2515 verwendet wird?
    Meine Idee wäre es jetzt den MCP2515 an den anderen zweiten separaten SPI Bus des PI's anzuschließen.
    Wie müsste ich dann die Devicetree Datei verändern?

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

  • Moin,
    ich habe es auch noch nicht getestet, aber in der Theorie...

    Laut GPIO-Plan gibt es zwei "ChipEnable" für SPI.

    Dann muss der Enable-Eingang der Bausteine jeweils an einen. Den Rest muss die Software machen.

    Du musst halt für jeden Baustein den richtigen CSx aktivieren.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.


  • Moin,
    ich habe es auch noch nicht getestet, aber in der Theorie...

    Laut GPIO-Plan gibt es zwei "ChipEnable" für SPI.

    ... die auch mit der Praxis übereinstimmt... CE0/GPIO08/Pin 24 und CE1/GPIO07/Pin 26

    gruß root

  • Ok Danke für die Info.
    Und wie sieht es so mit der Geschwindigkeit aus?
    Der PI arbeitet nur als IOT Gerät und braucht eigentlich nur eine geringe Bandbreite.

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

  • Hallo.


    Und wie sieht es so mit der Geschwindigkeit aus?
    Der PI arbeitet nur als IOT Gerät und braucht eigentlich nur eine geringe Bandbreite.

    ...das kann man nicht generalisieren.
    Das ist abhängig von Leitungslänge, Anzahl der Frames die übertragen werden und Taktfrequenz.
    Du musst dir nur eines vor Augen halten:
    Der Master (Pi) macht einen Request an Slave 0. Slave 0 antwortet. Master reagiert mit ACK/NAK.
    Dann erst kann Slave 1 requestet werden.

    CE0/CE1 ist softwaretechnisch nichts anderes als ein Wechselschalter. Wenn Ausgang1 0 ist, ist Ausgang2 1, und umgekehrt.
    Siehe >hier<

    gruß root

    Einmal editiert, zuletzt von root (28. Juni 2016 um 19:06)

  • Vielen Dank für das umfangreiche Dokument :thumbs1:
    Wie sieht es jetzt mit der zweiten und sogar der dritten SPI Schnittstelle am Pi aus?
    Ich habe vor eine eigene Platine mit dem Compute Modul zu erstellen.
    Am Compute Modul sind 3 seperate SPI Schnittstellen vorhanden.
    Wie finde ich weitere Infos zu den Schnittstellen?
    Und was muss ich am Kernel verändern so dass ich SPI1 und SPI2 als Schnittstelle verwenden kann?
    Wenn ich 2 unterschiedliche und separate SPI Schnittstellen verwende dürften sich die beiden Chips ja nicht in den Weg kommen.
    Pinout Compute Modul

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

    Einmal editiert, zuletzt von petit_miner (28. Juni 2016 um 20:32)


  • ...
    Am Compute Modul sind 3 seperate SPI Schnittstellen vorhanden.
    Wie finde ich weitere Infos zu den Schnittstellen?

    ...recht einfach:
    Guck deinen link oben in Beitrag #6 an, und merke/drucke dir das mit dem Banking.
    Dann bemüht man Tante goggle, wird fündig unter diesem >diesem> link, und druckt sich die Banking/Operation-Datasheets aus.
    Der Rest Logik und bischen Fleisarbeit.

    Banking... geile Sache mit der >pigpio< Lib.
    unter anderem:

    Zitat


    gpioRead_Bits_0_31 Read all GPIO in bank 1
    gpioRead_Bits_32_53 Read all GPIO in bank 2

    gpioWrite_Bits_0_31_Clear Clear selected GPIO in bank 1
    gpioWrite_Bits_32_53_Clear Clear selected GPIO in bank 2

    gpioWrite_Bits_0_31_Set Set selected GPIO in bank 1
    gpioWrite_Bits_32_53_Set Set selected GPIO in bank 2


    d.h. damit es es möglich, ohne das lästige rauspressen einzelner Bit an die GPIO's, ne Bank zu beschreiben, und die Bits erscheinen automatisch an den entspr. GPIO's.
    Lesen ebenfalls.
    Hab damit mal ne Centronic's (parallel)-Schnittstelle emuliert.
    Einfach ein Macro definieren:

    Zitat


    #define CHK_BIT(var,pos) ((var) & (1<<(pos)))


    In der Befehlszeile wird das Bit x in "var" an "pos" getestet, und ne 1 in die Bank geschrieben, wenn Bit x = 1. Ansonsten passiert nichts.Logischerweise wird die Bank vorher gelöscht.
    Mit einer Befehlszeile ein beliebiges Bytemuster in ne Bank, -> GPIO's sind gesetzt...perfekt.

    ...denn viel Erfolg.

    gruß root

    ///Edit ... ähmmm... bin oben aus versehen auf die Note gekommen... kann's nicht mehr wegclicken... :lol:

    Einmal editiert, zuletzt von root (29. Juni 2016 um 03:01)

  • Wurde jetzt bei den DT Overlays fündig:
    Github
    Mithilfe 3 Overlay Dateien kann man problemlos alle SPI Schnittstellen am PI aktivieren.


    Jetzt muss ich nur noch die .dts Datei für den ENC28J60 bearbeiten, so dass dieser auch an SPI2 funktioniert. :thumbs1:
    Vielen Dank für eure Hilfe :D

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

  • Hatte jetzt mal was Zeit mit dem ENC28J60 zu spielen.
    Am wichtigsten war natürlich der Speedtest :lol:
    Dafür das der ENC über SPI angeschlossen ist sind die Werte beachtlich :):thumbs1:

    Code
    Retrieving speedtest.net configuration...
    Retrieving speedtest.net server list...
    Testing from Deutsche Telekom (93.232.209.36)...
    Selecting best server based on latency...
    Hosted by hotspot.koeln (Cologne) [28.18 km]: 38.547 ms
    Testing download speed........................................
    Download: 4.11 Mbit/s
    Testing upload speed..................................................
    Upload: 3.27 Mbit/s

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!