Gast
#3809591
Hi, ich versuche mit der lightweight WS2812 Library von Tim (https://github.com/cpldcpu/light_ws2812) meine WS2812 LED Strips auf einem STM32F4xx respektive STM32F1xx zum laufen zu bringen, leider bisher ohne erfolg da die Library für LPC's ausgelegt ist. #include "stm32f4xx.h" Ich habe schon versucht es anzupassen, aber da meine Assemblerkenntnisse leider nicht so ausgeprägt sind, vorallem in Inline Assembler, ist es leider nichts geworden ;( Nunmal zum wesentlichen. Ich habe mein STM32F4xx soeit konfiguriert das ich eine System Clock von 32 MHz habe. Dementsprechend habe ich auch die Library angepasst. #define ws2812_cpuclk 32000000 Allerdings ist mir dort direkt, da ich die Output line am DSO haengen habe, das die Frequenz keine 800kHz sind. Also habe ich die ws2812_cpuclk nochmal versucht anzupassen. Bei 28000000 Hz habe ich optimale 800kHz, was aber ja nicht so sein soll denke ich, da die anderen Timings für High und Low dementsprechend "verzogen" sind. Ich habe als Port Set und Clear Register folgende Aenderungen vorgenommen: #define ws2812_port_set ((uint32_t*)&GPIOA->BSRRH) // Address of the data port register to set the pin #define ws2812_port_clr ((uint32_t*)&GPIOA->BSRRL) // Address of the data port register to clear the pin #define ws2812_mask_set GPIO_Pin_6 // Bitmask to set the data out pin #define ws2812_mask_clr GPIO_Pin_6 // Bitmask to clear the data out pin So bekomme ich wie schon geschrieben auch ein Datensignal heraus, allerdings nicht im geforderten WS2812 Muster, desweiteren wird die ws2812_sendarray Funktion nicht beendet und wird unendlich ausgeführt. Vielleicht hat ja jemand schon eine erfolgreiche Umsetzung mit der lightweight ws2812 Library auf einem STM32 gemacht und kann mir eventuell helfen. Gruß Michael