Forum: Mikrocontroller und Digitale Elektronik STM32F4 DMA verhalten bei unterschiedlichen Datenmengen


von Marco (Gast)


Lesenswert?

Hallo,

ich will mit dem DCMI Interface Daten abfischen und über DMA ablegen.
V & H Sync sind parallel geschaltet.
Im Normalfall kommen pro Übertragung 640Byte an.
Aber im Fehlerfall weniger.

Die verhält sich nun der DMA wenn ich im Fehlerfall weniger Daten 
ankommen?

Kommt dann trotzdem ein Interrupt vom DMA?
Merke ich überhaupt das weniger Daten angekommen sind?
Und kann ich dann entsprechend reagieren?

Grüsse, Marco

von (prx) A. K. (prx)


Lesenswert?

Vom DMA kriegst du nur einen Interrupt, wenn dessen Zähler abgelaufen 
ist. Aber wenn ich das richtig verstehe (nie was von DCMI gehört und das 
was Wikipedia dazu auswirft passt nicht so ganz), dann hast du 
Sync-Signale, die deine Übertragungen trennen. Und die sollten sich in 
Interrupts ummünzen lassen.

von Marco (Gast)


Lesenswert?

DCMI ist das Kammerainterface.

Das ERROR Flag habe ich und könnte ich auf einen INT legen.
Wobei ich das Frameende mit Sicherheit auch intern auf einen Interrupt 
legen kann und nicht über die Externeleitung gehen muss.

Aber dann muss ich irgendwie sicherstellen das im Normalfall alles 
eingelesen wird.

Hatte gehofft das bei einem Frameende der DMA sich meldet, egal wie viel 
der drin hat und ich dann abfragen kann ob alles drin ist.

von (prx) A. K. (prx)


Lesenswert?

Ein DMA Controller ist ein generisches Gebilde, das in gleicher Weise 
diverse verschiedene I/O-Module bedienen kann. Aufgrund welcher Magie 
sollte der wissen, dass keine Daten kommen, wenn der Zähler noch Luft 
hat? Ist bei DMA nicht vorgesehen, mehr als das Request-Signal gibts 
zwischen DCMI und DMA nicht.

Das DCMI hingegen weiss es und hat eine Handvoll möglicher Interrupts. 
Also wo ist das Problem?

von Marco (Gast)


Lesenswert?

Probleme gibt es keine wirklichen, es wäre halt nur schön gewesen wenn 
alles mit dem DMA alleine gehen würde.
Besonders da ich auch mit einem double-buffer arbeiten muss.

Aber da es anscheinend nicht geht, muss ich halt mehrere Interrupts 
abarbeiten.

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
Noch kein Account? Hier anmelden.