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

STM32 FSMC Burst mode support

Не пойму, сколько данных можно пересылать в этой "вспышке". Сколько хочешь, или 4 полуслова - это предел?

Если много, то непонятно, как задается конец сигналов NE, NWE. Если всего ничего, так зачем такой режим нужен?

Хотел приспособить для передачи конфигурационного потока в Xilinx Spartan.

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


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

Ну вот, допустим, на странице 1571 RM на STM32F429:

Цитата

Single-burst transfer

When the selected bank is configured in burst mode for synchronous accesses, if for example an AHB single-burst transaction is requested on 16-bit memories, the FSMC performs a burst transaction of length 1 (if the AHB transfer is 16-bit), or length 2 (if the AHB transfer is 32-bit) and de-assert the chip select signal when the last data is strobed. Clearly, such a transfer is not the most efficient in terms of cycles (compared to an asynchronous read). Nevertheless, a random asynchronous access would first require to reprogram the memory access mode, which would altogether last longer.

 

Cross boundary page for Cellular RAM 1.5

Cellular RAM 1.5 does not allow burst access to cross the page boundary. The FSMC controller allows to split automatically the burst access when the memory page size is reached by configuring the CPSIZE bits in the FSMC_BCR1 register following the memory page size.

 

Burst-режим здесь подразумевает, что на 16-битной (например) памяти можно неразрывно обратиться к 32-битному слову на чтение/запись, и после транзакции второго полуслова контроллер установит сигнал CS в неактивное состояние.

Где Вы про 4 полуслова увидели?

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


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

Что следует из приведенной цитаты касательно моих вопросов? Я её вдоль и поперек изучил еще до того, как создал тему. 

4 полуслова видел на картинках в таком же RM, но на свой МК.

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


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

21 минуту назад, ViKo сказал:

Что следует из приведенной цитаты касательно моих вопросов? Я её вдоль и поперек изучил еще до того, как создал тему. 

4 полуслова видел на картинках в таком же RM, но на свой МК.

Значит 4 полуслова максимум можете записать в burst-транзакции. Вы спросили о поведении сигналов, в том числе CS. В приведенном абзаце явно указано, что CS будет дергаться после записи последнего полуслова из двух (при записи 32-битных данных в 16-битную память). Для 4 полуслов, думаю, память деактивируется также после записи последнего полуслова.

P.S. В конце концов, написать тестовый код и прицепиться логическим анализатором или осциллографом, да посмотреть, проблемно?

В чем Вы хотите получить выгоду Burst-а при транзакциях в ПЛИС?

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


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

А заголовок Single-burst transfer вас не смущает? Очевидно, возможна и не одиночная пересылка. 

Придет время, прицепимся, а пока ищем ответов у знатоков. 

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


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

Вот в памяти Winbond можно читать-писать много слов за раз.

W.jpg

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


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

Я чего не понимаю - что должно быть инициатором пересылки? Хочу передавать по DMA. А ну как не будет успевать автомат FSMC? Или опережать. Что там будет происходить, например, с CLK? 

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


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

Прикинул-раскинул, не буду с этим Burst экспериментировать, обойдусь обычными чтением-записью по шине. 

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


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

22 hours ago, ViKo said:

Если много, то непонятно, как задается конец сигналов NE, NWE.

Поведение сигналов хорошо показано в Datasheet - production data, начиная со страницы 142
Вот пример записи, про ограничение на размер транзакции ничего не сказано:
image.png.bf2573c1dafc9c97bcd88ee84c00f89b.png

То-есть при записи должна играть комбинация NWE, NBL и NWAIT сигналов

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


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

Ага, про datasheet я и не вспомнил. Посмотрел картинки. Про длину записи всё так же ничего не сказано.

Есть параметр:

Bits 18:16 CPSIZE[2:0]: CRAM page size.
These are used for CellularRAM™ 1.5 which does not allow burst access to cross the address 
boundaries between pages. When these bits are configured, the FSMC controller splits 
automatically the burst access when the memory page size is reached (refer to memory datasheet 
for page size).
000: No burst split when crossing page boundary (default after reset)
001: 128 bytes
010: 256 bytes
011: 512 bytes
100: 1024 bytes
Others: reserved

Из чего можно предположить, что размер пересылки не ограничен несколькими словами. Хотя, это не говорит однозначно. Может, просто на границе страницы 1 пересылка 2 слов разделяется на 2 по 1.

Сейчас другое напрягает. Как успеть так присунуть данные на запись в FSMC, чтобы не опоздать к окончанию FSMC_CLK и не перезаписать еще не отправленные. Такты на всех картинках стоят, как вкопанные, не затягиваются. Если данные задержать, так NE окончится. И вообще, по DMA хочу перекидывать, но не программным триггером, а аппаратным с QSPI. :heat:

Есть NWAIT, но FPGA его, понятное дело, не воспринимает. В общем, идея, похоже, не рабочая.

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


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

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

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

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

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

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

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

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

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

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