Kurzum: was muss ich im Code ändern um sagen wir mal 2 Geräte am SPI zu betreiben? Sorry ich habe dazu aber nicht wirklich etwas gefunden. Ich habe am XIAO ESP32-S3
ein MCP2515 (Can Bus Board)
ein ILI9488
Ich schließe beide Geräte am SPI parallel an, und jedes Gerät bekommt einen eigenen CS Pin. Aber ich weiß nicht, wie ich das im Code ändern muss. Das Display läuft die ganze Zeit und der MCP2515 sendet Daten in Echtzeit in oftmals 10-25ms.
das meine ich nicht...wenn ich am selben SPI mehrere Geräte habe muss ich dann nicht im code CS auf low ziehen wenn ich das gerät verwende ? ich meine ich habe sowas irgendwo gelesen... das meine ich.
Das Display läuft für sich, muß nur Änderungen mitgeteilt bekommen.
Was bedeutet "sendet in Echtzeit"? Der kann doch nur senden wenn er angesprochen wird.
Genau das, wenn es nicht die zum Gerät gehörende Bibliothek macht.
Ich kann Dir zwar nichts zu deinen eingesetzten Geräten sagen, aber an einem SPI-Bus kann nur ein Gerät zu einem Zeitpunkt aktiv sein. Ein Beispiel (was bei mir auf dem Tisch liegt): Ich empfange Daten von nRF24 Transmittern und speichere auf SD-Card. Meine nRF24 senden in regelmäßige Abständen, ich weiß also wenn der nRF24 Empfänger eingeschaltet sein muss, schmeiße die Daten in ein Array, und speichere auf SD-Card wenn das Array voll ist, wenn der nRF24 schläft (und den Bus frei gibt). Die SD-Card muss ich mit SD.begin() starten und nach dem Schreiben mit SD.end() vom SPI-Bus nehmen.
Auswendig nicht, aber genau dieses Problem wurde schon einmal hier im Forum erörtert. AFAIR habe ich damals sogar die Ursache des Problems gefunden. Erst nur als plausible Vermutung, wurde dann aber von anderen bestätigt.
Jetzt haben wir hier eine (aus meiner Sicht falsche) Behauptung, von 2 Leuten vorgebracht, und es gibt keine Belege.
Nein SPI ist keine demokratische Angelegenheit.
Eher eine physikalische
Einfache Frage:
Wie sollte überhaupt ein SPI Slave den Bus blockieren?
Wie?
Oder meinst du den einen falsch gebauten SD Adapter, den es mal aus Chinaland gab, wo der Levelshifter Miso dauerhaft gezogen hat.
Nee, den kannst du nicht meinen, denn der hat die Leitung NIE losgelassen.
Da hat der Boardentwickler Bockmist gebaut.
Und der Mist ist kein grundsätzlich dem SPI innewohnendes Problem.
Alle mir bekannten SPI Slave geben die Miso Leitung frei, sobald CS auf High geht.
Alle. Das ist Pflicht für alle.
(nur der eine kranke SD Adapter weigert sich)
Und ja Miso ist die einzige Leitung, an der der Slave überhaupt wackeln darf.
Dann ist das SPI Gerät kaputt, bzw. falsch konstruiert.
SD, NRF24, kaputte SPI Geräte... Hat alles nix mit den Problemen des TO zu tun.
Alles Nebelkerzen
Durch die Bank.