Hallo liebe Leute, ich bin grade am verzweifeln. Ich habe einen SK9822 LED-Stripe mit 264 LEDs an einem ESP8266 mit µpython. Dazu habe ich mir für den ESP8266 eine Python-Bibliothek (siehe Anhang)für das Hardware SPI geschrieben. Das ansteuern, Farben und Helligkeit setzen funktioniert auch soweit. Ich habe nur ein seltsames Problem: Wenn ich meinen Buffer mit den 4 Start-Bytes, 1056 Daten-Bytes und 4 End-Bytes auf die SPI schreibe, dann bleiben die letzten 4 LEDs dunkel/ändern die Farbe nicht. Im Buffer steht aber alles drin und auch an der richtigen Stelle. Wenn ich jetzt den selben Buffer nochmal ohne Veränderung auf die SPI schreibe, ändern sich die 4 LEDs. Wird der Buffer zwischen den beiden SPI-Schreibvorgängen geändert und dann wieder rausgeschrieben, so ändern sich die ersten 260 LEDs und die 4 Letzten bleiben erstmal gleich. Ändere ich den Buffer jetzt wieder (andere Farbe), scheibe ihn auf die SPI, so ändern sich 260 LEDs und die 4 Letzten erhalten den Zustand des Buffers davor. Ich habe die LEDs schon 2x ausgezählt, alle Eckpunkte an der Installation passen. Was auch sehr komisch ist: Wenn ich die Gesamtzahl der LEDs in der Programmierung auf 265, 266, etc erhöhe, wandert das Verhalten weg, sodass bei 268 "eingestellten" LEDs alle richtig funktionieren. Im Datenblatt habe ich nichts davon gelesen, dass es "puffer" oder sowas geben muss, damit das mit dem Schieben richtig funktioniert. Hatte schonmal jemand ein solches Verhalten? Ich habe noch einen kurzen Streifen mit 35 LEDs, den ich zum testen nehme, da habe ich das Problem nicht. Kann das was mit der Länge zu tun haben und dass vllt. CI und DI noch terminiert werden müssen oder so? Alex
Ich bin nicht 100%ig sicher, ob das hier das gleiche Problem ist was da diskutiert wird: https://cpldcpu.wordpress.com/2016/12/13/sk9822-a-clone-of-the-apa102/ Aber vielleicht kannst Du damit etwas anfangen. Viele Grüße, Simon
OK, wenn ich das richtig verstanden habe, ist das Datenblatt des SK9822 mit dem Frame-Diagramm erstmal falsch(Copy&Paste-Chinese), das Protokoll ist etwas anders. Somit müsste ich 32*0, dann die 264*4 Datenbytes , dann nochmal 32*0 und dann den Endframe. Was ich jetzt nicht verstehe, im APA102 DB seht 31*1 für den Endframe, im Blog wird aber was von n/2 *0 geschrieben. Bleibt wohl nur Probieren übrig. Hat vllt. einer eine funktionierende SK9822 lib in Python rumliegen ;)? Wenns geht, melde ich mich wieder. Alex Edit: So also für alle die das Problem auch mal haben: 4*0 + 4* Anzahl LEDs + 4*0 + (Anzahl LEDs + 15) // 16 als Formel für den Frame funktioniert.
:
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.