-
-
Notifications
You must be signed in to change notification settings - Fork 22
Home
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
A B – переключатели. В каждый момент времени питание подается только на четверть панели. Быстро переключаясь между частями, получают эффект полного изображения. Комбинации уровней на пинах А В служат для выбора, какая из 4х частей подсвечивается в данный момент. Для этих пинов можно использовать любые выходы контроллера.
Пины, помеченные NC – не используются и могут никуда не подключаться. Пин GND достаточно подключить один, они все соединены на плате. Если шлейф между контроллером и первой панелью длиннее 20-30см, рекомендуется использовать конвертер логических уровней между 3.3в и 5в.
Ограничения – нет точного подтверждения, однако не рекомендуется использовать следующие пины
Каждая панель имеет входной и выходной разъемы INPUT OUTPUT, что позволяет соединять их в цепочки. Физически панели могут соединяться только линейно, но логически можно сообщить контроллеру, чтобы он воспринимал цепочку из 6-ти панелей как прямоугольную матрицу 3х2. Для этого служат макросы в начале кода:
#define DISPLAYS_ACROSS 3 // число панелей по горизонтали
#define DISPLAYS_DOWN 2 // и вертикали
Соединение между панелями в прямоугольной матрице может быть выполнено разными способами. Начиная с v0.6 библиотека поддерживает три варианта. По умолчанию используется схема NORMAL, в этом варианте вывод изображения на панели самый быстрый. Два других варианта позволяют сделать соединения между панелями более короткими, однако требуют дополнительного преобразования изображения и не рекомендуются для динамичных приложений, таких как бегущая строка. Для выбора схемы соединения панелей используйте инструкцию:
dmd.setConnectScheme(NORMAL);
В этом режиме вход 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 ROTATE не поддерживаются