GPIO-Port via DMA-Transfer setzen

Gast #2847051
Lesenswert?
• ▲
▼
Hallo zusammen,

ich beschäftige mich momentan mit den Möglichkeiten der DMA-Komponente 
im STM32F407 (STM32F4Discovery).

Hierbei möchte ich eine sich ständig wiederholende Sequenz von Outputs 
auf einem GPIO-Port generieren, wobei die CPU möglichst wenig belastet 
werden soll. Die Sequenz soll mit maximal möglicher Geschwindigkeit 
ablaufen.

Ich stelle mir den Ablauf so vor:

- Die Sequenz liegt als Array von 32bit Werten im Speicher, wobei die 
unteren 16bit jedes Wertes den Registerbereich "BSRRL" und die oberen 
16bit den Registerbreich "BSRRH" repräsentieren. (Das BSRR-Register 
dient dem Setzen/Rücksetzen der GPIO-Pins (untere 16bit für Setzen & 
obere 16bit für Rücksetzen.))

- Per DMA wird nun Wert für Wert aus dem Array transferiert und 
nacheinander das BSRR-Register entsprechend gesetzt. Auf diese Weise 
ergibt sich eine Sequenz von Ausgangswerten am GPIO-Port.

Meine Fragen:
-------------

- Ist sowas prinzipiell möglich? Auf Seite 164/165 des Reference-Manuals 
ist das "DMA request mapping" einsehbar. Dort konnte ich jedoch keinen 
GPIO-Port als Peripherie finden.

Hier der Link zum Ref.Man.:
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/REFERENCE_MANUAL/DM00031020.pdf

- Darüber hinaus bietet das DMA2-Modul noch die Möglichkeit des Memory 
to Memory Transfers. Könnte man mit dieser Möglichkeit arbeiten? Leider 
bietet dieser Modus keinen Circular-Mode.

Vielleicht hat jemand sowas auch schonmal umgesetzt und kann mir 
Denkanstöße geben? Mir würde auch schon das eine oder andere 
zielführende Stichwort sehr helfen.

Viele Grüße und Danke!
DMA-Anfänger ;-)
Gast #2873284
Lesenswert?
• ▲
▼
Hallo zusammen,

zwischenzeitlich habe ich ein kleines Projekt zum laufen bekommen, 
welches Portpins via DMA sequenzartig schalten kann. Hierbei triggert 
ein Timer den DMA, welcher dann das ODR-Register des Ports beschreibt.

Falls jemand zufällig auf diesen Thread stößt und ein ähnliches 
"Problem" hat, habe ich das Coocox Projekt in den Anhang getan. Das 
Beispiel lässt sich natürlich auch leicht abändern.

Gruß
Dma-Anfänger
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.