STM32F103 DMA/Speicherproblem

Gast #3832762
Lesenswert?
• ▲
▼
Hi,

ich versuche gerade die Library von UB für den STM32F4 auf den STM32F1 
zu portieren und hänge irgendwie an der DMA Behandlung. Es ist so das 
über momentan 4 Kanäle an jedem Kanal ein WS2812 LED Strip angeschlossen 
werden sollen und per DMA an den GPIO per PWM ausgegeben werden soll.
Nun folgendes Problem, der Kanal 1 und 2 funktioniert wunderbar, bzw. 
Kanal 1  auf jeden Fall nur die anderen Kanäle haben probleme. Kanal 2 
blinkt bei Eingaben die über das RS232 Interface kommen obwohl das 
eigentlich ja nicht sein dürfte.

Die Arrays welche die Daten für die WS2812 LEDs bereitstellen sind auch 
mit den richtigen Werten gefüllt soll das eigentlich der DMA nur dieses 
Array "rausschieben" müsste, aber irgendwas ist da verquer.

Eventuell hat da ja mal jemand Zeit mal drüberzuschauen ob da irgend ein 
grober Schnitzer drin ist.
Ich musste leider auch für den Kanal 2 einen anderen Timer nehmen 
(Obwohl ich eigentlich nur über einen Timer arbeiten wollte) aber der 
STM32F1xx lässt wohl nur 3 Kanäle von Timern auf dem DMA zu... warum 
auch immer... zumindest sind im Reference Manual im DMA nur immer 3 
Timer Kanäle angegeben.
Vielleicht liege ich da ja aber komplett falsch.

Als Anhang der Quellcode als tar Arschief :)

RS232 Ausgabe des Arrays:
http://pastebin.com/BsaPxe2c

Gruß Michael
Angehängte Dateien:
#3832941
Lesenswert?
• ▲
▼
Hi Michael,

als ich meine 8Kanal Library erstellt habe,
hat bei mir ein anderer Timer zuerst auch nicht funktioniert

ich habe jetzt deinen Quellcode nicht
nach fehlern durchsucht aber probier mal folgendes :

füge mal in der Funktion "p_WS2812_InitTIM()"

vor dem einstellen der OutputCompare Settings dieses hier ein :
1
TIM_OCStructInit(&TIM_OCInitStructure);

damit das ganze dann so aussieht :
1
  ...
2

3
  // deinit
4
  TIM_OCStructInit(&TIM_OCInitStructure);
5

6
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
7
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
8
  TIM_OCInitStructure.TIM_Pulse = 0;
9
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
10

11
  ...

vielleicht es es ja der gleiche Fehler wie bei mir

Gruss Uwe
Gast #3833861
Lesenswert?
• ▲
▼
Hi Uwe,

so ich hab nun mal die Zeile mit eingefügt, aber leider hat sich an der 
Ausgabe nichts getan. Mir ist nun nur aufgefallen das Kanal 3 nun 
zumindest schonmal die richtige Farbe + Anzahl anzeigt allerdings noch 
am flackern ist. Kanal 4 spielt immernoch komplett verrückt der Timer, 
obwohl das selbe OC und TIM Struct. Auf Kanal 4 komm ich nur auf 545 kHz 
statt der benötigten 800 kHz. Ich hab nun nochmal den Quellcode 
durchforstet ob irgendwo nen Fehler ist aber ich konnte nichts finden 
und werde nun mal das Reference Manual Seite für Seite durchgehen ob ich 
was finde.

Gruß Michael

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.