Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 2 stm32 на одну шину fmc
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
point5217
Всем привет.
Есть 2 stm32f7 fmc подключенные через 245 формирователи на одну шину, 245 открываются только при обращении к этой шине (скажем в 1м банке), когда обращаются по очереди проблем вроде не должно быть, а если сразу в момент обращения одной полезет другая ?
Возникла идея для этого использовать wait, если лезет первая - wait на вторую, (соответственно и на её 245е) и наоборот, если полезут сразу одновременно обе - можно сделать приоритет по первой.
Как отнесется fmc к такому сигналу wait ?
сколько можно по времени держать wait ?
скорость шины не более 5-7 мГц планируется
AlanDrakes
Судя по рабочим диаграммам в мануалах, сигнал WAIT принимается контроллером в расчёт уже ПОСЛЕ начала обращения к микросхеме памяти. Считается, что микросхема ВСЕГДА готова к обращению после завершения предыдущей операции.

По поводу же арбитража - лично я бы предложил использовать бит выбора чипа памяти в качестве сигнала арбитража шины.
К сожалению, ведомый контроллер сможет узнать о том, что шина недоступна только косвенно, например, дополнительно перечитав этот самый сигнал.
Никакого DMA в этом случае не будет и в помине. Обращение - только атомарное, с логикой контроля ошибки и отказа арбитража. Я бы предположил в этом случае использовать аппаратную логику типа триггера, указывающего, было ли обращение к микросхеме памяти от мастера во время обращения ведомого, или что-то похожее.

Либо попробовал поискать двухканальную память, умеющую работать на два устройства паралельно.
gerber
Вам надо сделать арбитраж между 2-мя мастерами на FMC, например, по аналогии с PCI шиной, проложить 2 провода между процессорами - REQ# и GNT#, один процессор ведущий - у него GNT# выход, а REQ# вход, у второго - наоборот. Ведущий может лезть на FMC, только если у него GNT# выход неактивен, ведомый должен выставить REQ# и дождаться GNT# от ведущего, после чего лезть на FMC.
point5217
Цитата(AlanDrakes @ Aug 25 2018, 18:32) *
Судя по рабочим диаграммам в мануалах, сигнал WAIT принимается контроллером в расчёт уже ПОСЛЕ начала обращения к микросхеме памяти. Считается, что микросхема ВСЕГДА готова к обращению после завершения предыдущей операции.

По диаграмам WAIT задерживает цикл шины, если он не анализируется в начале при выдаче адреса и управляющих - должно получится
Но сколько его можно держать активным ? в DS не нашел....

Цитата(AlanDrakes @ Aug 25 2018, 18:32) *
По поводу же арбитража - лично я бы предложил использовать бит выбора чипа памяти в качестве сигнала арбитража шины.
К сожалению, ведомый контроллер сможет узнать о том, что шина недоступна только косвенно, например, дополнительно перечитав этот самый сигнал.
Никакого DMA в этом случае не будет и в помине. Обращение - только атомарное, с логикой контроля ошибки и отказа арбитража. Я бы предположил в этом случае использовать аппаратную логику типа триггера, указывающего, было ли обращение к микросхеме памяти от мастера во время обращения ведомого, или что-то похожее.

Будет наверное использоваться сигнал выбора банка (например ncs1)
DMA как бы и не требуется, обьем данных не большой
Для чего логика отказа арбитража ? Если при обрашении шина занята другим - по wait ждем освобождения шины и получаем доступ, если конечно идея работы по wait будет работать

Цитата(AlanDrakes @ Aug 25 2018, 18:32) *
Либо попробовал поискать двухканальную память, умеющую работать на два устройства паралельно.

В основном там будет переферия типа hc573 и 16550
Про двух канальную память знаю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.