Чтение памяти FMC NAND с той же скоростью, что и запись. СТМ32Х7

При записи по адресу FMC NAND FMC_NCE становится низким в начале первой записи, а затем становится высоким только в конце последней записи. Я могу записать 0x1000 слов на частоте 10 МГц, используя тактовую частоту ядра FMC 60 МГц. Следовательно, при минимальном времени НАСТРОЙКИ, ОЖИДАНИЯ и УДЕРЖАНИЯ для записи слова требуется 6 тактов ядра.

При чтении FMC_NCE становится низким, а затем высоким с каждым прочитанным словом. Это увеличивает время чтения между каждым словом, требуя дополнительных тактов ядра FMC, что означает, что часы ядра работают с более высокой частотой. Более высокие часы ядра имеют дополнительный недостаток, заключающийся в непостоянстве количества тактовых циклов между операциями чтения. При тактовой частоте ядра FMC 160 МГц чтение иногда занимает 16, 15 или 17 тактов. Если я использую MDMA для чтения, то я могу читать несколько слов за раз без снижения значения FMC_NCE и использования минимум 6 тактов ядра, но это ограничено кешем MDMA и делает только небольшие всплески. Со временем мне нужно будет прочитать 10000 слов за один раз.

На самом деле я не использую чип памяти NAND, а использую FMC в качестве параллельного интерфейса, поэтому мне нужно быть последовательным, в частности, с частотой чтения.

НАПИСАТЬ код:

      for (index = 0U; index < BUFFER_SIZE; index++)
    {
     *(__IO uint16_t *)deviceAddress  = *buff;
      buff++;
    }

ЧИТАЕМЫЙ код:

      for (index = 0U; index < BUFFER_SIZE; index++)
    {
      *buff = *(__IO uint16_t *)(deviceAddress);
      buff++;
    }

Каким-то образом периферийное устройство знает, что запись выполняется за один раз, а чтение — нет?

Я установил MPU на TEX2 и включил i- и d-cache.

Буду очень признателен за любые идеи

0 ответов

Другие вопросы по тегам