WS2812 Ansteuerung mit SPI

Gast #4748650
Ich habe WS2812B LED mit einem LPC1347 per SPI angesteuert. Fertige 
wsDrive von mbed.org, hatte auf Anhieb funktioniert. Dann habe ich das 
Gleiche mit dem LPC812 gemacht, funktioniert nicht. Bei der Fehlersuche 
mit LA viel sofort auf das der MOSI Ruhepegel unterschiedlich ist: beim 
LPC1347 ist er low und die Ansteuerung damit ok, beim LPC812 ist er high 
und das verstehen die LED nicht. Ich habe alle CPOL/CPHA Modi probiert, 
die ändern am MOSI Ruhepegel aber nichts.
Kennt hier jemand die LPC8xx so gut und weiss ob und wie man den MOSI 
Ruhepegel umdrehen kann? Habe dazu im Usermanual nichts finden können.
Angehängte Dateien:
Gast #4748682
Danke, aber CPOL beeinflusst nur den 'rest state of the clock (between 
transfers)'.
Für die LED Ansteuerung wird nur der MOSI verwendet, der SPI Takt auf 
2,4 MHz gestellt und dann wird ein WS2812 bit aus drei SPI bits 
gebildet.
Damit ist das SPI zweckentfremdet, bei 'bestimmungsgemässen' Gebrauch 
ist der Ruhezustand der MOSI Leitung eigentlich egal.
Open drain sind nur PIO0_10 und _11, die verwende ich nicht. Ansonsten 
kann der MOSI auf einen beliebigen anderen IO Pin gelegt werden.
Gast #4749014
habe es hinbekommen. Die Lib benutzt eine BurstSPI Implementierung die 
für SPI write only ist. Das HW SPI im LPC8xx hat wieder neue Features 
und der Treiber hat nach dem Senden ein EOT Flag gesetzt. Das schaltet 
dann das SPI ab. Für 'richtiges' SPI ok, für WS2812 Ansteuerung nix gut.
1
void BurstSPI::fastWrite(int data) {
2
    while (!(_spi.spi->STAT & (1 << 1)));
3

4
    _spi.spi->TXDAT = (data & 0xffff);
5
    // set receive ignore flag
6
    _spi.spi->TXDATCTL |= (1 << 22);
7
}

Jetzt muss ich nur herausfinden warum meine Endlosschleife im main() 
nach 72s zu Ende ist...
Angehängte Dateien:
Gast #4749425
Ja, Danke.
Das passt schon, benötigt aber zusätzlich den SCT timer als Hardware 
Ressource. Da die SPI Variante mit dem LPC1347 sofort gut funktionierte 
dachte ich das geht auf dem kleinen Bruder 8xx genau so gut. Aber trotz 
gleichem Hersteller ist die SPI Unit doch neuer und nur dann kompatibel 
wenn man es richtig macht :-/

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.