STM32F407: SPI DMA stürzt ab

Hallo Gruppe,

ich habe ein seltsames Problem mit dem DMA auf einem Cortex-M4, dem

Das funktioniert soweit wunderbar, nach Setup starte ich den Transfer:

DMA_Cmd(DMAy_Streamx_TX, ENABLE); DMA_Cmd(DMAy_Streamx_RX, ENABLE); SPI_I2S_DMACmd(SPIx, SPI_I2S_DMAReq_Tx | SPI_I2S_DMAReq_Rx, ENABLE);

den Stream DISABLEn sowie via SPI_I2S_DMACmd dem SPI mitteilen, dass er

disabled sind.

Wenn ich aber jetzt das System unter Last gebe (z.B. viel auf dem RS232

DMA ab: Der Stream5 (MOSI, also TX) ISR bekommt noch ordentlich seinen TC IRQ, aber der Stream2 (MISO, also RX) bleibt einfach enabled und

Aber es passiert einfach nichts mehr.

Da ich den DMA Transfer nur dann starte, wenn beide Streams aus sind,

Wenn jemand einen guten Tipp hat, ich bin ganz Ohr und sehr dankbar :-)

Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? 


Kosmologen: Die Geheim-Vorhersage.
Reply to
Johannes Bauer
Loading thread data ...

was nicht mehr richtig, wenn viel auf RS232 los ist. Geht in CubeMX alles per Mausklick.

schneller abgearbeitet wird. Damit der dabei nicht zu sehr das System blockiert, ist es auch sinnvoll, "Use FIFO" anzuklicken, was aber auch

ist eine gute Wahl dabei).

sein, also APB1 und APB2? Hast du die in der Clock Konfiguration mit demselben Takt laufen?

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Sappalott, in der Tat!

Ich hatte meinen NVIC eh schon so konfiguriert, dass ich nur Preemption Priority verwende, und Sub Priority 0 Bits bekommt -- aber alle ISRs momentan auf Prio 15. Kaum den Stream2/Stream5 DMA angehoben in der Prio, Problem weg. Krass.

Habe gerade versucht mir das aufzumalen, weil ich dachte, das Problem zu sehen -- aber jetzt verstehe ich es doch wieder nicht. TXE im SPI triggert den TX-Transfer (Mem to Peripheral). Sobald das Byte raus (und rein) geclockt ist, wird RXNE und triggert den RX-Transfer (Peripheral to Memory).

nie zuende getriggert.

Hmmmm, ich muss mir das morgen noch mal im Detail ansehen. Finde ich

immer so ein Damoklesschwert. Und eigentlich ist der Ablauf ja voll durchgesteuert (der Transfer sollte stallen, wenn ich nicht schnell genug bin, die "Transfer Completes" abzuhaken).

Hmmm, habe ich bisher nicht benutzt, das FIFO, sondern Direct Mode. Schadet aber glaube ich nicht, und dann werden die Transfers auch effizienter (weil der sich die, wenn ich das richtig sehe, dann Wordweise abholt und ins SPI byteweise reinschiebt, statt beides Bytewise zu machen).

CubeMX habe ich hier auch nicht, ich bin immer ein bisschen skeptisch vor den UIs. Mache das von Hand, nutze aber die ST Standard Peripheral

Buildsystem und Debugger alles lokal gebaut und 100% OSS. Klingt aber in

seh ich mir das wirklich mal an.

erstmal einen Film schauen und morgen geh ich der Sache dann auf den Grund :-)

Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? 


Kosmologen: Die Geheim-Vorhersage.
Reply to
Johannes Bauer

Prima. Sieht ja interessant aus dein Github-Projekt (

formatting link
). Hast du da ein Foto von deinem Flightpanel? Gibt ja Leute, die bauen sich ein komplettes Flugzeug Cockpit im Keller nach, mit dutzenden von Monitoren usw. :-)

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Ganz so schlimm isses bei mir nicht, aber ordentlichen Joystick, Rudder

ordentlichen Simmen :-)

Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? 


Kosmologen: Die Geheim-Vorhersage.
Reply to
Johannes Bauer

Bildschirm ( touchscreen ? ):

formatting link

Weisse Tasten mit Plexiglaskappe einzeln und in vielen

formatting link

MfG JRD

Reply to
Rafael Deliano

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.