Gast
#2847051
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 ;-)