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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.