Алексей ВМ 0 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба Добрый день! Надо управлять светодиодным табло с интерфейсом HUB75. Сигналы - RGB, CLK, LE, OE. Хочу прицепить управление к блоку FSMC. Есть ли у кого-нибудь опыт подобного управления? Какой режим FSMC наиболее подходит для данной задачи? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба Я использую PSRAM. Т.к. во внешней памяти находятся адреса других периферийных модулей, то использую маленькую ПЛИС как дешифратор адреса и формирователь сигналов управления. Ширина шины 8 бит, но для матрицы достаточно 6 бит. Два бита лишние и эффективность использования памяти всего 75%. Там (HUB75) еще сложность, что есть некоторые драйвера, которым нужно делать разное число тактов на LE и грузить таким образом слова конфигурации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алексей ВМ 0 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба 6 minutes ago, adnega said: Я использую PSRAM. Спасибо! А входной сигнал NWAIT как использовать? Просто к 1 подтянуть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба 25 минут назад, Алексей ВМ сказал: Спасибо! А входной сигнал NWAIT как использовать? Просто к 1 подтянуть? Я NWAIT не использую. Тайминги задаю жестко через BTR. FSMC_Bank1->BTCR[FSMC_BANK1_BTR] = 0 | (0 << FSMC_BTR_ACCMOD) | (15 << FSMC_BTR_ADDHLD) // 15 | (15 << FSMC_BTR_ADDSET) // 15 | (15 << FSMC_BTR_BUSTURN) // 15 | (0 << FSMC_BTR_CLKDIV) | (15 << FSMC_BTR_DATAST) // 15 | (0 << FSMC_BTR_DATLAT); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алексей ВМ 0 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба А как управляете LE и OE? LE (latch enable) - защелкивание данных строки, должна передаваться в конце записи строки ОЕ (output enable) - отображение строки. Программно рулите? Я пока не могу подобрать аппаратные сигналы FSMC... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба Программно выставляю. У меня под LE нет выделенного пина у МК - положительный импульс формирует ПЛИС при записи по специальному адресу. По другим спецадресам можно взвести данную линию в 0 или 1. Если у вас будет под LE выделенный пин GPIO, то все гораздо легче. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алексей ВМ 0 13 мая, 2019 Опубликовано 13 мая, 2019 (изменено) · Жалоба 9 minutes ago, adnega said: Программно выставляю. Понятно, спасибо. Я подумал, никто не мешает в качестве LE использовать FSMC_Dx, предварительно инициализировав его в массиве данных для передачи. Правда, неизвестно, что на шине данных будет после передачи всей строки. Если последнее значение, то все ок. Изменено 13 мая, 2019 пользователем Алексей ВМ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба Под LE нужно выделить любой GPIO и программно его дергать. FSMC_Dx точно нельзя, т.к. там будет мусор в моменты, когда нет управляющих сигналов. LE нужно управлять один раз за полный кадр, поэтому программное управление допустимо. Я для посылки данных использую DMA и аппаратный таймер. CLK генерируетс аппаратно по сигналам _CS, _WR и диапазона адреса. Если у вас ничего больше не будет на FSMC, то можно использовать только FSMC_WR (вроде, нужно проинвертировать его). У меня на FSMC кроме HUB75/HUB12 еще порты дискретного ввода/вывода, стробы для других типов разъемов, и возможность задействовать внешнюю SRAM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алексей ВМ 0 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба 28 minutes ago, adnega said: CLK генерируетс аппаратно по сигналам _CS, _WR и диапазона адреса. Если у вас ничего больше не будет на FSMC, то можно использовать только FSMC_WR (вроде, нужно проинвертировать его). А почему нельзя использовать аппаратный FSMC_CLK? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба 8 минут назад, Алексей ВМ сказал: А почему нельзя использовать аппаратный FSMC_CLK? Картинка исчерпывающе на этот вопрос отвечает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алексей ВМ 0 13 мая, 2019 Опубликовано 13 мая, 2019 (изменено) · Жалоба Так это же для multiplexed write mode. Изменено 13 мая, 2019 пользователем Алексей ВМ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 мая, 2019 Опубликовано 13 мая, 2019 · Жалоба 6 часов назад, Алексей ВМ сказал: Так это же для multiplexed write mode. Это, скорее, synchronous burst. CLK используется и в nonmultiplexed (см. Table 107). Других диаграмм с CLK в RM не нашел, но по логике для CLK матрицы больше подходит FSMC_NWE, нежели FSMC_CLK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться