Forum: Mikrocontroller und Digitale Elektronik STM32 DMA request von Timer


von A. F. (elagil)


Lesenswert?

Hallo!

Ich benutze einen STM32F7 und möchte folgendes Verhalten erzielen:

Ein externer ADC wird vom STM32 getaktet und legt parallel 16 bit an 
einen GPIO Port an. Ich möchte die Daten vom Port F mittels DMA in ein 
Speichersegment schreiben. Der DMA request soll von einem Timer (TIM8) 
ausgelöst werden. Dieser Timer läuft derzeit im PWM Modus einwandfrei.

Ich gerade mit CubeMX, um die Initialisierung vorzunehmen. Dort wurde 
auch der DMA request (DMA2, stream 2, peripheral to memory) ausgewählt. 
Die GPIO Pins sind als Eingänge konfiguriert und es liegen die 
gewünschten Daten an.

Mein Problem ist, dass der DMA request scheinbar nicht ausgelöst wird. 
Das S2NDTR Register steht immer auf 0x20 und zählt nicht herunter 
(s.u.). Welche Schritte sind notwendig, damit der TIM8 bei jedem Update 
ein DMA request sendet?

Mir ist aufgefallen, dass im TIM8_DIER Register nichts gesetzt ist, z.B. 
TDE. Ist das notwendig? Manuelles setzen hat nicht geholfen.

Starten der Timer und DMA:
1
// ...
2
  MX_GPIO_Init();
3
  MX_DMA_Init();
4
  MX_TIM8_Init();
5
6
  uint32_t dma_arr[32];
7
  for(uint32_t k = 0; k<32; k++) {
8
    dma_arr[k] = 0;
9
  }
10
11
  HAL_DMA_Start_IT(&hdma_tim8_ch1,(uint32_t)&(GPIOF->IDR),(uint32_t)dma_arr,32);
12
  HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1);
13
// ...

Die Initialisierungen kann ich gern noch anhängen, ich vermute aber ein 
Problem im logischen Vorgehen.

Vielen Dank im Voraus!

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.