STM32F0 - SPI DMA per Timer compare match triggern - nur ein Byte?

OP #4959509
Lesenswert?

Hi!

Ich versuche verzweifelt einen SPI DMA transfer per timer auszulösen.
Ich programmiere mit der libopencm3 und einen STM32F72.

Was ich will ist eigentlich ganz einfach, alle 100ms einen 8 Byte 
transfer starten.
DMA setup funktioniert, wenn ich den SPI transfer manuell trigger sehe 
ich die 8 bytes.

Lasse ich aber nun den Timer1 compare match cc2 den DMA triggern sehe 
ich nur ein byte?!

Grüße,
Simon
OP #4964901
Lesenswert?

Bin inzwischen etwas weitergekommen.
Ich setze beim DMA setup die transferlänge auf 8 Bytes.
Es scheint so als ob jeder compare match genau ein Byte überträgt. Das 
ganze dann 8 mal.
Ich hätte jetzt erwartet dass ein compare match den DMA transfer 
initieiert und der dann erst stoppt wenn <len> bytes übertragen wurden.

Grüße,
Simon
#4964939
Lesenswert?

Ssss S. schrieb:
> Bin inzwischen etwas weitergekommen.
> Ich setze beim DMA setup die transferlänge auf 8 Bytes.
> Es scheint so als ob jeder compare match genau ein Byte überträgt. Das
> ganze dann 8 mal.
> Ich hätte jetzt erwartet dass ein compare match den DMA transfer
> initieiert und der dann erst stoppt wenn <len> bytes übertragen wurden.
>
> Grüße,
> Simon

Jeder compare Match schickt einen Request an die DMA. Die DMA selbst hat 
verschiedene einstellbare Datenbreiten und einen eigenen 16Bit Zähler.
damit kannst du mit einem Compare event 65536 DMA transfers machen.
OP #4965111
Lesenswert?

Das dachte ich auch. Scheint aber aus irgendeinem Grund nicht zu gehen. 
Es wird immer nur ein Byte pro compare match gesendet.
Ist der buffer 0x01 0x02 0x03 ..
sehe ich pro match auch 0x01 0x02 0x03...
Transfer länge steht aber auf 8 byte. Triggere ich per spi tx request 
sendet er auch alle.

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