Перейти к содержанию
    

STM32F1 FSMC для управления светодиодным табло

Добрый день!

Надо управлять светодиодным табло с интерфейсом HUB75. Сигналы - RGB, CLK, LE, OE. Хочу прицепить управление к блоку FSMC. Есть ли у кого-нибудь опыт подобного управления? Какой режим FSMC наиболее подходит для данной задачи?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я использую PSRAM. Т.к. во внешней памяти находятся адреса других периферийных модулей, то использую маленькую ПЛИС как дешифратор адреса и формирователь сигналов управления. Ширина шины 8 бит, но для матрицы достаточно 6 бит. Два бита лишние и эффективность использования памяти всего 75%. Там (HUB75) еще сложность, что есть некоторые драйвера, которым нужно делать разное число тактов на LE и грузить таким образом слова конфигурации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

6 minutes ago, adnega said:

Я использую PSRAM.

Спасибо! А входной сигнал NWAIT как использовать? Просто к 1 подтянуть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как управляете LE и OE? LE (latch enable) - защелкивание данных строки, должна передаваться в конце записи строки

ОЕ (output enable) - отображение строки. Программно рулите? Я пока не могу подобрать аппаратные сигналы FSMC...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Программно выставляю.

У меня под LE нет выделенного пина у МК - положительный импульс формирует ПЛИС при записи по специальному адресу.

По другим спецадресам можно взвести данную линию в 0 или 1.

Если у вас будет под LE выделенный пин GPIO, то все гораздо легче.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

9 minutes ago, adnega said:

Программно выставляю. 

Понятно, спасибо.

 

Я подумал, никто не мешает в качестве LE использовать FSMC_Dx, предварительно инициализировав его в массиве данных для передачи. Правда, неизвестно, что на шине данных будет после передачи всей строки. Если последнее значение, то все ок.

Изменено пользователем Алексей ВМ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Под LE нужно выделить любой GPIO и программно его дергать.

FSMC_Dx точно нельзя, т.к. там будет мусор в моменты, когда нет управляющих сигналов.

LE нужно управлять один раз за полный кадр, поэтому программное управление допустимо.

Я для посылки данных использую DMA и аппаратный таймер. CLK генерируетс аппаратно по сигналам _CS, _WR и диапазона адреса.

Если у вас ничего больше не будет на FSMC, то можно использовать только FSMC_WR (вроде, нужно проинвертировать его).

У меня на FSMC кроме HUB75/HUB12 еще порты дискретного ввода/вывода, стробы для других типов разъемов, и возможность задействовать внешнюю SRAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 minutes ago, adnega said:

CLK генерируетс аппаратно по сигналам _CS, _WR и диапазона адреса.

Если у вас ничего больше не будет на FSMC, то можно использовать только FSMC_WR (вроде, нужно проинвертировать его).

А почему нельзя использовать аппаратный FSMC_CLK?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, Алексей ВМ сказал:

А почему нельзя использовать аппаратный FSMC_CLK?

image.png.7a9053b4c4050fd769012ba35d103b7b.png

Картинка исчерпывающе на этот вопрос отвечает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так это же для multiplexed write mode.

Изменено пользователем Алексей ВМ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, Алексей ВМ сказал:

Так это же для multiplexed write mode.

Это, скорее, synchronous burst. CLK используется и в nonmultiplexed (см. Table 107).

Других диаграмм с CLK в RM не нашел, но по логике для CLK матрицы больше подходит FSMC_NWE, нежели FSMC_CLK.

image.png.965b3d1ffb7092043cc0082a85e1f565.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...