RGB LED-matriser med STM32 och DMA

för några år sedan, [Frans-Willem] fick några RGB LED-paneler. Tio 32 × 16 paneler är många lysdioder, och att köra alla dessa paneler kräver en tillräckligt kraftfull hårdvara. Han försökte arbeta med ett FPGA-utvecklingsbräda, men det hade inte tillräckligt med minne för 24-bitars färg. Microcontroller du Jour – en Ti Stellaris – kunde inte få mycket mer än 16 bitar färg utan att flimma. Med en massa lysdioder men inget sätt att köra dem, lägger [Frans-Willem] panelerna i en låda någonstans, väntar på den dag de kunde användas till sin fulla kapacitet.

Den här dagen kom när [Frans-Willem] introducerades till STM32-serien av chips med F1 Discovery Board. Medan han försöker hitta några elektroniska leksaker att använda med denna styrelse snubblade han på LED-panelerna och gav dem en mycket mer försök. Resultaten är spektakulära, med 33 bitar av färg, med animationer som strömmas över en router över WiFi.

Panelerna i fråga är HUB75 LED-paneler. I 32 × 8 paneler finns det sex datapinnar – två vardera för varje färg – fyra rad Välj stift och tre styrstift. Row Select Pins Välj vilken rad pixlar som är aktiv vid någon tidpunkt. Cykla genom dem tillräckligt snabbt, och det verkar som om de är på en gång. Kontrollstiften arbetar ganska mycket som kontrollpinnarna i ett skiftregister, med datapinnen fyllning i den uppenbara rollen.

Koden som faktiskt driver LED-lamporna händer på en STM32F4 med hjälp av DMA och FSMC, eller den flexibla statiska minnesregulatorn som finns på chipet. Denna perifera tar hand om de kontrolllinjer som finns i minnet, så när du växlar skrivstrobe kommer chipet att dumpa vad som är på datalinjerna till en viss adress i minnet. Det är ett bra sätt att ta hand om att generera en klocksignal.

För att skicka pixlar till den här skärmdrivrutinen använder [Frans-Willem] den ständigt populära TP-Link WR703N. Han hade ursprungligen planerat att skicka alla pixeldata över USB-porten, men det var för mycket overhead, en USB 1.1 är inte tillräckligt snabb. Det fixades med hjälp av UART på routern med en ny bilist och en omkompilerad version av OpenWrt.

All programvara för att replikera detta projekt är tillgängligt på GitHub, och det finns en bra video som visar vad det färdiga projektet kan göra. Du kan kolla ut det nedan.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post