Поиск
Показаны результаты для тегов 'fsmc'.
-
Прошу помочь разобраться с работой FMC модуля МК STM32F407VE. Необходимо подключить внешнюю память ОЗУ; так как в данном МК шина адреса и данных объединена, для обращения к внешней памяти адрес необходимо демультипликсировать, для чего используется сигнал nADV (nL). Сигнал должен поступать на внешние защелки. Предполагается использовать ОЗУ типа IS61LV25616AL или аналогичную по структуре. Даташит на нее: https://datasheet.lcsc.com/lcsc/1809192221_ISSI-Integrated-Silicon-Solution-IS61LV25616AL-10TL_C16001.pdf Собственно, вопросы такие: 1) В Reference Manual (RM0090) для данного режима временные диаграммы приведены вроде как только для обращения к NOR FLASH. Можно предполагать, что в целом они будут такие же и для PSRAM (RM0090, см. стр. 1547). Однако, не очень понятно, по какому фронту следует защелкивать линию адреса. Предполагаю, что все же по нарастающему – именно за время между спадающим и нарастающим фронтом nADV (nL) сигнала – ADDSET – должны завершиться переходные процессы, а затем FMC модуль считает данные (для режима чтения). Верно ли это, и, соответственно, подойдет ли в качестве защелки микросхема 74HC574 (2 шт.). https://assets.nexperia.com/documents/data-sheet/74HC_HCT574.pdf Смущает, что она довольно медленная: время задержки между входом и выходом может составлять более 200 нсек при напряжении питания 2 В, и 45 нсек при питании 4,5 В. Хотя моя схема будет работать от питания 3,3 В, задержка все равно останется достаточно большой. Может, следует посмотреть что получше? 2) Поскольку шина данных 16-битная, обращение к данным размерностью в 32 бита будет разбито на две этапа (RM0090, см. стр. 1533). Интересует, какие это имеет последствия, кроме увеличения времени доступа к данным по сравнению с временем доступа к данным во внутренней памяти. Также, верно ли, что желательно не делать обращений к внешней памяти из прерываний, а в крайнем случае – использовать инструкцию __DSB()? 3) В мультиплексированном режиме, а также при побайтном обращении линия данных или ее часть находится небольшое время в высокоомном состоянии. Следует ли на всякий случай применять подтяжки к земле/питанию?
-
Добрый день. Сделали небольшую плату на базе видеоконтроллера EPSON S1D13746, управление и посылка данных идёт в параллельном 8-битном режиме, в качестве хоста отладочная плата STM32F4-discovery и её FSMC. Микросхема инитится нормально, марка чипа, его ревизия и конфигурация считываются верно (через внутренние регистры S1D13746 [00h], [02h]). Видеорежим также устанавливается корректно - размер входного буфера 400x240, формат RGB 3:3:2, TV композит, выходной буфер 400x240, смещения по X,Y: =0. Проблемы возникают при записи в видеопамять. Часть данных почему-то пропускаются, из-за этого вертикальные полосы перекручиваются. Если циклически перезаписывать, то полосы будут плыть. А должны быть ровные вертикальные полосы. Пытался играться с параметрами FSMC, вставлять задержки, уменьшать тактовую частоту STM32 - не помогает (улучшения были, но идеально ровных полос добиться не удалось). Подозреваю что : 1) неверно выставлены тайминги FSMC 2) шумные линии портов STM32 3) недопустимо малый Data Hold (данные должны писаться по нарастанию (фронту) строба записи WR) 4) данные должны записываться в микросхему бурстами - с опущенным CS, а я подозреваю что CS в STM32 дёргается каждую запись байта 5) звон в линиях шины. Плата видеоконтроллера соединена к STM32 длинным проводом. Если нужны резисторы 33-47 Ом, то где? возле STM или S1D13746 ? Ранее игрался с многими LCD, также подлключал - проблем с бОльшим числом LCD не было. Как побороть ? Код инита GPIO и FSMC: Код инита видеоконтроллера S1D13746: