Gast
#3284314
Hallo zusammen, ich kämpfe hier recht verzweifelt mit den STM32F4 herum und benötige gerade wieder zwei kleine Hilfestellungen. Zum einen möchte ich bei einem DMA 2 Interrupts aktivieren. Genauer geht es um den DMA2 channel6 stream2. Von dem benötige ich den Half-Transmit- und Full-Transmit-Interrupt und verzweifle bei der Namensuche. Häufig finde ich dann Konstrukte wie
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
die mich dann vollends verwirren, denn wenn schon ein Interrupt ausgelöst wurde, warum dann noch der Check in Software? Das macht für mich keinen Sinn! Und auch wenn ich aus dem Namen des Interrupts auf den gesuchten Namen schließen könnte, es muss doch ein Dokument geben, in dem diese Bezeichungen niedergeschrieben sind?! Man kann doch nicht jeden Interrupt-Namen erraten müssen? Und zu meinem 2. Problem: Wenn der DMA alle Daten übertragen hat soll er gestoppt und wieder auf null gestellt werden. Das Problem dabei ist, dass der DMA möglicherweise auch alle Daten übertragen haben kann wenn er garade bei der Hälfte seines Puffers angekommen ist. Zur Verdeutlichung das Bild im Anhang. Die Daten liegen im Speicher und werden von dort in einem Interrupt konvertiert (dabei wird aus einem Byte acht Byte, daher die späte Konvertierung) und in den Puffer des DMA geladen (jenachdem welcher Interrupt natürlich auch nur die entsprechende Hälfte des Puffers). Jetzt kann es aber sein, dass alle Daten übertragen wurden und der DMA gerade beim Half-Transmit angekommen ist. wenn ich nun an dieser Stelle stoppen würde, dann würde beim nächsten Start wohl erst die 2.Hälfte des Puffers übertragen und danach erst die erste Hälfte. Die Daten die vor dem Neustart des DMA aber in dessen Puffer laden möchte sind aber so formatiert, dass der DMA auch mit der ersten Hälfte beginnen soll. Nun frage ich mich, ob der DMA für diesen Neustart wirklich (wie so oft im Internet behauptet wird) komplett deinitialisiert und dann neu initialisiert werden muss. Weiß hier jemand Rat? Vielen Dank Grüße Michaela
