⚙️ ⚙️ ⚙️ Ovladač adresovatelných LED pro stm32f0 ⚙️ ⚙️ ⚙️
Obecně se těší RGB addresovatelné LED velkí oblibě v komunitě kolem Arduino desek. Já ale nechci v žádném případě používat cizí kód. Mám potřebu znát každý řádek kódu, protože jedině to mi umožní řešit jakékoliv problémy v budoucnu.
1️⃣ na webu jsem našel článek s názvem „Tutorial: Control WS2812B leds with STM32“ – jde o plný titulek, je možné článek vyhledat, obsahuje také link na další článek
2️⃣ tento ovladač používá DMA kanál k aktualizace APR registru časovače generujícího PWM
3️⃣ rozhodl jsem se napsat si vlastní verzí založenou na TIM_DMABurst příkladu ze standard peripheral library for stm32f0x (STM32F0xx_StdPeriph_Examples)
Důležité body driveru:
1️⃣ nakonfigurovat TIM1, TIM15, TIM16 nebo TIM17 v případě stm32f051 ke generování PWM na kmitočtu 800 kHz
2️⃣ nakonfigurovat DMA kanál a nastavit cílový registr na TIM_DMABase_CCR3 (v případě OC3 jednotky)
3️⃣ vytvořit pole v paměti reprezentující data – logická 0 je 25 nebo 33% střída, logická 1 je 75 nebi 66% střída, reset je 0% střída
4️⃣ 50 bajtů pro úvodní reset, 24 bajtů na LED, 50 bajtů na závěrečný reset