Forum: Mikrocontroller und Digitale Elektronik stm32 - dma speicherziel ändern


von stef b. (joe_)


Lesenswert?

ich lese mit über den adc einen wert über dma in ein Array DMA[100] an 
die Adresse &DMA[0] ein. wie bekomme ich es hin, dass der der nächste 
adc wert an der Adresse von &DMA[1] steht?

über "memory increment mode" geht dies nämlich nur, wenn man z.B. direkt 
mehrere Kanäle des ADC liest.

von Jan H. (jan_h74) Flattr this


Lesenswert?

Das geht problemlos ueber "increment", auch wen sie nur 1 ADC Kanal habe 
:
1
  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_CDR_Address;
2
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC_Dual;
3
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
4
  DMA_InitStructure.DMA_BufferSize = 24;
5
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
6
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
7
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
8
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
9
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
10
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
11
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
12
  DMA_Init(DMA1_Channel1, &DMA_InitStructure);
HIer werden 24 Werten in array gespeichert, anzahl ADC-Kanalen kan 1 bis 
x sein. Bei 1 Kanal werden 24 (neue) Messwerte von das gleiche ADC Kanal 
gespeichert.

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.