Hallo zusammen, ich möchte mit einem PIC32MX1xxxxx mit einem SPI Modul (SPI1) kontinuierlich Daten einlesen (slave, bitclock = 200-300 kHz) und gleichzeitig auf dem zweiten SPI Modul (SPI2) daraus abgeleitete Daten ausgeben (framed, slave, bitclock = 3 MHz). Ich bin mir dabei nicht sicher wie eine mögliche Implementierung aussehen könnte. Aufgrund der unterschiedlichen Busgeschwindigkeiten ist es wahrscheinlich nicht sehr sinnvoll für beide Module die SpiChnPutC(...) und SpiChnGetC(...) Funktionen zu verwenden, da SpiChnGetC(...) abwartet bis 1 Byte aus dem Buffer gelesen werden kann (oder?). Wäre es sinnvoll SPI1 interruptgesteuert zu betreiben und SPI2 in einer Endlosschleife per SpiChnPutC(...)? Oder beide Interrupgesteuert? Oder sollte ich DMA Kanäle verwenden? Ich bin für jede Anregung dankbar!
SPI2 sendet erst wenn SPI1 empfangen hat? SPI1 interruptgesteuert zu betrieben, bietet sich jedenfalls schon einmal an.
Schau dir mal die DMA Beispiele mit SPI an.
Mick M. schrieb: > SPI2 sendet erst wenn SPI1 empfangen hat? > > SPI1 interruptgesteuert zu betrieben, bietet sich jedenfalls schon > einmal an. SPI2 sendet immer, auch wenn SPI1 noch nicht empfangen hat (SPI1 überschreibt den Wert den SPI2 schickt - sonst schickt SPI2 den alten Wert und inkrementiert). Was ist genau wäre eigentlich der Unterschied zwischen: A) SPI1 interruptgesteuert (Interrupt nach 8 gelesenen Bits) und B) SPI1 über DMA Kanal (DMA Interrupt nach 8 gelesenen Bits)?
Christian S. schrieb: > Was ist genau wäre eigentlich der Unterschied zwischen: > A) SPI1 interruptgesteuert (Interrupt nach 8 gelesenen Bits) > und > B) SPI1 über DMA Kanal (DMA Interrupt nach 8 gelesenen Bits)? Bei A muss sich die Interrupt Service Routine um das Abholen der Daten an der Quelle und den Transport in das SPI Senderegister kümmern. Bei B braucht's keine ISR, da macht die DMA-Einheit die ganze Arbeit.
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.