Forum: Mikrocontroller und Digitale Elektronik arbitrary Signal mit DMA und timer STM32


von Samuel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,


Ich versuche, eine beliebige Wellenform zu erzeugen. Aber es 
funktioniert trotzdem nicht. Ich denke es liegt an der Konfiguration mit 
Cubemx. Ich habe ein Array von 6 für 2 Signalform erstellt, die an 
TIM1-Kanal 1 gesendet werden sollen (TIM1_ARR, TIM1_RCR, TIM1_CCR1).


uint32_t aSRC_Buffer [6] = {2000,1,800,3000,2,200}; /// ARR, RCR, CCR1 x 
2. Aber leider bekomme ich nur 3,3 V an der PIN.


  /* USER CODE BEGIN 2 */
//HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
HAL_TIM_DMABurst_WriteStart(&htim1,TIM_DMABASE_ARR, TIM_DMA_TRIGGER,
(uint32_t *)aSRC_Buffer, TIM_DMABURSTLENGTH_3TRANSFERS);
  /* USER CODE END 2 */

Hinweis: das ist ein neues Thread vom Thema GPIO- Geschwindigkeit. 
Vielen Dank im Voraus.

von m.n. (Gast)


Lesenswert?

Samuel schrieb:
> Ich versuche, eine beliebige Wellenform zu erzeugen. Aber es
> funktioniert trotzdem nicht. Ich denke es liegt an der Konfiguration mit
> Cubemx.

Du bist ein echter Optimist: irgendetwas in diesem CubeMX Programm 
zusammenzuklicken und zu hoffen, daß es genau das macht, was man möchte.
Das hätte ich auch gerne, aber ich verstehe nicht einmal, was man da 
alles für komische Sachen auswählen kann.

Jetzt ist bei Dir wohl der Zeitpunkt gekommen, das Referenz-Handbuch zu 
nehmen und zu sehen, wie wo was eingestellt werden muß. Fange an, einen 
Timer überhaupt einmal laufen zu lassen. Danach kannst Du PWM erzeugen 
und versuchen, diese zu variieren. Schritt für Schritt.
Ja, man muß viel lesen und es auch begreifen, aber anders wird das 
nichts!

von Samuel (Gast)


Lesenswert?

m.n. schrieb:

> Du bist ein echter Optimist: irgendetwas in diesem CubeMX Programm
> zusammenzuklicken und zu hoffen, daß es genau das macht, was man möchte.
> Das hätte ich auch gerne, aber ich verstehe nicht einmal, was man da
> alles für komische Sachen auswählen kann.
>  Fange an, einen

also ich habe nicht irgendetwas zusammengekiklickt wie du behauptest. 
sondern Timer mit DMA und nach dem Durchlauf des Timers wwerden die 
neuen Werte an TIM1 gesendet.


> Timer überhaupt einmal laufen zu lassen. Danach kannst Du PWM erzeugen und 
versuchen, diese zu variieren. Schritt für Schritt.

Timer laufenzulassen sowie PWM-Siganl zu erzeugen habe ich schon 
gemacht.

Gruß

von m.n. (Gast)


Lesenswert?

Samuel schrieb:
> also ich habe nicht irgendetwas zusammengekiklickt wie du behauptest.
> sondern Timer mit DMA und nach dem Durchlauf des Timers wwerden die
> neuen Werte an TIM1 gesendet.

Schön, daß es funktioniert!

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.