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

FSMC: можно ли (и как) обойти ограничение

Всем доброго времени суток.

Имеется в наличии черный stm32f407ze с IC RAM IS62WV51216BLL, подключена с помощью FSMC. TFT дисплей 3,5 дюйма тоже подключен через FSMC. В IC RAM буфер данных для дисплея размерностью 320х480 16-разрядных слов. (153600х2 = 307200 байт) в памяти микроконтроллера не помещается. И тут засада - FSMC в может работать только с одним внешним устройством (RM0090). А если  выбор дисплея посадить на землю, читать данные из IC RAM, т.е. они выставляются на D0...D15 и дергать запись в TFT? Может кто-нить подскажет?

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


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

Где вы прочитали, что только с одним внешним устройством ?

Вот цитата из RM0090

Quote

Bank 1 used to address up to 4 NOR Flash or PSRAM memory devices. This bank is
split into 4 NOR/PSRAM subbanks with 4 dedicated Chip Selects, as follows:
– Bank 1 - NOR/PSRAM 1
– Bank 1 - NOR/PSRAM 2
– Bank 1 - NOR/PSRAM 3
– Bank 1 - NOR/PSRAM 4

 

Вешайте ваш SRAM и TFT на разные CS ( NE[x] -  FSMC_NE[x]) и будет вам счастье ;-)

 

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


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

FSMC может работать ТОЛЬКО с одним устройством в каждый момент времени, которое выбирается NE[x]. FSMC не может выставить 2 и более сигнала NE[x] одновременно. Как-то так.

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


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

1 hour ago, mihlit1 said:

FSMC может работать ТОЛЬКО с одним устройством в каждый момент времени, которое выбирается NE[x]. FSMC не может выставить 2 и более сигнала NE[x] одновременно. Как-то так.

Как разработчики могут предусмотреть, какие внешние по отношению к процессору девайсы Вы пожелаете "подружить" ?

Возможно DMA через DMA-узел процессора (2 раза, а может и один) есть то что Вам подойдет.

 

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


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

1 час назад, mihlit1 сказал:

FSMC может работать ТОЛЬКО с одним устройством в каждый момент времени, которое выбирается NE[x]. FSMC не может выставить 2 и более сигнала NE[x] одновременно. Как-то так.

Так все правильно. Интересно, как вы себе представляете работу одной шины сразу с двумя разными устройствами?? Испокон веков процессорная шина обращалась с помощью дешифратора адреса, или доп. выходы CS и т.п. И это нисколь не ограничивает использование нескольких устройств на шине, а если это не работает, то тут скорей вопрос к программисту...

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


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

Полазил по форумам. Есть  другой путь решения проблемы - DMA memory to memory. Прошу снисходительно отнестись к моему нубскому вопросу, как говорится "я еще только учусь".

1 минуту назад, mantech сказал:

Так все правильно. Интересно, как вы себе представляете работу одной шины сразу с двумя разными устройствами?? Испокон веков процессорная шина обращалась с помощью дешифратора адреса, или доп. выходы CS и т.п. И это нисколь не ограничивает использование нескольких устройств на шине, а если это не работает, то тут скорей вопрос к программисту...

Интерфейс DCMI умельцы используют для подключения внешнего АЦП. Вот я и подумал - а вдруг кто-то исхитрился и FSMC приспособить под свои нужды. Всем удачи!

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


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

39 minutes ago, mihlit1 said:

Полазил по форумам. Есть  другой путь решения проблемы - DMA memory to memory. . . . 

Я Вам это и рекомендовал выше. В старых микропроцессорных системах с внешней системной шиной (данные, адрес, управление) ставился отдельный видеоконтроллер, отдельная микросхема DMA, +видео-RAM, +система управления всем этим. Если хотите создать нечто подобное, то это сложно и бессмыслено. Все необходимое уже давно впихнуто в качестве периферии в чипы. То что не впихнуто - делают на ПЛИС.

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


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

Например, ILI9481 может принимать данные по параллельной шине с чатотой не более 12,5 МГц

image.thumb.png.705954b3ea92285244fae4daef80dc23.png


stm32f407 работает на частоте 168 МГц. Разница в больше чем в 10 раз. Так что даже с пересылкой данных через себя из внешнего ОЗУ в дисплей,

вполне справится, даже простои будут.

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


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

9 часов назад, k155la3 сказал:

Я Вам это и рекомендовал выше.

Я Вам благодарен за совет. Получилось по времени так, что я сначала написал про DMA, а потом появилось Ваше сообщение.

8 часов назад, dimka76 сказал:

stm32f407 работает на частоте 168 МГц.

Я его сейчас до 240 разогнал - все работает - и память , и дисплей, и АЦП.

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


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

On 3/3/2020 at 7:32 PM, mantech said:

Интересно, как вы себе представляете работу одной шины сразу с двумя разными устройствами??

Вообще, задачка интересная, если задаться целью размять мозги и хорошенько разобраться с работой контроллера памяти.

Сделать такой виртуальный банк, чтобы при чтении из него одновременно выполнялось чтение из SRAM и активизировалась запись в дисплей. Потребуется сколько-то мелкой логики, и, вероятно, какая-то матерь, чтобы реализовать необходимые задержки.

Работу с памятью и дисплеем по-отдельности (в обычном режиме) также необходимо поддерживать. В память необходимо писать, а в дисплее, как минимум, устанавливать конфигурацию.

 

При отсутствии цели развлечься поддерживаю стандартное решение с DMA. Соединил по инструкции, и готово.

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


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

15 часов назад, esaulenka сказал:

Вообще, задачка интересная, если задаться целью размять мозги и хорошенько разобраться

...то для этого случая лучше всего ПЛИС :biggrin:

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


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

47 minutes ago, mantech said:

...то для этого случая лучше всего ПЛИС :biggrin:

Cypress Psoc -  у них программируемая логика внутри есть.

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


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

Уважаемые форумчане! Не откажите в любезности просветить нуба по такому вопросу. Задача осталась прежней - дисплей + SRAM. У меня в наличии 2 дисплея 8- и 16- битный интерфейс. Напрямую (без SRAM) оба дисплея заливаются нормально. Когда заливаю дисплеи через SRAM, то в дисплее с 8-битным интерфейсом почему то портится мл. байт цвета, причем он уже в SRAM неверный. У меня вопрос может к FSMC нельзя подключать 16-битную память и 8-битный дисплей? RM0090 молчит по этому поводу (или я невнимательно смотрел). Просветите, пжлст.

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


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

30 minutes ago, mihlit1 said:

У меня вопрос может к FSMC нельзя подключать 16-битную память и 8-битный дисплей?

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

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

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


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

Я уже 2 дня тайминги от 0 до  мах перебирал, и памяти и дисплея - бестолку. Был бы второй 8 битный попробовал, а вдруг какая то бяка сидит в дисплее. А насчет разводки.. На борде разъем дисплея, к нему проводками сам дисплей присоединен. Но ведь если без памяти, а напрямую заливаю в дисплей то усе в порядке, 8 битный заливается за ~14ms, 16 битный около 8ms.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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