RGB Светодиодные матрицы с STM32 и DMA

несколько лет назад [Frans-Willem] получил несколько светодиодных панелей RGB. Десять 32 × 16 панелей – это много светодиодов, а для вождения всех этих панелей требует некоторого достаточно мощного оборудования. Он пытался работать с доской разработки FPGA, но у этого не было достаточно памяти для 24-битного цвета. Микроконтроллер Дю Жур – Ti Stellaris – не мог получить намного более 16 битов цвета без мерцаний. С кучкой светодиодов, но никакого способа привлекать их, [Frans-Willem] поставить панели в коробку где-то, ожидая дня, когда их можно использовать для их полной мощности.

Этот день пришел, когда [Frans-Willem] был введен в серию стружки STM32 с доской открытия F1. При попытке найти некоторые электронные игрусы, чтобы использовать с этой доской, он наткнулся на светодиодные панели и дал им еще одну попыток. Результаты впечатляют, с 33 битами цвета, а анимации потокота по маршрутизатору по Wi-Fi.

Рассматриваемые панелями являются светодиодные панели HUB75. В панелях 32 × 8 есть шесть контактов данных – два каждого для каждого цвета – четыре ряда выбирают контакты, а три управляющих. Строка выбирают контакты, выберите, какая строка пикселей активна в любое время. Цикл через них достаточно быстро, и кажется, что они все сразу. Контрольные контакты работают в значительной степени похоже на контрольные контакты сдвигаемого регистра, с заполнением виновных данных в очевидной роли.

Код, который фактически управляет светодиодами, все происходит на STM32F4 с помощью DMA и FSMC, или гибкий статический контроллер памяти, который нашел на чипе. Этот периферийные устройства позаботится о том, чтобы контрольные линии, обнаруженные в памяти, поэтому, когда вы переключаетесь в систему записи STROBE, чип будет выбросить все, что находится на линии данных на определенный адрес в памяти. Это отличный способ позаботиться о генерации часов.

Для отправки пикселей на этот драйвер дисплея [Frans-Willem] использует постоянно популярную TP-Link WR703N. Первоначально он планировал отправить все данные пикселей на USB-порт, но был слишком много накладных расходов, USB 1.1 не достаточно быстро. Это было зафиксировано с помощью UART на маршрутизаторе с новым автомобилистом и перекомпилированной версией OpenWRT.

Все программное обеспечение для репликации этого проекта доступно на GitHub, и есть отличное видео, показывающее, что может сделать завершенный проект. Вы можете проверить это ниже.