RGB LED-matriser med STM32 og DMA


For noen år siden fikk [Frans-Willem] noen få RGB LED-paneler. Ti 32 × 16 paneler er mange lysdioder, og å kjøre alle disse panelene krever litt tilstrekkelig kraftig maskinvare. Han prøvde å jobbe med et FPGA-utviklingsbrett, men det hadde ikke nok minne til 24-biters farge. Microcontroller du jour – en Ti Stellaris – kunne ikke få mye mer enn 16 biter av farge uten å flimrende. Med en haug med lysdioder, men ingen måte å kjøre dem, legges [Frans-Willem] panelene i en boks et sted, venter på dagen de kunne brukes til sin fulle kapasitet.

Denne dagen kom da [Frans-Willem] ble introdusert til STM32-serien av sjetonger med F1 Discovery Board. Mens han prøver å finne noen elektroniske leketøy å bruke med dette brettet, snublet han på LED-panelene og ga dem en mye mer prøve. Resultatene er spektakulære, med 33 biter av farge, med animasjoner streamet over en ruter over WiFi.

Panelene i spørsmålet er Hub75 LED-paneler. I de 32 × 8 panelene er det seks datapinner – to hver for hver farge – fire rad velger pinner og tre kontrollpinner. Raden velg Pins velger hvilken rad piksler som er aktive på en gang. Sykle gjennom dem raskt nok, og det vil virke som om de alle på en gang. Kontrollpinnene fungerer ganske mye som kontrollpinnene til et skiftregister, med datapinnene som fyller i den tydelige rollen.

Koden som faktisk driver LEDene, skjer alt på en STM32F4 ved hjelp av DMA og FSMC, eller den fleksible statiske minnekontrolleren som finnes på brikken. Denne periferien tar vare på kontrolllinjene som er funnet i minnet, så når du veksler skrive strobe, vil brikken dumpe hva som er på datalinjene til en bestemt adresse i minnet. Det er en fin måte å ta vare på å generere et klokke signal.

For å sende piksler til denne skjermdriveren, bruker [Frans-Willem] den stadig populære TP-Link WR703N. Han hadde opprinnelig planlagt å sende alle pikseldataene over USB-porten, men det var for mye overhead, en USB 1.1 er ikke rask nok. Det ble løst ved å bruke UART på ruteren med en ny bilist og en rekompilert versjon av Openwrt.

All programvare for å replikere dette prosjektet er tilgjengelig på Github, og det er en flott video som viser hva det gjennomførte prosjektet kan gjøre. Du kan sjekke det nedenfor.

Leave a Reply

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