RGB LED matryce z STM32 i DMA

Kilka lat temu, [Frans-Willem] dostałem kilka paneli LED RGB. Dziesięć 32 × 16 paneli to wiele diod LED, a do napędzania wszystkich tych paneli wymaga wystarczająco silnego sprzętu. Próbował pracować z deską rozwojową FPGA, ale to nie miały wystarczającej ilości pamięci dla koloru 24-bitowego. MicroController du Jour – A Ti Stellaris – nie mógł uzyskać znacznie więcej niż 16 bitów koloru bez migotania. Z wiązką diod LED, ale żaden sposób jeździć, [Frans-Willem] umieścić panele w pudełku gdzieś, czekając na dzień, w którym mogliby być wykorzystani do pełnej zdolności.

Ten dzień przyszedł, gdy [Frans-Willem] został wprowadzony do serii frytek STM32 z deską Discovery F1. Próbując znaleźć niektóre elektroniczne odtwarzanie do użycia z tą planszą, natknął się na panele LED i dał im o wiele więcej prób. Wyniki są spektakularne, z 33 bitami koloru, a animacje strumieniowe nad routerem przez WiFi.

Panele omawiane są panele LED HUB75. W panelach 32 × 8 znajduje się sześć pinów danych – dwa dla każdego koloru – cztery rzędowe kołki i trzy szpilki sterujące. Wiersz Wybierz piny Wybierz, który wiersz pikseli jest aktywny w dowolnym momencie. Przejdź przez nich wystarczająco szybko, i wydaje się, że wszyscy są na raz. Szpilki sterujące działają prawie jak kołki sterujące rejestru przesuwnego, z napełnieniem pinów danych w oczywistych rolach.

Kod, który faktycznie napędza diody LED dzieje się na STM32F4 za pomocą DMA i FSMC, lub elastycznego sterownika pamięci statycznej znalezionej na chipie. Ten peryfelny zajmuje się liniami sterującymi znalezionymi w pamięci, więc po przełączeniu stroboskopu zapisu Chip zrzuci wszystko, co znajduje się na liniach danych na określony adres w pamięci. To świetny sposób, aby zadbać o generowanie sygnału zegara.

W przypadku wysyłania pikseli do tego sterownika wyświetlacza [Frans-Willem] używa inkoperacyjnego TP-Link WR703N. Pierwotnie planował wysłać wszystkie dane pikseli w porcie USB, ale było za dużo nad głową, USB 1.1 nie jest wystarczająco szybki. To zostało naprawione za pomocą UART na routerze z nowym kierowakiem i rekompilizowaną wersją OpenWRT.

Wszystkie oprogramowanie do replikacji tego projektu jest dostępne na GitHub, a jest świetny film pokazujący, co może zrobić wypełniony projekt. Możesz to sprawdzić poniżej.