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 ;-)
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
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.