-
-
Notifications
You must be signed in to change notification settings - Fork 22
Connecting for Monochrome (rus)
(R)DATA CLK SCLK пины служат для загрузки данных в ДМД модуль. По назначению соответствуют входам сдвигового регистра DATA, CLOCK и LATCH, поскольку работа ДМД тоже основана на сдвиговых регистрах. В модуле DMD_MonoChrome_SPI.h
для передачи данных используются линии MOSI и SCK шины SPI, что обуславливает использование строго определенных пинов для линий DATA и CLK - A7 A5 в случае SPI(1) или PB15 PB13 для SPI(2), соответственно. Пин SCLK можно подключить к любому свободному цифровому пину контроллера.
Несмотря на то, что передача по SPI идет в одну сторону, не следует подключать ничего к пину MISO используемого SPI канала.
OE (Output Enable) – служит для включения и отключения светодиодов. Подавая на этот вход сигнал ШИМ, можно регулировать яркость подсветки. В библиотеке DMD_STM32 для генерации ШИМ используется таймер TIM3, таким образом для OE необходимо использовать один из выходов таймера – пины PB0 или PB1, а так же A6 A7, если канал SPI(1) не задействован.
A B – переключатели. В каждый момент времени питание подается только на четверть панели. Быстро переключаясь между частями, получают эффект полного изображения. Комбинации уровней на пинах А В служат для выбора, какая из 4х частей подсвечивается в данный момент. Для этих пинов можно использовать любые выходы контроллера.
Пин GND достаточно подключить один, они все соединены на плате. Пины, помеченные NC – не используются и могут никуда не подключаться.
Если шлейф между контроллером и первой панелью длиннее 20-30см, рекомендуется использовать конвертер логических уровней между 3.3в и 5в.
Ограничения – нет точного подтверждения, однако не рекомендуется использовать следующие пины: PB3/PB4 (JTAG), PA11/PA12 (USB D+ D-)
Каждая панель имеет входной и выходной разъемы INPUT и OUTPUT, что позволяет соединять их в цепочки. Физически панели могут соединяться только линейно, но логически можно сообщить контроллеру, чтобы он воспринимал цепочку из 6-ти панелей как прямоугольную матрицу 3х2. Для этого служат макросы в начале кода:
#define DISPLAYS_ACROSS 3 // число панелей по горизонтали
#define DISPLAYS_DOWN 2 // и вертикали
Соединение между панелями в прямоугольной матрице может быть выполнено разными способами. Начиная с v0.6 библиотека поддерживает два варианта: CONNECT_NORMAL и CONNECT_ZIGZAG. По умолчанию используется схема NORMAL, в этом варианте вывод изображения на панели самый быстрый.
Вариант ZIGZAG позволяет сделать соединения между панелями более короткими, однако требует дополнительного преобразования изображения и не рекомендуются для динамичных приложений, таких как бегущая строка. Кроме того, учитывайте, что при соединении зигзагом каждый второй ряд панелей оказывается перевернут на 180 градусов, что не подходит для панелей с отражателями над светодиодами.
Для выбора схемы соединения панелей используйте инструкцию:
dmd.setConnectScheme(CONNECT_ZIGZAG);
В этом режиме вход DATA каждой горизонтальной строки панелей соединяется со своим выходом МК. Все прочие линии заводятся параллельно на все горизонтальные строки. Вывод данных на все горизонтали происходит одновременно прямой записью в порт.
Это дает выигрыш в скорости, если ваша матрица содержит много строк по вертикали, однако требует больше оперативной памяти. Пины A B OE SCLK выбираются так же, как для модуля DMD_MonoChrome_SPI.h
. Общий пин CLK и пины DATA для всех горизонталей задаются списком, первым указывается пин CLK, далее пины DATA в порядке от верхней строчки к нижней:
// all those pins must be selected from lower byte of same port!
uint8_t pins[] = { PA5, PA7, PA6 }; // CLK , row1, row 2
//Fire up the DMD object as dmd
DMD_Monochrome_Parallel dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, pins, DISPLAYS_ACROSS, DISPLAYS_DOWN,ENABLE_DUAL_BUFFER);
ВАЖНО! Все пины списка должны располагаться на одном порту МК в его младшем байте, то есть выбираться из диапазонов A0-A7 или B0-B7. Таким образом, максимальное число горизонтальных строк матриц при таком подключении составляет 7. Режим ZIGZAG не поддерживаются
В версии v0.7.0 появилась возможность выбора нижнего или верхнего байта порта для сигналов CLK и DATA. Однако обратите внимание, что все пины этого списка по прежнему должны быть расположены в одном байте. Для выбора пинов в верхней половине порта расскомментируйте настройку USE_UPPER_8BIT в DMD_Config.h.
См. также: Подключение RGB панелей