Dies ist ein weiterer/neuer Einblick in Bezug auf meine vorherige Frage Messages for SPI protocol .
Eine Idee aus dieser Frage ist, die SS-Leitung zu verwenden, um zu wissen, dass eine neue Nachricht vom Master an den Slave gesendet wird. Der Master ist der STM32 und der Slave der Arduino, siehe unten:
Slave <--- Master
Arduino (SPI) STM32
| ^ ^ ^
V | | |
RS485/DMX512 3x UART/MIDI
Der Master empfängt MIDI-Signale von verschiedenen Quellen, verarbeitet sie, sendet (veränderte) MIDI-Nachrichten zurück und sendet SPI-Nachrichten an den Arduino, der die DMX-Signale sendet.
So weit so gut, ich implementiere gerade den Arduino-Code (inklusive einer Windows-Testanwendung).
Der Grund, warum ich ein Arduino für RS485/DMX verwende, liegt hauptsächlich darin, dass ich es nicht auf einem STM32 zum Laufen bringen konnte, aber auch, um die Rechenleistung des STM32 zu entlasten.
Ich brauche jedoch mehr SRAM auf dem Arduino, also werde ich einen SPI-SRAM-Chip (32K256) verwenden. Das Problem ist, dass ich nicht sicher bin, ob ich den Arduino zum Sklaven machen kann.
SPI RAM 32K256
|(SPI)
V
Slave <--- Master
Arduino (SPI) STM32
| ^ ^ ^
V | | |
RS485/DMX512 3x UART/MIDI
Einige Dinge, die ich in Betracht gezogen habe:
Afaik muss die Kommunikation vollständig synchron sein, aber ich bin mir nicht sicher, ob es aufgrund von Puffern in den SPI-Peripheriegeräten zu einer gewissen „Entspannung“ kommt.
Noch ein paar Hintergrundinformationen zum gesamten Projekt:
Alle Erkenntnisse wären hilfreich.
Den Arduino zum Master machen und den STM32 abfragen (was wahrscheinlich zu meinen nutzlosen Umfrageereignissen führt)
Vielleicht können Sie eine zusätzliche "Interrupt" -Leitung vom STM32 zum Arduino haben, um zu signalisieren, wann Daten verfügbar sind. Es könnte direkt einen Interrupt auf dem Arduino auslösen.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Wenn Sie Datenpakete mit fester Größe haben, können die STM32 SPI + DMA-Peripheriegeräte den SPI-Slave-Verkehr autonom verarbeiten, ohne CPU-Eingriff, nachdem die Interrupt-Leitung ausgelöst wurde (OK, das Signal muss eventuell zurückgesetzt werden, ein DMA-Transfer-Complete-Interrupt oder ein Eins -shot timer kann das).
NSS
in der ST-Dokumentation aufgerufen. Ich nehme an , ich habe S lave Select gewählt .
Peter Schmidt
Michel Keijzers
Andi aka
David Tweed
Michel Keijzers
Michel Keijzers
David Tweed
Nur ich
Michel Keijzers
David Tweed
Michel Keijzers
Michel Keijzers