STM3F4 Bitstream erzeugen

Gast #3418335
Lesenswert?

Hallo Leute

Ich würd gern eine bitstream erzeugen mit Daten die ich im Speicher 
hinterlege. Eine Datenrate von 10kHz erreichen soll erreicht werden.

Meine Idee bisher ist:

Eine Timer erzeugen der all 0.1 ms einen Interrupt erzeugt.
In der Interruptroutine wollte ich einen Vektor auf die Daten
hochzählen und die bits einzeln maskieren und an die GPIO ausgeben.

Ist wahrscheinlich eine Lösung bei der sich vielen hier die Nackenhaare 
aufstellen.

Wie würdet ihr so was Lösen?

Grüße Martin
Gast #3418350
Lesenswert?

Wenns nicht unbedingt genau so sein muss die UART verwenden - ist auch 
nen bitstream.  Vllt. Kann man auch startbit und stoppbit irgendwie 
ausschalten. Sonst nach softwarenuart suchen und Start und Stoppbit 
einfach weglassen.

Moritz
Gast #3418371
Lesenswert?

Martin1234 schrieb:
> Eine Timer erzeugen der all 0.1 ms einen Interrupt erzeugt.
> In der Interruptroutine wollte ich einen Vektor auf die Daten
> hochzählen und die bits einzeln maskieren und an die GPIO ausgeben.

Hallo Martin,

das geht auch mir der DMA ganz gut.
Brauchst eine Timer der zyklich abläuft, den DMA anstößt und der kopiert 
das bit ins Portregister. Geeineten Port vorausgesetzt (da kannst Du ja 
nur 8 bit reinpacken).
Geht dann völlig in HW ohne SW.

rgds
Gast #3419507
Lesenswert?

Danke für die schnelle Antwort,

Ich hab mir mal die DMA sache näher angeschaut und find das ganz 
ansrechend. Hatte da noch ein Beispiel rumliegen und gleich ausprobiert.
Geht einwandfrei nur eine Sache stört mich.

Wenn ich mit dem DMA auf den Port schreibe, wie im angehängten Beispiel 
gezeigt benötige ich ein byte um nur 1 oder 0 zu schreiben.

Kann ich den DMA auch Bitweise hochzählen lassen.(finde nur optionen 
für)

-DMA_PeripheralDataSize_Byte
-DMA_PeripheralDataSize_HalfWord
-DMA_PeripheralDataSize_Word

Wenn ich meinen Bitmuster speichern will mit dem Beispiel benötige ich 
8x mehr Speicherplatz(alles aber nicht schön)

Grüße Martin
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren